それが何であるか、または何がトリガーされているのかがわからない場合、キーバインドを無効にするにはどうすればよいですか?
zsh
キーモードをbindkey -v
を介してviモードに設定しました。
履歴検索を行うには、 Esc 「コマンドモード」に移動し、次に / 検索を開始します。ただし、速すぎると他の処理が行われますが、(わかりません)Esc-/
はキーバインドであると思いますが、それが何かはわかりません。これを見つけてオフにするにはどうすればよいですか?
いくつか検索した後、私は答えを見つけました:
キーの組み合わせがトリガーしている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
たぶん
% bindkey '^[/'
"^[/" _history-complete-older
%
または類似。そして、それがあなたが知る方法です。
また、関連するのはKEYTIMEOUT
設定です。これは、ZSHがマルチキーシーケンスの検出を待機する時間を示し、次の設定によって最小化されます。
KEYTIMEOUT=1
極端に感じている場合は、すべてのESCバインドを削除して、ZSHにマルチキーシーケンスがないようにして、エスケープキーが押されるのを待つ時間を無駄にすることができます。
bindkey -rpM viins '^['
bindkey -rpM vicmd '^['
この質問には2つの部分があります。
他の回答で述べたように
bindkey <key_combination>
これはキーの組み合わせに関連するzleコマンドを出力します
bindkey -r <key_combination>