我的远程计算机中的 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