Readline バインディングが Control および Shift 修飾子で動作しない

Readline バインディングが Control および Shift 修飾子で動作しない

私は Bash で GNU Readline のキーバインディングを微調整しています。具体的には、次のマッピング効果を実現したいと考えています。

Control' ==> 'I'

ControlShift' ==> "I"

Control` ==> `I`

Control[ ==> [I]

ControlShift[ ==> {I}

ここで、はI展開後のカーソルの位置を示します。

私は で次の構成を試しました~/.inputrc。ただし、<C-`>マッピングのみが期待どおりに機能します。

$include /etc/inputrc
$if mode=emacs
"\C-\'": "\'\'\C-b"
"\C-`": "``\C-b"
"\C-\"": "\"\"\C-b"
"\C-{": "{}\C-b"
"\C-[": "[]\C-b"
$endif

私の設定の何が問題なのか、また、これらのマッピングを正しく行うにはどうすればよいのか(可能な場合)を知りたいです。

答え1

ターミナルでは、通常、全てコントロールとシフトの修飾子の組み合わせが異なる値になる:

  • の基礎コントロールそしてシフトUS-ASCII(および類似の)スキームから定義されるコントロールそしてシフトアルファベット文字に少し句読点文字。
  • 組み合わせコントロール+シフト通常は効果がないが、特別キー。
  • いくつかの端末では、コントロール/シフトのエスケープシーケンスを次のように定義しています。特別キー(カーソル キーやファンクション キーなど)が無効です。tabキーはこれらのキーの 1 つではありません。

以下は、ASCII を使用した制御文字を示すスクリーンショットです。

ここに画像の説明を入力してください

関連情報