Bash bietet die Funktionalität, die Suche über Ctrl+ umzukehren R. Dann kann man einen Teil eines Befehls eingeben, der einen passenden Eintrag aus dem Verlauf anzeigt.
Angenommen, dies ist meine Geschichte:
vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?
Ich suche nach foo
. Wenn Sie erneut auf Ctrl+ drücken R, wird der nächste passende Sucheintrag angezeigt. Oft passiert es mir, dass ich zu schnell bin und über mein beabsichtigtes Ergebnis hinaus navigiere und vim foo3
angezeigt wird und ich jetzt zurückkehren möchte vim foo2
.
Daher lautet meine Frage: Wie navigiere ich in der Rückwärtssuche?
bash
command-history
search
k0pernikus
quelle
quelle
Antworten:
Sie können über die
forward-search-history
Funktion, an die standardmäßig gebunden ist, darauf zugreifen ctrl+s. Leider ctrl+swirdxoff
standardmäßig signalisiert, was bedeutet, dass Sie die Suchrichtung nicht ändern können. Es gibt zwei Lösungen, um das Problem zu lösen: Eine deaktiviert das Senden derxoff/xon
Signalisierung und die andere ändert die Tastenkombinationforward-search-history
Deaktiviere xon / xoff
Führen Sie
stty -ixon
Ihr Terminal aus oder fügen Sie es Ihrem hinzu~/.bashrc
. Auf diese Weise können Sie ctrl+sdieforward-search-history
Verlaufsfunktion verwenden.Weitere Informationen zum Kontrollfluss finden Sie unter Wie kann ich nach versehentlichem Drücken der Tastenkombination Strg-S in einem Terminal wieder einfrieren? und einige der Antworten
Ändern Sie die Tastenkombination
Wenn Sie das Standardverhalten von nicht ändern möchten, ctrl+skönnen Sie die Tastenkombination für
forward-search-history
mit ändernbind
. Da die meisten Schlüssel bereits in bash definiert sind, müssen Sie möglicherweise kreativ werden:Diese binden ctrl+tweiterleiten-search-Geschichte, aber bitte beachten Sie , dass standardmäßig ctrl+tläuft
transpose-chars
quelle
stty -ixon
inzsh
und es funktioniert sehr gut. Gibt es jedoch möglicherweise unerwünschte Nebenwirkungen bei der Deaktivierung derxoff/xon
Signalisierung?ctrl+s
zum Anhalten der Terminalausgabe verwenden. Wenn Sie es noch nie benutzt haben, ist dies kein ProblemC-s
. Sehr nützlich, wenn Sie tail für Server-Protokolle verwenden. Ordentlich ! (Ich wünschte, ich hätte noch eine Gegenstimme :))bind '"\C-t": history-search-forward'
Als Alternative zur grundlegenden Rückwärtssuche und Vorwärtssuche, die von Ihrer Bash bereitgestellt werden, möchten Sie möglicherweise Folgendes untersuchen:
fzf , ein selbst beschriebener "Kommandozeilen-Fuzzy-Finder".
Es kann die Standard-Rückwärtssuche Ihrer Bash (und anderer Terminals) ersetzen.
Seine Vorteile sind, dass es:
Mein Workflow basiert nun vollständig auf der FZF über die grundlegende Rückwärtssuche auf Maschinen, über die ich die Kontrolle habe.
quelle