Ich bin vor kurzem auf zsh umgestiegen und verwenderobbyrussellsoh-my-zsh
. Davor habe ich Bash mit vielen benutzerdefinierten Sachen verwendet und mir fehlt nur eine Sache, weil Zsh versucht, „zu schlau“ zu sein:
Wenn ich git commit
und eingebe ↑, durchläuft zsh alle aktuellen git
Befehle. Was ich aber wirklich will, ist, alle Befehle durchzugehen, die mit beginnen git commit
(nicht nur git
).
Wie kann ich dieses Verhalten in (oh-my-)zsh erreichen?
Antwort1
Die Lösung für mein Problem habe ich gefunden imZSH-Dokumentation. Oh-my-zsh scheint die ↑und ↓Keys auf etwas wie
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
Das führt zu dem genauen Verhalten, das ich oben beschrieben habe. Die ZSH-Dokumentation beschreibt das Verhalten history-search-backward
von
Suchen Sie rückwärts im Verlauf nach einer Zeile, die mit demerstes Wort im Puffer.
Was ich stattdessen wollte, war die folgende Zuordnung, die ich in mein eingefügt habe ~/.zshrc
:
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
Das Verhalten von history-beginning-search-backward
ist wie folgt:
Suchen Sie im Verlauf vorwärts nach einer Zeilebeginnend mit der aktuellen Zeile bis zum Cursor. Dadurch bleibt der Cursor an seiner ursprünglichen Position.
Wenn \e[A
die Pfeiltasten nach oben und unten nicht funktionieren, drücken Sie <ctrl-v><KEY (e.g., up arrow)>
in einem anderen Terminal die Taste ^[OA
. Dann können Sie dies anstelle von verwenden \e[A
. Der Vorgang wird hier beschrieben:http://zshwiki.org/home/zle/bindkeys
Antwort2
Ich wollte das gleiche Verhalten für zsh mit oh-my-zsh
installiertem und gefundenem Plugin history-substring-search
.
Ich habe das gleiche Verhalten wie oben beschrieben erreicht, indem ich das Plugin zu meinem hinzugefügt habe ~/.zshrc
:
plugins=(git brew npm history-substring-search)
Ich vermute, dass dieses Plugin zum Zeitpunkt der Fragestellung noch nicht existierte. Es war lediglich eine alternative Möglichkeit, dasselbe zu erreichen.