Я хочу видалити слово на Ctrl+ Wу zsh
подібному вигляді.
vim /foo/bar^W
vim /foo/
І знайшов рішення для bash
, але bind
не в функції zsh.
Чи можна налаштувати ctrl-w (видалити слово)?
Як я можу налаштувати Ctrl+ Wяк a delete-word
?
Я хочу видалити слово на Ctrl+ Wу zsh
подібному вигляді.
vim /foo/bar^W
vim /foo/
І знайшов рішення для bash
, але bind
не в функції zsh.
Чи можна налаштувати ctrl-w (видалити слово)?
Як я можу налаштувати Ctrl+ Wяк a delete-word
?
Відповіді:
Ось фрагмент від .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
, примітки.
Тільки для вашої інформації я знайшов це рішення тут набагато витонченішим. Цитую:
Інший варіант - встановити
WORDCHARS
(не алфавітно-цифрові символи, які трактуються як частина слова) на те, що не включає/
.Ви також можете налаштувати це, якщо ви хочете
^w
зламати крапки, підкреслення тощо. У~/.zshrc
мене є:WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'
Як @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
менш корисним.
zsh 5.7 (x86_64-apple-darwin18.2.0)
.