lier la séquence de touches à Escape, zsh

11

Comment puis-je la carte jjà Escen zsh?

J'essaie de recréer un mappage de touches que j'ai configuré dans vim, où j'ai jjmappé pour ESCque chaque fois que j'appuie deux fois j, il envoie l'an <Esc>à vim - me permettant d'entrer en mode normal avec plus de commodité.

J'ai déjà essayé bindkey 'jj' ^[et je suis sur le point d'essayer bindkey 'jj' ^[[, mais je doute que cela fonctionne. J'ai également vérifié la liste des commandes fournies par zsh en mode normal, mais je n'ai rien vu qui contenait normalou escape.

REMARQUE
Les ^[caractères de mon ~/.zshrcfichier sont de véritables échappements codés en dur; pas seulement les personnages ^et [.

Alexej Magura
la source

Réponses:

12

Vous devez -slier des chaînes réelles au lieu de widgets:

bindkey -s jj '\e'

Bien que vous souhaitiez probablement mapper jjle vi-cmd-modewidget ici:

bindkey jj vi-cmd-mode

(notez que c'est pour la liaison en mode insertion, pas en mode normal / commande)

Stéphane Chazelas
la source
1
le second fonctionne comme un charme, merci!
Alexej Magura
2
Le paramètre REMARQUEKEYTIMEOUT semble rompre le raccourci clavier.
Alexej Magura
@AlexejMagura vient d'ajouter: un réglage KEYTIMEOUT trop bas interdit à zle de reconnaître le double appui.
UltraMaster