В zsh, когда я нажимаю Fn + Delete (удаление вперед), вставляется тильда (~). Это указывает на то, что у zsh нет привязанного ключа.
Как мне связать его и заставить его вести себя нормально (удалить перед курсором)?
Сначала выясните, какую последовательность он генерирует.
echo "
CtrlVFnDelete" | od -c
Затем свяжите эту последовательность, используя обычный механизм связывания zsh.
echo "~"
, вы должны фактически следовать указаниям, которые дал вам Игнасио . В моей системе это^[[3~
(или какod
выходы:)033 [ 3 ~
. Так что команда будетbindkey "^[[3~" delete-char
в вашем~/.zshrc
.ctrl-v
есть специальная escape-последовательность, которая означает «вставить следующий символ, который я нажимаю, как буквальный неэкранированный символ, вместо того, чтобы делать то, что обычно делает». Это означает, что он не конвертируется~
, а остается в качестве escape-последовательности.0000000 C t r l V F n D e l e t e \n 0000016
.Для меня вышеупомянутое не сработало, поэтому я добавил следующую привязку ключа к своему
~/.zshrc
:bindkey "\e[3~" delete-char
К вашему сведению: я на Mac (High Sierra).
источник
~/.zshrc
.cat
а затем набрать ключи.Fn+F1
дает мне,^[OP
например.bindkey '
CtrlvFnDelete' delete-char
Это будет связывать Fn+ Deleteдля удаления вперед одного символа. Если вышеупомянутое не ясно, вам нужно вводить Ctrl+ v, Fn+ Deleteмежду вводом кавычек. Ctrl+ vпозволяет вам вводить буквально escape-escape-последовательность любого ключа после него.
Вы можете поместить эту строку в свой
~/.zshrc
файл.источник