反向控制代码查找终端

Ame*_*ina 8 keyboard-shortcuts terminal escape-characters

我的理解是终端经常使用 ANSI 控制代码来表示非字母数字字符序列。例如,.inputrc在 Linux 中为 Bash 进行编辑时,很容易找到如下所示的代码序列:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
Run Code Online (Sandbox Code Playgroud)

上面的命令定义了 Bash 命令history-search-backward等的键绑定。

现在,在 bash 中,我可以read查看在我的键盘中输入的字符如何映射到 ANSI 控制代码。例如,如果我运行read,然后输入Ctrl-P,我得到:^P。同样,如果我输入 Alt-W,我会得到:^[W

我的问题是:是否有相反的程序、工具或网站?即输出或显示我需要在我的键盘上键入以获得给定的 ANSI 控制代码序列的键盘键序列的工具。例如,输入^[W应该输出:Alt-W

谢谢!

Mik*_*kel 8

infocmp可以帮助。它写 escape as\E而不是\eor ^[

例如,要 find \e[A,这是您的历史搜索向后:

$ infocmp -1x | grep -F '=\E[A,'
       cuu1=\E[A,
$ man 5 terminfo | grep '  cuu1  '
       cursor_up                     cuu1       up       up one line
Run Code Online (Sandbox Code Playgroud)

它告诉你向上按光标,也就是向上箭头。

请注意,您需要使用-x标志(如上所示)来显示一些组合,例如Ctrl+ <-

这些扩展键不是标准的一部分,因此它们没有列在 terminfo 手册页中,但它们记录在terminfo 文件中

另请注意,控制顺序因您使用的终端而异。

您可以获取有关通过使用不同的终端信息infocmp -1x <terminal>,例如infocmp -1x rxvtinfocmp -1x putty等等。

一旦您弄清楚 terminfo 认为您拥有哪一个,如果您将TERM变量设置为匹配,事情就会变得更容易。