Прив’язка Fn-Delete в zsh на Mac OS X


22

У zsh, коли я натискаю Fn + Delete (що видаляє вперед), вставляється tilde (~). Це вказує, що zsh не пов'язаний з ключем.

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

Відповіді:


20

Спочатку з’ясуйте, яку послідовність вона генерує.

echo "CtrlVFnDelete" | od -c

Потім зв’яжіть цю послідовність, використовуючи звичайний механізм зв'язування zsh.


1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Що мені робити з цією інформацією зараз?
Thomas R

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

2
Для уточнення вищесказаного ctrl-vє спеціальна послідовність евакуації, яка означає "вставити наступний символ, який я натискаю як буквальний символ без нагляду, замість того, щоб робити все, що зазвичай робить". Це означає, що він не перетворюється в ~, а залишається як послідовність втечі.
NHDaly

Я не розумію, як використовувати вихідне вище, щоб отримати прив'язку. Мій вихід - 0000000 C t r l V F n D e l e t e \n 0000016.
Олівер Джозеф Еш,

4

Для мене вищезгадане не зробило жодної хитрості, тому я додав до моїх наступних ключів ~/.zshrc:

bindkey "\e[3~" delete-char

FYI: Я на Mac (Висока Сьєрра).


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

1
Ви можете набрати, catа потім набрати клавіші. Fn+F1дає мені, ^[OPнаприклад.
LordTribual

1

bindkey 'CtrlvFnDelete' delete-char

Це прив’яже Fn+, Deleteщоб видалити вперед один символ. Якщо вищезгадане не зрозуміло, вам потрібно набрати Ctrl+ v, Fn+ Deleteміж введенням лапок. Ctrl+ vдозволяє вводити послідовну послідовність втечі будь-якого ключа після нього.

Ви можете помістити цей рядок у свій ~/.zshrcфайл.

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