Как настроить Ctrl + W как удалить слово в Zsh

12

Я хочу удалить слово с помощью Ctrl+ Wв, zshкак.

vim /foo/bar^W
vim /foo/

И нашел решение для bash, но bindне в функции zsh.

Можно ли настроить ctrl-w (удалить слово)?

Как я могу настроить Ctrl+ Wкак delete-word?

Ironsand
источник

Ответы:

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и он отлично работает!
Айронсанд
Примечание. emacsТаблица связывания ключей по умолчанию в ZLE связывает ^ W с, backward-kill-wordа не с backward-delete-word, note.
JdeBP
10

Просто для вашего сведения, я нашел это решение здесь гораздо более элегантным. Я цитирую:

Другой вариант - установить WORDCHARS(не алфавитно-цифровые символы, которые рассматриваются как часть слова) на то, что не включает /.

Вы также можете настроить это, если вы хотите ^wразбить на точку, подчеркнуть и т. Д. У ~/.zshrcменя есть:

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

ОБНОВЛЕНИЕ (2 / Март / 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менее полезным.
Зубной щенок
1
Это как-то больше не работает zsh 5.7 (x86_64-apple-darwin18.2.0).
Патрик
@Patryk Спасибо, что заметили! Я обновил свой ответ!
Анастасиос Андронидис