
リモートマシンのLinuxアカウントには、次の定義済み.inputrc
"\e[1~": beginning-of-line
"\e[4~": end-of-line
“\e[5~”: history-search-backward
“\e[6~”: history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
set completion-ignore-case on
set bell-style visible
set expand-tilde on
set convert-meta off
set input-meta on
set output-meta on
set show-all-if-ambiguous on
set visible-stats on
私はGNU bashのドキュメントを読んでいます話題になっているですが、、、などの文字列\e[1~
が何を意味するのかを説明しているセクションを見つけることができませんでした。\e[5C
\e\e[D
どこかで、これは (キーボードにあると思います)\e
を意味すると読んだと思いますが、他の制御文字、などが何を意味するのかわかりません。meta character
Alt
[
~
5D
このトピックに関する良い参考文献を知っている人はいますか?
答え1
これらはANSI 制御コード エスケープ シーケンス「端末」キーボードでさまざまな非英数字キーが押されたときに送信されます。
\e は ASCII の「ESCAPE」文字 (8 進数 033、16 進数 1B、10 進数 27) を意味します。これはコマンド シーケンス イントロダクション (CSI) の一部です。
Escape [ 2 ~
「Insert」というキーを押すと送信される文字列です。VT220(またはそれ以降)端末。
これらの規則の多くは、xterm や Linux コンソール/シェルなどのソフトウェアで採用されており、さまざまな方法で拡張されることが多く、互換性がない場合もあります。
bashのREADLINE関数におけるこれらのシーケンスの使用については、マニュアルページのために読み込まれた行
2番目の形式「keyseq」:関数名またはマクロでは、keyseqは異なります 上記のキー名から、キーシーケンス全体を表す文字列が シーケンスを二重引用符で囲むことで指定できます。一部のGNU 次の例のように、Emacsスタイルのキーエスケープを使用することもできますが、 記号文字名は認識されません。 "\Cu": ユニバーサル引数 "\Cx\Cr": 初期化ファイルを再読み込み "\e[11~": "ファンクションキー1"
どのエスケープシーケンスがどのキーボードキーに対応しているかのリストを取得するには、infocmp -L -1
次のようなコマンドを使用します。infocmp -L -1 xterm