powiąż sekwencję klawiszy z Escape, zsh

11

Jak bym na mapie jj, aby Escw zsh?

Próbuję odtworzyć mapowanie klawiszy, które skonfigurowałem w vimie, do którego jjmapowałem, aby ESCza każdym razem, gdy dwukrotne naciśnięcie j, wysyłało an <Esc>to vim - pozwalając mi wejść w tryb normalny z większą wygodą.

Już próbowałem bindkey 'jj' ^[i zamierzam spróbować bindkey 'jj' ^[[, ale wątpię, czy to zadziała. Sprawdziłem również listę poleceń dostarczonych przez zsh w trybie normalnym, ale nie widziałem nic, co zawierało normallub escape.

UWAGA
Te ^[znaki w moim ~/.zshrcpliku są rzeczywiste zakodowanego ucieka; nie tylko postacie ^i [.

Alexej Magura
źródło

Odpowiedzi:

12

Musisz -spowiązać rzeczywiste ciągi zamiast widżetów:

bindkey -s jj '\e'

Choć prawdopodobnie chcesz mapować jjdo vi-cmd-modewidget tutaj:

bindkey jj vi-cmd-mode

(uwaga dotyczy wiązania w trybie wstawiania, a nie w trybie normalnym / poleceń)

Stéphane Chazelas
źródło
1
drugi działa jak urok, dzięki!
Alexej Magura
2
UWAGA ustawienie KEYTIMEOUTwydaje się przerywać wiązanie klawiszy.
Alexej Magura
@AlexejMagura właśnie dodaje: ustawienie zbyt niskiego parametru KEYTIMEOUT uniemożliwia zle rozpoznawanie podwójnego naciśnięcia.
UltraMaster,