Как настроить зш так, чтобы Ctrl+ Backspaceубивал слово перед точкой? Как этого добиться Ctrl+ Deleteубивает слово за пунктом?
Я использую urxvt в качестве эмулятора терминала.
Как настроить зш так, чтобы Ctrl+ Backspaceубивал слово перед точкой? Как этого добиться Ctrl+ Deleteубивает слово за пунктом?
Я использую urxvt в качестве эмулятора терминала.
Ответы:
Сначала я сосредоточусь на Ctrl+ Delete.
Вызывается команда zsh для удаления целого слова вперед kill-word
. По умолчанию это связано с Alt+ D.
Как сделать Ctrl+ Deleteсделать это тоже зависит от того, какой эмулятор терминала вы используете.
В моей системе это работает в xterm и Gnome Terminal:
bindkey -M emacs '^[[3;5~' kill-word
и для urxvt вы должны сделать:
bindkey -M emacs '^[[3^' kill-word
Если это не сработает, попробуйте набрать Ctrl+ V Ctrl+, Deleteчтобы увидеть значение в вашей системе.
Вы даже можете добавить оба из них вместе .zshrc
или использовать вывод tput kDC5
вместо жесткого кодирования последовательности.
Ctrl+ Backspaceкажется сложнее.
В моей системе нажатие - это то же самое, что нажатие только Backspace.
Если у вас то же самое, я думаю, что лучше всего использовать вместо него Alt+ Backspaceили Ctrl+ W.
Ctrl + Backspace
не работает
^[[3^
для urxvt. Ctrl+V
Ctrl+Delete
покажу тебе это.
'^[[3^' kill-word bindkey
и '^H' backward-kill-word
мой .zshrc. Теперь это работает!
^H
или не ^?
буду работать Ctrl+Backspace
. На самом деле кажется, что такое связывание невозможно. Alt+Backspace
или Ctrl+W
может быть адекватной заменой.
У меня есть это в моем .Xresources
:
URxvt.keysym.C-BackSpace: \033[33~
и что в моем .zshrc
:
bindkey -M main -M viins -M vicmd '^[[33~' backward-kill-word
Это убивает каждое разделенное пробелами слово. Обратите внимание, что '^ [' является символом Escape. Вы должны xrdb -load .Xresources
открыть терминал и затем нажать, ^V
а затем ^BackSpace
.