了解 .inputrc 中的控制字符

Ame*_*ina 28 bash 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
Run Code Online (Sandbox Code Playgroud)

我读了GNU bash的文档的话题,但我一直没能找到一个部分解释什么字符序列\e[1~\e[5C\e\e[D,等意思。

我觉得我读的地方,\e手段meta character(我认为这是Alt在我的键盘),但不明白什么其他控制字符[~5D等意思。

有谁知道关于这个主题的一个很好的参考?

Red*_*ick 24

这些是ANSI 控制代码转义序列,当在“终端”键盘上按下各种非字母数字键时会传输这些序列

\e 表示 ASCII“ESCAPE”字符(八进制 033 十六进制 1B 十进制 27)。这是命令序列介绍 (CSI) 的一部分。

Escape [ 2 ~是当您在VT220(或更高版本)终端上按下标记为“插入”的键时传输的字符序列。

许多这些约定已在 xterm 和 Linux 控制台/shell 等软件中采用 - 通常以各种不同的方式进行扩展,有时甚至是不兼容的方式。

在bash的READLINE功能使用这些序列中的描述手册页进行的readline

       第二种形式,"keyseq":function-name or macro,keyseq不同
       从上面的 keyname 中,表示整个键序列的字符串可能
       通过将序列放在双引号内来指定。一些 GNU
       可以使用 Emacs 样式的键转义,如下例所示,但
       无法识别符号字符名称。

          "\Cu": 通用参数
          “\Cx\Cr”:重新读取初始化文件
          "\e[11~": "功能键 1"

要获取哪些转义序列对应于哪些键盘键的列表,您可以使用诸如infocmp -L -1infocmp -L -1 xterm