Kopieren Sie diese und fügen Sie sie in Ihre .zshrc
:
Cursor verwenden den lokalen Verlauf:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Wenn Sie auch Tastenkombinationen ( CTRL+ Cursor) benötigen , um durch den globalen Verlauf zu blättern, fügen Sie Folgendes hinzu .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Damit dies funktioniert, muss die Option SHARE_HISTORY (siehe 16.2.4 Verlauf ) aktiviert sein. Führen Sie aus setopt
und prüfen Sie, ob "sharehistory" aufgelistet ist. Wenn nicht setopt sharehistory
zu deinem hinzufügen .zshrc
. Dann kann man set-local-history wie oben verwenden. Die Dokumentation sagt:
Standardmäßig werden die importierten Zeilen und die lokalen Zeilen von Verlaufsbewegungsbefehlen besucht, aber Sie können dies mit der Zle-Bindung set-local-history ein- und ausschalten. Es ist auch möglich, ein zle-Widget zu erstellen, mit dem einige Befehle importierte Befehle ignorieren und andere enthalten.
Beachten Sie, dass standardmäßig der globale Verlauf verwendet wird (und alle Funktionen mit "zle set-local-history 0" enden, dh der lokale Verlauf ist deaktiviert). Wenn Sie also CTRL+ drücken, Rwird standardmäßig der globale Verlauf durchsucht (was in den meisten Fällen sinnvoll ist).
Dies ähnelt der Lösung von @mpy, ist jedoch zum Kopieren und Einfügen bereit. Es überschreibt die Cursortasten nach oben und unten. Ich habe diesen Mailinglisteneintrag verwendet .
Siehe auch:
${key[Up]}
. Geben Sie dann (im Bearbeitungsmodus) Strg + V gefolgt von einem Aufwärtspfeil ein. Dies sollte den richtigen Schlüsselcode einfügen. Machen Sie dasselbe für den Pfeil nach unten.Ctrl+R
.Sie können ein spezielles zle-Widget einrichten, um nur lokale Verlaufselemente anzuzeigen:
Vorausgesetzt, das ↑ist gebunden an
up-line-or-history
(ich denke das ist Standard), können Sie dieses Widget an einen anderen Tastendruck binden, wie CTRL+ ↑:Ob dies funktioniert, hängt wahrscheinlich von Ihrem Terminal ab. Die obige Zeile funktioniert in
URxvt/Screen
. Mitxterm
wirst du brauchenfür CTRL+ ↑.
Eine andere Variante könnte sein
Wenn Sie also den lokalen Verlauf aktiviert haben, können Sie einen Blick in den globalen werfen oder umgekehrt.
quelle
Die Antwort von @lumbic hat bei mir nur mit ein paar Änderungen funktioniert:
Dieser Code legt den globalen Verlauf als Standard fest und verwendet den STRG-Pfeil für den lokalen Verlauf.
Hinweis: Ich verwende zsh 5.0.2 zusammen mit oh-my-zsh.
quelle
Ctrl+arrows
für die lokale Geschichte.Ich habe die Optionen ausprobiert, die in den anderen Antworten aufgeführt sind, aber ich war nicht zufrieden mit ihnen. Die Widgets 1
up-history
oderup-line-or-history
enthalten keine Suche zu Beginn und das Widget 1up-line-or-beginning-search
scheint nicht gut zu funktionieren, wenn Sie die Einstellungen für den lokalen Verlauf ändern, während Sie es verwenden. 2Also bin ich auf folgende Einstellungen gekommen. Es aktiviert Ctrl+ Pfeile, um den globalen Verlauf zu durchsuchen, Alt+ Pfeile, um nur den lokalen Verlauf zu durchsuchen (ähnlich wie bei Bash) und Standalone-Pfeile, um die intelligente Anfangssuche zu verwenden (Standardeinstellung in Oh My Zsh ).
1 Auch ihre
down
Gegenstücke sind implizit gemeint.2 Der für die Suche verwendete Anfang wird nach dem Ändern der lokalen Verlaufspräferenz neu definiert, sodass der gesamte zuerst gefundene Befehl als der für die zweite Suche zu suchende Anfang verwendet wird.
quelle
Aufgrund der verschiedenen Antworten hier konnte ich eine verkürzte Version erstellen:
Diese Version überschreibt die vorhandenen
up-line-or-history
unddown-line-or-history
Widgets mit neuen benutzerdefinierten Widgets. Dieses Widget aktiviert den lokalen Verlauf und ruft dann die ursprünglichen Widgets auf, die unter den.
vordefinierten Namen verfügbar sind . Weitere Informationen finden Sie in der Dokumentation zum zle-Widget .Dies bedeutet, dass Sie alle vorhandenen Tastenkombinationen beibehalten können. Sie müssen also nicht herausfinden, wie die Escape-Sequenz lautet, wenn Sie in Ihrem aktuellen Terminal einen Aufwärtspfeil eingeben.
quelle
Die obige Antwort hat bei mir funktioniert.
Referenz: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
quelle