Durchlaufen Sie Übereinstimmungen in der ZSH-Verlaufs-Inkremental-Pattern-Suche rückwärts

10

Ich habe kürzlich die Verlaufssuche auf "Verwendung" umgestellt, history-incremental-pattern-search-backwardda sie Muster in der Suche zulässt. Hier ist, wie es in meinem eingerichtet ist.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Das funktioniert gut, aber ich kann im Suchmenü nicht herausfinden, wie ich zum nächsten Spiel komme.

% cat foobarbaz.txt
bck-i-search: f*baz

Gibt es dafür einen Schlüssel?

Claytron
quelle

Antworten:

12

Endlich die richtige Beschwörung gefunden. Sie müssen die Mustersuche im Einfügemodus zuordnen. Dies war das Stück, das mir fehlte:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

Ich hätte ^Bfür die Rückwärtssuche im Einfügemodus verwendet, aber ich habe das auf etwas anderes abgebildet. Also jetzt ^Rund ^Fradle durch die Streichhölzer.

Claytron
quelle
Was macht der -MBefehl? In meinem Fall -Mfunktioniert dies auch ohne das Schlüsselwort hervorragend.
alpha_989
Der -M keymapsagt bindkey, auf welche Keymap die Bindung angewendet werden soll. Ich habe es sowohl für den Einfügemodus als auch für den Befehlsmodus eingerichtet.
Claytron
Danke für die Klarstellung. In meinem Fall habe ich nur bindkey '^R' history-incremental-pattern-search-backwardund es funktioniert. Ich verwende auch den Standardbefehl /in vi normal model in zsh. Darin kann ich den Befehlsverlauf durchsuchen, und sobald er den Befehl gefunden hat, wird er nur in der Befehlszeile bereitgestellt. Dann kann ich bei Bedarf den letzten Befehl ändern.
Alpha_989
Wenn ich '^R' history-incremental-pattern-search-backwardandererseits verwende, lande ich nur beim letzten Befehl, der mit der Suchzeichenfolge übereinstimmt. Ich habe jedoch keine Möglichkeit gefunden, den Befehl tatsächlich zu bearbeiten. Gibt es nach dem Finden eines geeigneten Befehls, der mit der Suchzeichenfolge durch inkrementelle Mustersuche übereinstimmt, bestimmte Tastenkombinationen, die ich drücken kann, um den Befehl bearbeiten zu können?
Alpha_989
8

Laut der zshzleHandbuchseite für zsh 4.3.10 ist standardmäßig kein Schlüssel gebunden. Sie müssen der isearchKarte Bindungen hinzufügen , und es sind nur wenige Widgets verfügbar. Zum Beispiel können Sie Folgendes tun:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles 'SO - hör auf böse zu sein'
quelle
bindkey -lzeigt keine isearchZuordnung
Claytron
@claytron: muss ein Versionsproblem sein: isearchist neu in 4.3.10, während es history-incremental-pattern-search-backwardin 4.3.7 erscheint (wenn ich das Änderungsprotokoll richtig gelesen habe).
Gilles 'SO - hör auf böse zu sein
Ich verwende 4.3.10 und bin mir nicht sicher, warum es nicht vorhanden ist. Die Verwendung der Einfügemodus-Bindungen hat bei mir allerdings funktioniert.
Claytron