.inputrcの特定のコマンドにAltバックスペースをマッピングする方法は?

.inputrcの特定のコマンドにAltバックスペースをマッピングする方法は?

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つです。ほとんどのキーコードは単一の制御文字またはエスケープ文字のみを送信し、その後に印刷可能な文字が続きます。

.inputrc2つの一般的なケース(削除またはバックスペース文字を使用)は、でカバーされています。

"\e\177": backward-kill-word
"\e\b": backward-kill-word

エスケープシーケンスは端末によって異なります。一部の端末は、特定のキーとコードのエスケープシーケンスを送信しないか、複数のキーとコードに対して同じである可能性のある非標準のエスケープシーケンスを送信しません。ただし、++を^[押したときに短い時間が表示された場合、これは端末が特定のキーとコードの標準操作を実行していることを意味します。CtrlV AltBackspace

関連情報