Ich benutze es vim
für im Wesentlichen alle meine Bearbeitungsanforderungen, daher habe ich mich entschlossen, den vi-mode für meine Shell (derzeit ZSH mit oh-my-zsh unter OS X) erneut zu testen Ctrl-R
. Was ist die äquivalente Schlüsselbindung? Und wie würde ich das in Zukunft selbst herausfinden? Ich bin mir ziemlich sicher, dass ich bind -P
Bash gebrauchen kann .
zsh
command-history
vi-mode
Hank Gay
quelle
quelle
Antworten:
Sie können
bindkey
ohne Argumente ausführen , um eine Liste der vorhandenen Bindungen abzurufen, z.Im Emacs-Modus ist die Bindung, die Sie möchten
history-incremental-search-backward
, im vi-Modus jedoch nicht standardmäßig gebunden. Um Strg-R selbst zu binden, können Sie diesen Befehl ausführen oder zu Ihrem hinzufügen~/.zshrc
:In der
zshzle
manpage (man zshzle
) finden Sie weitere Informationen zu den Modi zsh line editor, bindkey und emacs / vi.quelle
zshzle
. Das ist sehr informativ und nützlich.Dies ist eine alte Frage, aber die einzige (und akzeptierte) Antwort sagt im Grunde, wie man den Emacs-ähnlichen
history-incremental-search-backward
Modus in den vi-Modus umwandelt. Dies ist zwar vollkommen machbar und möglicherweise die richtige Lösung für Sie, aber es ist ein wenig seltsam, dass niemand den "vi way" der Suche in der Vergangenheit erwähnt hat.Der vi-Modus in zsh unterstützt den Suchverlauf mit den Standard-Tasten vi / vim:
/
und?
, die beide im Befehlsmodus verfügbar sind. (Drücken Sie<Esc>
, um vom Einfüge- in den Befehlsmodus zu wechseln, genau wie in vi oder vim.)Ihr Sinn ist jedoch umgekehrt: Da Sie den Verlauf Ihrer Shell
/
normalerweise umgekehrt durchsuchen möchten, führen Sie eine umgekehrte Suche und?
eine Vorwärtssuche durch.Sobald der erste Treffer angezeigt wird, können Sie (wie in vi / vim)
n
weitere Treffer in derselben Richtung finden oderN
die Suchrichtung umkehren.Die relevanten Standard-Tastaturbelegungen in der
vicmd
Tastaturbelegung sind:quelle
"^P" history-beginning-search-backward
und"^N" history-beginning-search-forward
für eine vim-artige Autovervollständigung (Sie beginnen zu tippen und drücken dannctrl+p
oderctrl+n
).?
bringtbck-i-search
das genau das auf, wonach ich gesucht habe. Danke./
oder "?" doesnt: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex^R
Tastaturbelegung überlastet . Die einzige „regex-like“ Charakter von beiden unterstützthistory-search-backward
undhistory-incremental-search-backward
ist^
, den Such - String an den Anfang der Zeile zu verankern. Die wahre Stärke vonhistory-incremental-search-backward
ist, dass es eine inkrementelle Suche durchführt, wie der Name schon sagt. Ich kann mir vorstellen, dass man esvicmd
aus diesem Grund in die Keymap einbinden möchte .history-incremental-pattern-search-backward
, nichthistory-incremental-search-backward
.history-incremental-pattern-search-backwards
vielleicht ein widget .. aber ich denke es kommt standardmäßig in zsh installiert. Es werdenglob
Muster unterstützt , aufregex
die Sie nicht richtig hingewiesen haben: zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators . Es ist in der Tat ein Fehler in der Post ..