回答:
もちろん、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
まだ検索モードに滞在しながらウィジェットを。すなわちからemacs
presssingモード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
garyjohn
Vimがそれを行う方法を示し、JdeBP
Ctrl + Rのキーバインドを元に戻す方法を示します!両方の方法を試して、後で回答を受け入れます。1)どちらの方法が私にとってより簡単に見えるか、2)どちらがより多くの投票を獲得するかに基づいて決定します。二人ともありがとう!