inputrcでAltにキーの組み合わせをバインドする方法を知っている人はいますか?
Alt+キーの組み合わせBackspaceをにマッピングしたいのですが、+と+をbackward-kill-word
押してどの文字を表すかを確認すると、しばらく表示され、削除または何も表示されません。CtrlVAltBackspace^[
Ctrl+を何かにバインドするには、+をLeft Arrow押して次のように入力して次に置き換え、最後に次の行を追加します。CtrlV^[[1;5C
^[
\e
.inputrc
"\e[1;5C": forward-word
しかし、この方法は私には効果がありませんAlt+ (literally anything)。
答え1
通常、単一文字を転送するキーの場合、Alt + キーは通常エスケープ文字とその文字を転送します。具体的Altには、+はエスケープ文字(視覚的に-で示されている)とバックスペース文字(視覚的に- -で示される)の位置を送信Backspaceします。より正確には削除文字ですが、この答えでは「バックスペース」という名前を使用します。 。 (設定によっては、バックスペース文字が視覚的に表示されることがあります。)\e\177
\e
^[
\177
^?
\b
^H
Ctrl+をV Alt押すと、Ctrl Backspace+ V文字はターミナル(またはターミナルモードに応じてアプリケーション)に次の文字を文字通り解釈するように指示するため、視覚的にマークされたエスケープ文字が挿入されます^[
。その後、端末にはもう1つの文字があります。これは、入力したエスケープ文字を削除するバックスペースキーです。
キーストロークに送信された文字列全体を表示するには、次のコマンドを使用して2秒以内にキーストロークを入力します。
stty raw; sleep 2; echo; stty cooked
stty raw
制御文字がそのまま挿入される生モードにターミナルを切り替えてから、stty cooked
もう一度切り替えます。実際、Alt+はBackspaceこれが必要なごく少数のケースの1つです。ほとんどのキーコードは単一の制御文字またはエスケープ文字のみを送信し、その後に印刷可能な文字が続きます。
.inputrc
2つの一般的なケース(削除またはバックスペース文字を使用)は、でカバーされています。
"\e\177": backward-kill-word
"\e\b": backward-kill-word
エスケープシーケンスは端末によって異なります。一部の端末は、特定のキーとコードのエスケープシーケンスを送信しないか、複数のキーとコードに対して同じである可能性のある非標準のエスケープシーケンスを送信しません。ただし、++を^[
押したときに短い時間が表示された場合、これは端末が特定のキーとコードの標準操作を実行していることを意味します。CtrlV AltBackspace