
Bei der Verwendung von Terminals ist es normal, dass durch Drücken der Auf- und Ab-Tasten die zuvor eingegebenen Befehle chronologisch durchgegangen werden.
Von einer Site habe ich erfahren, wie ich dieses Verhalten ergänzen kann, indem ich beim Drücken der Auf- und Ab-Taste auf Grundlage zuvor eingegebener Befehle automatisch die am Cursor eingegebene Information vervollständigen lasse.
Nehmen wir zum Beispiel an, ich habe die folgenden Befehle in dieser Reihenfolge eingegeben:
ls Videos
ls Vids
lsomething
ls Videos/Funny/Old
vi file
ls Music
Wenn ich nichts eingegeben habe, kann ich mit den Pfeiltasten nach oben und unten wie üblich durch alle Zeilen blättern. Wenn ich jedoch eingegeben habe ls
, kann ich mit den Pfeiltasten nach oben und unten alle Befehle durchgehen, in denen die ersten beiden Zeichen stehen ls
(Zeilen 1, 2, 3, 4, 6 oben). Wenn ich ls
jedoch (mit einem Leerzeichen danach) eingebe, kann ich mit den Pfeiltasten nach oben und unten nur durch die Zeilen 1, 2, 4, 6 blättern. Ebenso ls Vid
kann ich mit den Pfeiltasten durch die Zeilen 1, 2, 4 blättern, aber ls Videos
nur zwischen den Zeilen 1 und 4 wechseln.
Es ist ziemlich nützlich, Werte zu vervollständigen, die spezifisch für Befehle sind, die Sie immer wieder eingeben müssen, ohne jeden einzelnen nicht verwandten Befehl, den Sie zwischendurch eingegeben haben, durchgehen zu müssen. Ich versuche beispielsweise, die Auswirkungen von env
Werten wie dem Gebietsschema auf Dinge zu testen:
env [many different values] [command]
[insert many different commands here]
env [slightly different values from before] [command]
[doing other stuff]
Ich muss nach dem Eintippen nur ein paar Mal nach oben drücken, env
um zwischen den Werten zu wechseln, die ich ausprobiert habe.
Ich entschuldige mich, wenn die Beschreibung etwas lang ist. Ich weiß nicht, wie es heißt. Meine Terminals hatten dieses Verhalten früher, aber sie scheinen es verloren zu haben, und ich kann die Site, von der ich es gelernt habe, nicht finden. Ich denke, es hat etwas mit der Bearbeitung zu tun ~/.bashrc
.
Antwort1
Um das gewünschte Verhalten zu erzielen, fügen Sie diese Zeilen hinzu ~/.inputrc
(erstellen Sie die Datei, falls sie noch nicht vorhanden ist):
"\e[A": history-search-backward
"\e[B": history-search-forward
Öffnen Sie dann ein neues Terminal und es wird wie erwartet funktionieren. Dieses Verhalten wird durch die Einstellungen in /etc/inputrc
und gesteuert ~/.inputrc
. Weitere Informationen hierzu finden Sie im Readline Command Names
Abschnitt von man bash
:
non-incremental-forward-search-history (M-n)
Search forward through the history using a non-incremental
search for a string supplied by the user.
history-search-forward
Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.