Schlüsselfolge an Escape binden, zsh

11

Wie würde ich Karte jjzu Escin zsh?

Ich versuche, eine Tastenbelegung neu zu erstellen, die ich in vim eingerichtet habe, wo ich sie jjzugeordnet habe, ESCdamit sie bei zweimaligem Drücken jdas an <Esc>an vim sendet , sodass ich bequemer in den normalen Modus wechseln kann.

Ich habe es bereits versucht bindkey 'jj' ^[und werde es gleich versuchen bindkey 'jj' ^[[, aber ich bezweifle, dass es funktionieren wird. Ich habe auch die Liste der von zsh im normalen Modus bereitgestellten Befehle überprüft, aber ich habe nichts gesehen, was normaloder enthielt escape.

HINWEIS
Die ^[Zeichen in meiner ~/.zshrcDatei sind tatsächlich fest codierte Escapezeichen. nicht nur die Charaktere ^und [.

Alexej Magura
quelle

Antworten:

12

Sie müssen -statsächliche Zeichenfolgen anstelle von Widgets binden:

bindkey -s jj '\e'

Obwohl Sie hier wahrscheinlich jjdem vi-cmd-modeWidget zuordnen möchten :

bindkey jj vi-cmd-mode

(Hinweis zum Binden im Einfügemodus, nicht im Normal- / Befehlsmodus)

Stéphane Chazelas
quelle
1
der zweite wirkt wie ein Zauber, danke!
Alexej Magura
2
HINWEIS Einstellung KEYTIMEOUTscheint die Schlüsselbindung zu brechen.
Alexej Magura
@AlexejMagura fügt nur hinzu: Wenn Sie KEYTIMEOUT zu niedrig einstellen, kann zle kein doppeltes Drücken erkennen.
UltraMaster