ligar a sequência de teclas a Escape, zsh

11

Como eu poderia mapear jjpara Escno zsh?

Estou tentando recriar um mapeamento de teclas que configurei no vim, onde jjmapeei para ESCque, sempre que pressionasse duas vezes j, ele enviasse um an <Esc>ao vim - permitindo que eu entre no modo normal com maior conveniência.

Eu já tentei bindkey 'jj' ^[e estou prestes a tentar bindkey 'jj' ^[[, mas duvido que funcione. Também verifiquei a lista de comandos fornecidos pelo zsh no modo normal, mas não vi nada que contivesse normalou escape.

OBSERVAÇÃO
Os ^[caracteres no meu ~/.zshrcarquivo são escapes codificados reais; não apenas os personagens ^e [.

Alexej Magura
fonte

Respostas:

12

Você precisa -svincular cadeias de caracteres reais em vez de widgets:

bindkey -s jj '\e'

Embora você provavelmente queira mapear jjpara o vi-cmd-modewidget aqui:

bindkey jj vi-cmd-mode

(note que é para encadernação no modo de inserção, não normal / modo de comando)

Stéphane Chazelas
fonte
1
o segundo funciona como um encanto, obrigado!
Alex11 Magura
2
OBSERVAÇÃO A configuração KEYTIMEOUTparece interromper a ligação das teclas.
Alexej Magura
@AlexejMagura acabou de adicionar: definir KEYTIMEOUT muito baixo proíbe o zle de reconhecer o pressionamento duplo.
UltraMaster 25/08