了解 .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 不同
       从上面的 keyname 中可以看出,表示整个键序列的字符串可能
       通过将序列放在双引号内来指定。一些 GNU
       可以使用 Emacs 风格的键转义,如以下示例所示,但是
       无法识别符号字符名称。

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

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

相关内容