zsh에서 Ctrl + w를 삭제 단어로 구성하는 방법


12

나는하여 단어를 삭제하려면 Ctrl+ Wzsh있다.

vim /foo/bar^W
vim /foo/

에 대한 해결책을 찾았 bash지만 bindzsh 함수에는 없습니다.

ctrl-w (단어 삭제)를 구성 할 수 있습니까?

Ctrl+ W를 어떻게 구성 할 수 delete-word있습니까?


답변:


15

다음은 .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


감사! 이 코드를 넣고 ~/.zshrc완벽하게 작동합니다!
ironsand

emacsZLE 의 기본 키 바인딩 테이블은 ^ W backward-kill-word대신 에 ^ W를 바인딩합니다 backward-delete-word.
JdeBP

10

다만 당신의 정보를,이 솔루션을 찾을 여기가 훨씬 더 우아 할 수 있습니다. 나는 인용한다 :

다른 옵션은 WORDCHARS단어의 일부로 취급되는 영숫자가 아닌 문자를 포함하지 않는 것으로 설정하는 것입니다 /.

^w점, 밑줄 등을 나누고 싶다면 이것을 조정할 수도 ~/.zshrc있습니다.

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

업데이트 (2/3/2020)

@Patryk이 아래 주석에서 지적했듯이 이것은 작동하지 않습니다 ZSH >= 5.7. 테스트하고 작업 한 업데이트는 다음과 같습니다 zsh 5.8 (x86_64-apple-darwin18.7.0).

autoload -U select-word-style
select-word-style bash

export WORDCHARS='.-'

이것은 M-d덜 유용합니다.
Toothrot

1
이것은 더 이상 작동하지 않습니다 zsh 5.7 (x86_64-apple-darwin18.2.0).
Patryk

@Patryk 감사합니다! 내 답변을 업데이트했습니다!
Anastasios Andronidis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.