readline reverse-search-history Cr findet wiederholt den nächsten cmd, wie gehe ich zum vorherigen zurück?

2

Dies ist wahrscheinlich eine sehr einfache Frage, aber ich würde wirklich gerne herausfinden, ob dies möglich ist.

Wenn ich eine Rückwärtssuche mit Cr starte und dann mehrmals Cr drücke, kann ich nach weiteren Befehlen im Verlauf suchen.

Wenn ich schnell auf Cr drücke, kommt es häufig vor, dass mir ein Cmd fehlt, das ich verwenden möchte, und ich möchte einen Weg finden, um zum vorherigen Cmd zurückzukehren.

Ist das mit der aktuellen Version von readline möglich?

Peter Slotko
quelle

Antworten:

3

Der forward-search-historyBefehl 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-sist 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-historyBefehl 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-terminatorsVariablenwert entfernt wird. Kombinationen mit dem C-xPräfix funktionieren ebenfalls nicht - Drücken von C-xbeendet sofort die inkrementelle Suche. Daher müssen Sie eine Ebene C-<key>an den forward-search-historyBefehl 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 ~/.inputrczu verwenden , C-tfür die Vorwärtssuche ( als Ersatz für den transpose-charsBefehl):

"\C-t": forward-search-history
Sergey Vlasov
quelle
1

Sie können die XON / XOFF-Flusskontrolle deaktivieren:

stty -ixon

in deinem ~ / .profile oder ähnlichem wird dann Ctrl + S erkannt.

Beispiel

Steven Penny
quelle
1
@GabiDavar aktualisiert
Steven Penny