Jak skonfigurować Ctrl + W jako usunięcie słowa w Zsh

Odpowiedzi:

15

Oto fragment kodu .zshrc, którego używałem :

my-backward-delete-word() {
    local WORDCHARS=${WORDCHARS/\//}
    zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '^W' my-backward-delete-word

Pamiętam, że to było oryginalne źródło: http://www.zsh.org/mla/users/2001/msg00870.html

Joe
źródło
Dzięki! Wstawiłem ten kod ~/.zshrci działa idealnie!
ironsand
Domyślna emacstabela powiązań klawiszy w ZLE wiąże ^ W z, backward-kill-worda nie z backward-delete-word, Uwaga.
JdeBP,
10

Dla twojej informacji znalazłem tutaj to rozwiązanie , które jest o wiele bardziej eleganckie. Cytuję:

Inną opcją jest ustawienie WORDCHARS(znaki niealfanumeryczne traktowane jako część słowa) na coś, co nie obejmuje /.

Możesz również dostosować to, jeśli wolisz ^włamać kropki, podkreślenia itp. W ~/.zshrcMam:

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

AKTUALIZACJA (2 / Mar / 2020)

Jak zauważył @Patryk w komentarzach poniżej, to nie działa ZSH >= 5.7. Oto aktualizacja, którą przetestowałem i nad którą pracuję zsh 5.8 (x86_64-apple-darwin18.7.0).

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

export WORDCHARS='.-'
Anastasios Andronidis
źródło
To czyni M-dmniej przydatnym.
Toothrot
1
To jakoś już nie działa zsh 5.7 (x86_64-apple-darwin18.2.0).
Patryk
@Patryk Dzięki za zauważenie! Zaktualizowałem swoją odpowiedź!
Anastasios Andronidis