Як налаштувати Ctrl + w як видалити слово в zsh


12

Я хочу видалити слово на Ctrl+ Wу zshподібному вигляді.

vim /foo/bar^W
vim /foo/

І знайшов рішення для bash, але bindне в функції zsh.

Чи можна налаштувати ctrl-w (видалити слово)?

Як я можу налаштувати Ctrl+ Wяк a 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

Таблиця emacsприв'язки ключів за замовчуванням у ZLE пов'язує ^ W, backward-kill-wordа не для backward-delete-word, примітки.
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

@Patryk Дякую за те, що помітили! Я оновив свою відповідь!
Анастасій Андронідіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.