zshで関数やウィジェットにキーマッピングをバインドしたい場合、まずプロンプトでCtrl+ -を押し、次に使用したいキーシーケンスを入力し、その出力をキーバインドコマンドで使用する必要があることがわかりました。 たとえば、現在のコマンドラインの内容をエディターで開くアクションにマッピングしたい場合は、次のようにする必要があります。v
Ctrl+xCtrl+v
- Ctrl+ - を押すvと「ダンプキーモード」に入ります
- 打つCtrl+xCtrl+v
- 私の場合、これは
^X^E
- 私の場合、これは
- を取得し
^X^E
てキーバインドコマンドで使用します。例:
bindkey "^X^E" edit-command-line
なぜこれが必要なのでしょうか。また、これを行うと「舞台裏」では実際に何が起こっているのでしょうか。
答え1
Ctrl-を押すとV、シェルはキーボード割り込みを無視して起動し、押されたキーの組み合わせを入力文字として受け取ります。ASCII はすべての制御文字を保持するように設計されているため、これは簡単に可能です。
もちろん、ディスプレイ上では少しごまかして、^
対応するキーの後に表示する必要があります。そうしないと、表示する必要のある文字ではなく制御文字が出力されます。
bindkey
ドキュメントでは、制御文字に対して 2 つの表記法がサポートされていることが示されていることに注意してください(例についてはCtrl-を参照してくださいX)。
- キャレット表記法は、キャレット ( ^) に続いて対応する制御文字をテキストで明示的に記述します (この質問ではCtrl-メソッドは必要ありません)。例:V
^X
C-
制御文字が続きます。例:C-x
。これにより、一部のキーの組み合わせでエスケープが必要になります (使用しない場合でも)。マニュアル全体を読む必要がありscreen
ますbindkey
。