zshキーバインディングの機能がわからない場合はどうすれば削除できますか?

zshキーバインディングの機能がわからない場合はどうすれば削除できますか?

それが何であるか、何を引き起こすのかわからない場合は、キーバインディングを無効にするにはどうすればよいですか?

zshでキーモードをviモードに設定しましたbindkey -v

履歴検索を実行するには、キーを押してEsc「コマンドモード」に入り、/検索を開始します。ただし、早すぎると他の操作が行われますが、私は何も知らない!キーバインディングのようですが、Esc-/それが何であるかわかりません。どうやって探して消えますか?

答え1

いくつかの検索の最後に、次のような答えが見つかりました。

escape sequenceキーの組み合わせが何を実行しているかを確認するには:この素晴らしい答え:

echo "CtrlVEsc/"

私には次のようになりますecho "^[/"CtrlV次のキーが解釈されず、エスケープシーケンスとして表示されるようにします。今、私たちは関連コンテンツを見つけようとしていることを知っています"^[/"


すべてのzshキーバインディングを一覧表示するには、bindkey引数なしで実行します。

$ bindkey
"^A"-"^C" self-insert
"^D" list-choices
"^E"-"^F" self-insert
"^G" list-expand
"^H" backward-delete-char
...
"^Y"-"^Z" self-insert
"^[" vi-cmd-mode
"^[," _history-complete-newer
"^[/" _history-complete-older   ### <--- Here it is.
"^[M" vi-up-line-or-history
"^[OA" vi-up-line-or-history
...
"^\\\\"-"~" self-insert
"^?" backward-delete-char
"\M-^@"-"\M-^?" self-insert

だから気にしないと判断して_history-complete-older削除しました。私はこれを私のものに追加しました.zshrc

# Unbind the escape-/ binding because it gets triggered when I try to do a history search with "/".
bindkey -r "^[/"

代わりに、別のキーに再バインドするには、次を使用できます。

bindkey -r "^[/"
bindkey "<some-other-key-combo>" _history-complete-older

答え2

この質問には2つの部分があります。

  1. マッピングの機能をどのように理解できますか?
  2. マッピングをバインド解除する方法は?

マッピングの機能をどのように理解できますか?

他の回答で述べたように

bindkey <key_combination>

これにより、キーの組み合わせに関連する zle コマンドが印刷されます。

マッピングをバインド解除する方法は?

bindkey -r <key_combination>

引用する -http://zsh.sourceforge.net/Guide/zshguide04.html#l95

答え3

おそらく

% bindkey '^[/'
"^[/" _history-complete-older
%

または同様です。それがあなたが見つける方法です。

追加読書

答え4

KEYTIMEOUTまた、ZSHがマルチキーシーケンスを検出するのを待つ時間を示す設定も関連しており、次の設定によって最小化されます。

KEYTIMEOUT=1

極端に極端な感じがある場合は、ESCなどのすべてのバインディングを削除して、ZSHにEscキーを押すのに時間を無駄にする複数のキーシーケンスがないようにすることもできます。

bindkey -rpM viins '^['
bindkey -rpM vicmd '^['

関連情報