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
ドキュメントを読む必要があります。