了解 .inputrc 中的控製字符

了解 .inputrc 中的控製字符

我在遠端電腦上的 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

相關內容