ZSH で新しいキーバインディングを設定すると、主キーバインディングは削除されます。

ZSH で新しいキーバインディングを設定すると、主キーバインディングは削除されます。

私の最後に次のコードを追加しました.zshrc

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

シェルを再起動すると正常に動作しますが、以前のすべてのキーバインディングは動作を停止します。

履歴を検索できません(CTRL-R)そして私は動けません(CTRL-A/E)例えば。

たぶん私がこのコマンドを間違った場所に置いたのではないでしょうか?

どんな助けでも大変感謝します!

答え1

zshはVISUAL埋め込み文字列に設定するときにViを使用します。viキーマップ( vicmd, viins, ...) には Vi スタイルの主キーバインディングがあります。それ以外の場合、zsh はemacsEmacs スタイルの主キーバインディングでキーマップを使用します。

シェルでEmacsスタイルのコマンドラインを編集したいが、Vimをお気に入りのエディタとして使用するには、次のように追加します。bindkey -eあなたのための.zshrc

Viスタイルのコマンドライン編集を使用したいが、Emacsスタイルのデフォルトのいくつかのバインディングを使用するには、そのバインディングを直接定義する必要があります。^REmacsモードで実行history-incremental-search-backwardViモードではバインドされません。 Viコマンドモードで検索するための主キーバインディングは/次のとおりです。vi-history-search-backward?そしてvi-history-search-forward。コマンドラインの先頭または末尾に移動するには、通常どおりに、0およびを使用できます^$

関連情報