回答:
もちろん、Ctrl+ はもう使用できませんR。Z Shellのマニュアルを参照するhistory-incremental-search-backwardと、emacsキーマップにウィジェットのキーバインディングしかないことがわかります。viのキーマップには、そのキーバインディングはありません。
しかし、マニュアル(18章)を読んでもわかるように、キーバインディングを追加することは、bindkeyコマンドを使用する上で非常に単純な練習です。
bindkey "^R" history-incremental-search-backward
zleこれは標準のウィジェットなので、コマンドを使用してウィジェットをシェル関数にマップする必要はありません。
あなたが相談した場合はZシェルウィキにあり、これと同じ質問に対する答えを、あなたは特にviの「コマンド」と「挿入モード」キーマップにこれを追加するためのコマンドが表示されます:
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
また、garyjohnが指摘しているように、vi「コマンド」キーマップでは、/キャラクターはvi-history-search-backwardウィジェットにバインドされています。このウィジェットとウィジェットの違いは、履歴検索モードになるhistory-incremental-search-backwardと適用されるウィジェットの動作です。気づく違いは次のとおりです。
history-incremental-search-backwardを切り替えますmainとvicmd、あなたが呼び出しキーマップvi-cmd-modeまだ検索モードに滞在しながらウィジェットを。すなわちからemacspresssingモードEscキーまたはCtrl+ XCtrl+ Vキーの間に検索モードを切り替えますemacsとvicmdキーマップを。(起動history-incremental-search-backwardからvicmdあなたが何かに結合していない限り、キーマップは、煩雑であるvi-cmd-mode中vicmdにもキーマップを。)vi-history-search-backwardは、vi-cmd-modeウィジェットをとして扱い、accept-line検索を終了し、検索を入力したコマンドモードを再入力します。つまり、(デフォルトのバインディングを使用して)/コマンドモードから検索モードに入り、コマンドモードEscに戻ります。history-incremental-search-backward、ウィジェットhistory-incremental-search-backwardとvi-rev-repeat-searchウィジェットの両方が認識されます。つまり、(上記のようにバインディングを変更したと仮定して)Ctrl+ Rとの両方Nで、先行する一致する行を検索します。vi-history-search-backward、vi-rev-repeat-searchウィジェットのみが認識されます。つまり、(上記のようにバインディングを変更したと想定)Ctrl+ Rビープ音が発生し、無視されます。bashのviモードでは、入力<Esc>/<string><Enter>するとコマンド履歴でが検索され<string>ます。n履歴をさらに検索します。N前方に検索します。zshellは同じかもしれません。
私は使用することを好む:
bindkey -M vicmd '/' history-incremental-search-backward
これによりESC /text、コマンドラインを入力して表示できます。次の試合に行きたい場合は、ESC n
garyjohnVimがそれを行う方法を示し、JdeBPCtrl + Rのキーバインドを元に戻す方法を示します!両方の方法を試して、後で回答を受け入れます。1)どちらの方法が私にとってより簡単に見えるか、2)どちらがより多くの投票を獲得するかに基づいて決定します。二人ともありがとう!