zsh im vi-Modus, aber Pfeiltasten für den Verlauf verwenden

316
Kris

Wenn der vi-Modus für zsh ( bindkey -v) aktiviert ist, können Sie den Verlauf trotzdem im regulären Modus durchsuchen, dh, indem Sie einige Buchstaben eingeben und die Pfeiltasten auf / ab drücken.

Ich finde das viel schneller als das Drücken der Escape-Taste. Dann ?tippe ich ein paar Buchstaben ein, drücke die Eingabetaste und verwende dann, num über die Übereinstimmungen zu scrollen.

Es scheint auch, dass die Suche im vi-Modus an einer beliebigen Stelle im Befehl übereinstimmt. Ich möchte nur den Start des Befehls anpassen, wie dies bei der normalen Suche mit den Pfeiltasten der Fall ist.

1

1 Antwort auf die Frage

0
wjv

Beachten Sie, dass Sie hier verschiedene Suchmethoden diskutieren:

Bei der Suche nach "the vi way" mit /oder ?werden alle in der Historie gespeicherten Befehle durchsucht.

Die Aufwärts- und Abwärtspfeiltasten haben etwas anderes: Sie möchten, dass sie Elemente durchlaufen, die in der Historie gespeichert sind, die (zu Beginn) dem entsprechen, was Sie bereits in der Befehlszeile eingegeben haben.

Ohne zu sehr ins Detail zu gehen, sollte Folgendes ein ziemlich narrensicherer Weg sein, um dies zu erreichen:

autoload -Uz history-search-end  zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end  bindkey -M vicmd '^[[A' history-beginning-search-backward-end \ '^[OA' history-beginning-search-backward-end \ '^[[B' history-beginning-search-forward-end \ '^[OB' history-beginning-search-forward-end bindkey -M viins '^[[A' history-beginning-search-backward-end \ '^[OA' history-beginning-search-backward-end \ '^[[B' history-beginning-search-forward-end \ '^[OB' history-beginning-search-forward-end