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
谢谢!
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 rxvt,infocmp -1x putty等等。
一旦您弄清楚 terminfo 认为您拥有哪一个,如果您将TERM变量设置为匹配,事情就会变得更容易。