Я хочу видалити слово на 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).