
我在遠端電腦上的 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」字元(八進位 033 十六進位 1B 十進位 27)。這是命令序列介紹 (CSI) 的一部分。
Escape [ 2 ~
是當您按鍵盤上標有“Insert”的鍵時傳輸的字元序列VT220(或更高版本)終端。
其中許多約定已在 xterm 和 Linux 控制台/shell 等軟體中採用 - 通常以各種、有時不相容的方式進行擴展。
bash 的 READLINE 函數中這些序列的使用在手冊頁為了閱讀線
在第二種形式中,「keyseq」:函數名稱或宏,keyseq 不同 從上面的鍵名中,表示整個鍵序列的字串可能 透過將序列放在雙引號內來指定。一些 GNU 可以使用 Emacs 風格的鍵轉義,如下例所示,但是 無法辨識符號字元名稱。 “\Cu”:通用參數 "\Cx\Cr": 重新讀取初始化文件 "\e[11~": "功能鍵1"
要獲取哪些轉義序列對應於哪些鍵盤按鍵的列表,您可以使用諸如infocmp -L -1
或之類的命令infocmp -L -1 xterm