Der forward-search-history
Befehl würde tun, was Sie wollen - er führt eine inkrementelle Suche in Vorwärtsrichtung durch, und wenn Sie sich bereits im inkrementellen Suchmodus befinden, ändert er nur die Suchrichtung, während die aktuelle Suchzeichenfolge beibehalten wird.
Das Problem ist, diesen Befehl zu erreichen. Die standardmäßigen Readline-Bindungen enthalten:
"\C-r": reverse-search-history
"\C-s": forward-search-history
Aber es C-s
ist das Terminal-Flusssteuerungszeichen, das nicht erreicht wird bash
(obwohl es in Programmen wie Emacs funktionieren würde, die Terminaleinstellungen ändern, um die Flusssteuerungsverarbeitung zu deaktivieren). Daher ist die Standardbindung unbrauchbar und Sie müssen einen anderen Schlüssel an den forward-search-history
Befehl binden .
Ein weiteres Problem besteht darin, dass Tastenkombinationen mit dem Meta-Modifikator für die inkrementelle Suche nicht funktionieren. Der Meta-Modifikator fügt das ESC-Präfix hinzu und ESC beendet die inkrementelle Suche, selbst wenn sie aus dem isearch-terminators
Variablenwert entfernt wird. Kombinationen mit dem C-x
Präfix funktionieren ebenfalls nicht - Drücken von C-x
beendet sofort die inkrementelle Suche. Daher müssen Sie eine Ebene C-<key>
an den forward-search-history
Befehl binden . Alle diese Steuerzeichen werden jedoch bereits von readline-Befehlen verwendet, sodass Sie einen anderen Befehl opfern müssen, um eine Taste für freizugeben forward-search-history
.
Beispiel ~/.inputrc
zu verwenden , C-t
für die Vorwärtssuche ( als Ersatz für den transpose-chars
Befehl):
"\C-t": forward-search-history