Ctrl-vを使って端末文字列をダンプすると何が起こるのか理解できますか?

Ctrl-vを使って端末文字列をダンプすると何が起こるのか理解できますか?

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。これにより、いくつかのキーの組み合わせをエスケープする必要があります(使用しなくても)。おそらくフルテキストscreenbindkeyドキュメントを読む必要があります。

関連情報