私vimは本質的にすべての編集ニーズに使用するので、シェルのviモード(現在はOS Xでは現在ZSH w / oh-my-zsh)をもう一度試してみることにしましたが、Ctrl-R常に使用しようとしています(そして失敗しています)。同等のキーバインディングとは何ですか?また、今後の参考のために、これを自分でどのように理解するのでしょうか?bind -Pbashで使用できると確信しています。
私vimは本質的にすべての編集ニーズに使用するので、シェルのviモード(現在はOS Xでは現在ZSH w / oh-my-zsh)をもう一度試してみることにしましたが、Ctrl-R常に使用しようとしています(そして失敗しています)。同等のキーバインディングとは何ですか?また、今後の参考のために、これを自分でどのように理解するのでしょうか?bind -Pbashで使用できると確信しています。
回答:
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
zshzlemanページには、( 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-forwardvimのような自動補完のために(あなたが押して、入力を開始します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。投稿に間違いがあります