Wie kann ich mit dem Befehl „Reverse-i-Search“ (Strg+R) eine Vorwärtssuche im Verlauf durchführen?

Wie kann ich mit dem Befehl „Reverse-i-Search“ (Strg+R) eine Vorwärtssuche im Verlauf durchführen?

Im Readline-Handbuch

# man readline

Nachfolgend wird die Rückwärts- und Vorwärtssuche beschrieben.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

Wenn ich Strg+R drücke und „apt-get“ eingebe, kann ich durch wiederholtes Drücken von Strg+R einen umgekehrten Suchverlauf durchführen. Aber wenn ich dann Strg+S drücke, geht das Terminal nicht weiter. Mache ich etwas falsch?

Und welchen Schlüssel stellt das Meta-Präfix „M-“ dar?

Antwort1

Die Sequenz C-swird vom Terminaltreiber übernommen, wie man sehen kann

stty -a | grep '\^S'

Um die Sequenz für die Verwendung durch Readline freizugeben, legen Sie die Stoppterminalsequenz auf eine andere Sequenz fest, beispielsweise

stty stop ^J

oder entfernen Sie es ganz mit

stty stop undef

Danach C-swürde es im angegebenen Terminal funktionieren.

Stellen Sie es ein ~/.bashrc, damit es in jedem Terminal funktioniert.

Die M-Reihenfolge ist Alt, wie bereits erwähnt, der Schlüssel.

Antwort2

Zusätzlich zur Zuweisung eines anderen TTY-Stoppzeichens, wie oben vorgeschlagen, können Sie es auch vollständig entfernen, wenn Sie es nicht verwenden möchten (was ich normalerweise nicht tue):

$ stty stop undef

Dann kann readline Strg+S für die Vorwärtssuche verwenden und es kommt nicht zu merkwürdigem Verhalten aufgrund des Hinzufügens eines neuen Stoppzeichens.

Antwort3

forward-search-history (Cs) funktioniert nicht (steht aber auf der Manpage).

„M-“ steht für die Alt-Tastenmodifizierertaste.

Antwort4

Bitte nicht verwenden:

stty stop ^J

Aber

stty stop ^P

oder irgendetwas anderes, da ^Jes große Probleme mit SSH gibt. (Ich weiß jedenfalls nicht, warum.) Nachdem ich mich angemeldet hatte, Enterfunktionierte der Backslash nicht. Oder ich musste Folgendes eingeben:

stty sane 
export TERM=linux

bevor ich tippen wollte

ssh root@192...

Also

stty stop ^P

löste beide Probleme gleichzeitig.

verwandte Informationen