私vim
は本質的にすべての編集ニーズに使用するので、シェルのviモード(現在はOS Xでは現在ZSH w / oh-my-zsh)をもう一度試してみることにしましたが、Ctrl-R
常に使用しようとしています(そして失敗しています)。同等のキーバインディングとは何ですか?また、今後の参考のために、これを自分でどのように理解するのでしょうか?bind -P
bashで使用できると確信しています。
私vim
は本質的にすべての編集ニーズに使用するので、シェルのviモード(現在はOS Xでは現在ZSH w / oh-my-zsh)をもう一度試してみることにしましたが、Ctrl-R
常に使用しようとしています(そして失敗しています)。同等のキーバインディングとは何ですか?また、今後の参考のために、これを自分でどのように理解するのでしょうか?bind -P
bashで使用できると確信しています。
回答:
bindkey
引数なしで実行して、既存のバインディングのリストを取得できます。例:
# Enter vi mode
chopper:~> bindkey -v
# Search for history key bindings
chopper:~> bindkey | fgrep history
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[[A" up-line-or-history
"^[[B" down-line-or-history
emacsモードではhistory-incremental-search-backward
、必要なバインディングはですが、viモードではデフォルトでバインドされていません。Ctrl-Rを自分でバインドするには、このコマンドを実行するか、次のコマンドに追加します~/.zshrc
。
bindkey "^R" history-incremental-search-backward
zshzle
manページには、( man zshzle
)のzshのラインエディタ、バインドキー、およびemacsの/ viのモードの詳細情報を持っています。
zshzle
。これは非常に有益で便利です。
これは古くからの質問ですが、唯一の(そして受け入れられている)答えは、基本的に「emacsライク」history-incremental-search-backward
をviモードに移植する方法を示しています。これは完全に実行可能であり、あなたにとって正しい解決策かもしれませんが、歴史を検索する「viの方法」について誰も言及していないのは少し奇妙です。
zshのviモードは、標準のvi / vimキーを使用した履歴の検索をサポートします: /
および?
両方ともコマンドモードで使用可能です。(<Esc>
viまたはvimと同様に、挿入モードからコマンドモードに切り替えます。)
ただし、その意味は逆になります。通常、シェルの履歴を逆方向に検索したいので/
、逆方向検索を行い、逆?
方向検索を行います。
最初のヒットが表示されたら、(vi / vimと同様に)を使用n
して、同じ方向でさらにヒットを見つけ続けるかN
、検索の方向を逆にすることができます。
vicmd
キーマップの関連するデフォルトのキーバインドは次のとおりです。
"/" vi-history-search-backward
"?" vi-history-search-forward
"n" vi-repeat-search
"N" vi-rev-repeat-search
"^P" history-beginning-search-backward
と"^N" history-beginning-search-forward
vimのような自動補完のために(あなたが押して、入力を開始しますctrl+p
かctrl+n
)。
?
を表示しますbck-i-search
。これはまさに私が探していたものです。ありがとうございました。
/
または「?」しない:coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex
^R
キーバインドをオーバーロードするzsh「フレームワーク」がインストールされている可能性があります。との両方history-search-backward
でサポートされる唯一の「正規表現のような」文字history-incremental-search-backward
は^
、検索文字列を行の先頭に固定するためです。その本当の力はhistory-incremental-search-backward
、その名前が示すように、インクリメンタル検索を行うことです。vicmd
その理由から、キーマップでバインドしたいと思うかもしれません。
history-incremental-pattern-search-backward
、ではありませんhistory-incremental-search-backward
。history-incremental-pattern-search-backwards
ウィジェットかもしれませんが、zshにはデフォルトでインストールされていると思います。正しく指摘されてglob
いないパターンをサポートしregex
ています:zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Operators。投稿に間違いがあります