like 에서 +를 사용하여 Ctrl단어를 삭제 하고 싶습니다.Wzsh
vim /foo/bar^W
vim /foo/
해결책을 찾았 bash
지만 bind
zsh 기능에서는 찾을 수 없습니다.
Ctrl+ W를 로 구성하는 방법은 무엇입니까 delete-word
?
답변1
이것은 의 일부입니다..zshrc나는 다음을 사용해왔다:
my-backward-delete-word() {
local WORDCHARS=${WORDCHARS/\//}
zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '^W' my-backward-delete-word
원본 출처는 이랬던 것으로 기억합니다. http://www.zsh.org/mla/users/2001/msg00870.html
답변2
참고로 이 솔루션을 찾았습니다.여기더욱 우아해집니다. 나는 인용한다:
WORDCHARS
또 다른 옵션은 (영숫자가 아닌 문자는 단어의 일부로 간주됨)을 포함하지 않도록 설정하는 것 입니다/
.
^w
점, 밑줄 등을 분리 하려는 경우에도 이 설정을 조정할 수 있습니다. 나는~/.zshrc
다음을 가지고 있습니다 :WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
업데이트됨 (2020년 3월 2일)
@Patryk이 아래 의견에서 지적했듯이 이것은 작동하지 않습니다 ZSH >= 5.7
. 이것은 제가 테스트하고 작업 중인 업데이트입니다 zsh 5.8 (x86_64-apple-darwin18.7.0)
.
autoload -U select-word-style
select-word-style bash
export WORDCHARS='.-'
답변3
지금까지 bash의 모든 속성을 제공하는 답변은 없습니다. 지금 바로:
- CTRL-w는 공백이 아닌 문자를 모두 제거합니다.
- CTRL-w는 텍스트를 종료 루프에 넣습니다(그래서 나중에 CTRL-y로 붙여넣을 수 있습니다).
- CTRL-w추가후속 종료 명령(CTRL-w, alt-backspace, alt-d 등)에서 루프를 종료하기 위한 텍스트입니다.
또한 다른 기능에 영향을 미치므로 WORDCHARS를 전역적으로 설정하고 싶지 않습니다.
위의 모든 사항을 충족하는 솔루션은 다음과 같습니다.
# Ctrl-w - delete a full WORD (including colon, dot, comma, quotes...)
my-backward-kill-word () {
# Add colon, comma, single/double quotes to word chars
local WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>:,"'"'"
zle -f kill # Append to the kill ring on subsequent kills.
zle backward-kill-word
}
zle -N my-backward-kill-word
bindkey '^w' my-backward-kill-word