zshからキーマップを削除し、キーを完全に無効にします。

zshからキーマップを削除し、キーを完全に無効にします。

Insertzshでキーを完全に無効にしたいです。この鍵は実際には役に立たず、誤って押したときにのみ迷惑になります。

バインディングを削除する方法を見つけました。overwrite-mode

bindkey -r "^[[2~"

Insertただし、実際にクリックすると、オーバーレイモードはアクティブではなくカーソル位置に印刷されます。~

を押すとF12そのようなことが起こりますが、何も接続されません。また印刷されます~

キーを押してもzshで何もしないようにInsertキーを完全に無効にするにはどうすればよいですか?F12

Insert他のプログラムで実際に便利な目的でキーを使用できるため、キーをグローバルに無効にしたくありません。

答え1

Insert認識されないエスケープ文字列を送信するために特殊キー(たとえば)を押すと、zshこれが行われます。 zsh は、エスケープシーケンスの個々のバイトに対していくつかの操作を実行しようとします。

結果によると、bindkeyzshにはキーにバインドする適切な機能がないようです。無視するそれ。ただし、Insert空のマクロに再バインドできます。

bindkey -s '\e[2~' ''

についても同じですF12。通常、エスケープシーケンスの送信内容を表示するにはCtrl+を押します。V F12F12

bindkey -s '\e[24~' ''

zshzleマニュアルページによると、このアプローチには次の制限があります。

ZLEコマンドと同様に、 "bindkey -s"を使用してキーシーケンスを別の文字列にバインドできます。これらのシーケンスを読み取ると、置換文字列が入力に戻され、これらの偽のキーストロークを使用してコマンド読み取りプロセスが再開されます。入力自体は別の代替文字列を呼び出すことができますが、ループが存在する場合はループを検出するためにプロセスが停止します。二十これらの置換では、実際のコマンドを読み取る必要はありません。

私が最初に提案した方法でバインドすると、\aこれらの欠点はないようです。

bindkey -s '\e[2~' '\a'

関連情報