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-s
wird 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-s
wü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 ^J
es 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.