Wie bindet man eine Tastenfolge an ein Widget im vi-cmd-Modus zsh?

Wie bindet man eine Tastenfolge an ein Widget im vi-cmd-Modus zsh?

Nehmen wir an, ich möchte eine Bindung Rim redoVicmd-Modus durchführen.

Das funktioniert.

bindkey -a r redo

Wenn ich es hierher ändere, funktioniert es nicht.

bindkey -a rr redo

Ich habe verschiedene Dinge ohne Erfolg ausprobiert. Ist das nicht möglich? Ich weiß, dass es möglich sein sollte, im Emacs-Modus Sequenzen an Tasten zu binden, aber kann man das Gleiche mit Buchstaben im VI-Modus machen?

Antwort1

Im Standardmodus Rist vicmd bereits an gebunden vi-replace-chars.

Wenn Sie also R+ Rto redomit definieren

bindkey -a rr redo

Sie haben zwei mögliche Aktionen, die Zsh ausführen kann, wenn Rgedrückt wird

  1. interpretieren als den Befehl vi-replace-charsoder
  2. warten Sie auf ein zweites Zeichen und interpretieren Sie dann den Befehlredo

Der Algorithmus zum Zuordnen von Tastaturbefehlen in Zsh bevorzugt kurze Befehle und verwendet daher immer die 1. Aktion.

Um Zsh davon abzuhalten, müssen Sie zuerst die Bindung für Rmit entfernen

bindkey -a -r r

und fügen Sie dann Ihre neue Option hinzu mit

bindkey -a rr redo

Sie können dann auch hinzufügen vi-replace-charsmit

bindkey -a re vi-replace-chars

verwandte Informationen