
Nehmen wir an, ich möchte eine Bindung Rim redo
Vicmd-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 redo
mit definieren
bindkey -a rr redo
Sie haben zwei mögliche Aktionen, die Zsh ausführen kann, wenn Rgedrückt wird
- interpretieren als den Befehl
vi-replace-chars
oder - warten Sie auf ein zweites Zeichen und interpretieren Sie dann den Befehl
redo
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-chars
mit
bindkey -a re vi-replace-chars