web-dev-qa-db-ja.com

どうすればよいかわからない場合にzshキーバインドを削除するにはどうすればよいですか?

それが何であるか、または何がトリガーされているのかがわからない場合、キーバインドを無効にするにはどうすればよいですか?

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

履歴検索を行うには、 Esc 「コマンドモード」に移動し、次に / 検索を開始します。ただし、速すぎると他の処理が行われますが、(わかりません)Esc-/はキーバインドであると思いますが、それが何かはわかりません。これを見つけてオフにするにはどうすればよいですか?

4
NHDaly

いくつか検索した後、私は答えを見つけました:

キーの組み合わせがトリガーしている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
8
NHDaly

たぶん

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

または類似。そして、それがあなたが知る方法です。

参考文献

  • ポールファルスタッド(2015-12-02)。 " ZLEビルトイン "。 Zシェルマニュアル。 5.2。
5
JdeBP

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

KEYTIMEOUT=1

極端に感じている場合は、すべてのESCバインドを削除して、ZSHにマルチキーシーケンスがないようにして、エスケープキーが押されるのを待つ時間を無駄にすることができます。

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

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

  1. マッピングが何をするかを知るにはどうすればよいですか?
  2. マッピングをバインド解除するにはどうすればよいですか?

マッピングが何をするかを知るにはどうすればよいですか?

他の回答で述べたように

bindkey <key_combination>

これはキーの組み合わせに関連するzleコマンドを出力します

マッピングをバインド解除するにはどうすればよいですか?

bindkey -r <key_combination>

参照- http://zsh.sourceforge.net/Guide/zshguide04.html#l95

3
the_velour_fog