Natürlich können Sie Ctrl+ nicht mehr verwenden R. Wenn Sie das Z Shell-Handbuch lesen, werden Sie feststellen, dass history-incremental-search-backward
die emacs
Keymap nur eine Tastenkombination für das Widget enthält. In den vi-Keymaps sind keine Tastenkombinationen dafür vorhanden.
Wie Sie auch beim Lesen des Handbuchs (Kapitel 18) feststellen werden, ist das Hinzufügen einer Tastenkombination eine recht einfache Übung bei der Verwendung des bindkey
Befehls:
bindkey "^R" history-incremental-search-backward
Sie müssen den zle
Befehl nicht einmal verwenden , um das Widget einer Shell-Funktion zuzuordnen, da dies ein Standard-Widget ist.
Wenn Sie die Antwort auf dieselbe Frage konsultieren, die sich im Z Shell-Wiki befindet , werden die Befehle zum spezifischen Hinzufügen dieser zu den vi-Tastenkombinationen "Befehl" und "Einfügemodus" angezeigt:
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
Beachten Sie auch, dass, wie Garyjohn betont, das /Zeichen in der vi "Befehl" -Schlüsselkarte an das vi-history-search-backward
Widget gebunden ist . Der Unterschied zwischen diesem Widget und dem history-incremental-search-backward
Widget besteht im Widget-Verhalten, das angewendet wird, sobald sich eines im Verlaufssuchmodus befindet. Hier sind einige der Unterschiede, die Sie feststellen werden:
- Umschalten der vi-Modi:
- Der Suchmodus wechselt
history-incremental-search-backward
zwischen main
und und vicmd
Keymaps, wenn Sie das vi-cmd-mode
Widget aufrufen, während Sie sich noch im Suchmodus befinden. dh von emacs
Modus presssing die EscTaste oder Ctrl+ XCtrl+ VTasten schaltet den Suchmodus zwischen dem emacs
und vicmd
keymaps. (Das Aufrufen history-incremental-search-backward
über die vicmd
Keymap ist daher mühsam, es sei denn, Sie binden auch etwas an vi-cmd-mode
die vicmd
Keymap.)
- Der Suchmodus in
vi-history-search-backward
behandelt das vi-cmd-mode
Widget als accept-line
und beendet die Suche, wobei der Befehlsmodus, von dem aus Sie die Suche aufgerufen haben, erneut aufgerufen wird. dh (mit den Standardbindungen) wechselt /vom Befehlsmodus in den Suchmodus und Esckehrt in den Befehlsmodus zurück.
- Suche wiederholen:
- In
history-incremental-search-backward
werden sowohl das history-incremental-search-backward
als auch das vi-rev-repeat-search
Widget erkannt. dh (vorausgesetzt, Sie haben die Bindungen wie oben geändert) beide Ctrl+ Rund Nsuchen nach einer vorhergehenden übereinstimmenden Zeile.
- In
vi-history-search-backward
wird nur das vi-rev-repeat-search
Widget erkannt. dh (vorausgesetzt, Sie haben die Bindungen wie oben geändert) Ctrl+ Rgibt einen Piepton aus und wird ignoriert.
garyjohn
zeigt eine Vim-Methode undJdeBP
zeigt, wie die Tastenkombination für Strg + R wiederhergestellt wird! Ich werde mit beiden Methoden spielen und später eine Antwort akzeptieren. Ich werde entscheiden, basierend auf 1) welche Methode mir einfacher erscheint und 2) welche mehr positive Stimmen bekommt. Danke euch beiden!