Связывание Fn-Delete в zsh на Mac OS X


22

В zsh, когда я нажимаю Fn + Delete (удаление вперед), вставляется тильда (~). Это указывает на то, что у zsh нет привязанного ключа.

Как мне связать его и заставить его вести себя нормально (удалить перед курсором)?

Ответы:


20

Сначала выясните, какую последовательность он генерирует.

echo "CtrlVFnDelete" | od -c

Затем свяжите эту последовательность, используя обычный механизм связывания zsh.


1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Что мне теперь делать с этой информацией?
Томас Р

10
@rixth: На самом деле это не только тильда. Вы не можете использовать echo "~", вы должны фактически следовать указаниям, которые дал вам Игнасио . В моей системе это ^[[3~(или как odвыходы:) 033 [ 3 ~. Так что команда будет bindkey "^[[3~" delete-charв вашем ~/.zshrc.
Приостановлено до дальнейшего уведомления.

2
Чтобы прояснить вышесказанное, ctrl-vесть специальная escape-последовательность, которая означает «вставить следующий символ, который я нажимаю, как буквальный неэкранированный символ, вместо того, чтобы делать то, что обычно делает». Это означает, что он не конвертируется ~, а остается в качестве escape-последовательности.
NHDaly

Я не понимаю, как использовать вывод выше для получения bindkey. Мой выход 0000000 C t r l V F n D e l e t e \n 0000016.
Оливер Джозеф Аш

4

Для меня вышеупомянутое не сработало, поэтому я добавил следующую привязку ключа к своему ~/.zshrc:

bindkey "\e[3~" delete-char

К вашему сведению: я на Mac (High Sierra).


А как узнать код для любой другой клавиши, которую я хочу связать, например, Fn + F1? так что я могу установить соответствующие коды в моем ~/.zshrc.
alexventuraio

1
Вы можете напечатать, catа затем набрать ключи. Fn+F1дает мне, ^[OPнапример.
LordTribual

1

bindkey 'CtrlvFnDelete' delete-char

Это будет связывать Fn+ Deleteдля удаления вперед одного символа. Если вышеупомянутое не ясно, вам нужно вводить Ctrl+ v, Fn+ Deleteмежду вводом кавычек. Ctrl+ vпозволяет вам вводить буквально escape-escape-последовательность любого ключа после него.

Вы можете поместить эту строку в свой ~/.zshrcфайл.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.