BashでReadlineを使用してキーバインディングを定義するときに、「\ M-\ C-」をキーシーケンスプレフィックスとして使用する方法は?

BashでReadlineを使用してキーバインディングを定義するときに、「\ M-\ C-」をキーシーケンスプレフィックスとして使用する方法は?

"\M-\C-k": kill-whole-line私のファイルを入れると、~/.inputrc結果は"\213": kill-whole-line(と表示されますbind -p)です。

ただし、()\M-に変更すると、キーバインディングが期待どおりに機能します。\e"\e\C-k": kill-whole-line

Readlineを使用してキーバインディングを定義するとき\M-\C-(「meta-control」)をプレフィックスとしてどのように使用しますかbash

答え1

\M-故障して使用できません。続けて\eMeta / Altプレフィックスを使用してください。

高いビットをオンにするか、UTF-8ロケールを使用する代わりにMeta / Altを押すと、ESC()文字の前にESC()文字を追加するターミナルエミュレータでは、readlineバインディングでの使用は安定して\M-動作しません\x1b(両方の言語は通常ほとんどの最新システム[1])。

いくつかのbashバージョンの場合(例えば5.0いいえ最新5.1)、使用は\C-\M-異なる動作をするため、代わりに\M-\C-使用すると、次の更新まで実際に必要な操作が実行されます。 ;-)\C-\M-k\M-\C-k

bash-5.0$ bind '"\C-\M-k": shell-backward-kill-word'
bash-5.0$ bind '"\M-\C-k": shell-kill-word'
bash-5.0$ bind -p | grep -a shell-.*kill-word
"\e\C-k": shell-backward-kill-word
"\213": shell-kill-word

[1]:しかし、いいえ。のxtermようなものが必要です。XTerm*VT100.metaSendsEscape: true~/.Xresources

関連情報