了解.inputrc中的控制字符


21

我在远程计算机上的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等意思。

有人知道该主题有很好的参考吗?

Answers:


21

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

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

Escape [ 2 ~是一个字符序列,当您在VT220(或更高版本)终端上按标有“ Insert” 插入)的键时,该字符序列就会传输。

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

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

       在第二种形式中,“ keyseq”:函数名或宏,keyseq不同
       从上面的键名中可以看出,表示整个键序列的字符串可能
       通过将序列放在双引号中来指定。一些GNU
       可以使用Emacs样式的键转义符,如以下示例所示,但是
       不能识别符号字符名称。

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

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


优秀!!那正是我想要的。感谢@RedGrittyBrick!
Amelio Vazquez-Reina

+1。我Ctrlinputrc-> ENTER= Ctrl+中寻找代码n
伦登

@ user1133275:链接已更新,但man 3 readline 您自己的系统上的命令应为您提供相同的信息。该命令man 3 readline还可以在Windows 10的WSL中​​使用。如果有必要,您可以问一个新的问题,该问题涉及bind -P导致您感到困难的输出的特定部分。
RedGrittyBrick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.