привязать последовательность клавиш к Escape, zsh

11

Как бы я карту , jjчтобы Escв Zsh?

Я пытаюсь воссоздать сопоставление клавиш, которое я настроил в vim, где я jjсопоставил его ESCтак, чтобы при каждом двойном нажатии jон отправлял an <Esc>в vim - позволяя мне войти в обычный режим с большим удобством.

Я уже пробовал bindkey 'jj' ^[, и я собираюсь попробовать bindkey 'jj' ^[[, но я сомневаюсь, что это сработает. Я также проверил список команд, предоставляемых zsh в обычном режиме, но я не увидел ничего, что содержало normalили escape.

ПРИМЕЧАНИЕ
. ^[Символы в моем ~/.zshrcфайле - это действительно жестко закодированные экранированные символы ; не только персонажи ^а [.

Алексей Магура
источник

Ответы:

12

Вам нужно -sсвязать реальные строки вместо виджетов:

bindkey -s jj '\e'

Хотя вы , вероятно , хотите отобразить jjв vi-cmd-modeвиджете здесь:

bindkey jj vi-cmd-mode

(обратите внимание, что это для связывания в режиме вставки, а не в нормальном / командном режиме)

Стефан Шазелас
источник
1
второй работает как шарм, спасибо!
Алексей Магура
2
ПРИМЕЧАНИЕ: настройка, KEYTIMEOUTкажется, нарушает привязку клавиш.
Алексей Магура
@AlexejMagura просто добавлю: слишком низкое значение KEYTIMEOUT не позволяет zle распознавать двойное нажатие.
UltraMaster