Linux 由cat编写的终端和字符
我试图更好地理解这些符号的来源以及它们的含义。如果我跑猫Linux 由cat编写的终端和字符,linux,vim,terminal,Linux,Vim,Terminal,我试图更好地理解这些符号的来源以及它们的含义。如果我跑猫 xxx@xxx-debian:~$ cat ^[[A^[[A 在这种情况下,我正在键入向上箭头 我认为输入的符号与配置的终端类型有关,从哪里可以获得更多信息? 是否有一个表格指定键入的内容与屏幕上打印的内容之间的映射 基本上,我想做的是在键入Ctrl-UP时映射来自tmux的内容,这是 ^[A] 在我的.vimrc文件中,我如何具体做到这一点? 无论如何,我的问题更一般,正如你所理解的,我对这一切有点困惑。这是生成的转义序列 ^[ESC
xxx@xxx-debian:~$ cat
^[[A^[[A
在这种情况下,我正在键入向上箭头
我认为输入的符号与配置的终端类型有关,从哪里可以获得更多信息?
是否有一个表格指定键入的内容与屏幕上打印的内容之间的映射
基本上,我想做的是在键入Ctrl-UP时映射来自tmux的内容,这是
^[A]
在我的.vimrc文件中,我如何具体做到这一点?
无论如何,我的问题更一般,正如你所理解的,我对这一切有点困惑。这是生成的转义序列
^[
ESC字符和[
和A
有助于表示其向上箭头
键
因此,作为一个组合,
^[[a
操作系统理解用户按下了向上箭头
键。cat
没有在此处写入任何字符。在您按下Enter键之前,它不会获得任何字符,也不会产生任何字符。这是您的终端发送到与其连接的程序的内容
特殊键和它们产生的字节序列之间的映射是特定于每种终端类型并硬连接到其中的。您的计算机上有一个数据库,该数据库汇总了许多类型终端的这些信息,以及更多信息。该数据库称为“terminfo数据库”。您可以通过在shell中键入man5 terminfo
命令来了解它
许多程序,如读取和理解箭头键和其他特殊键的
vi
和bash
,都会查阅此数据库。并非所有程序都会查阅此数据库(例如,cat
)。有一些库,例如ncurses
,它们封装了所有这些的详细信息,因此您可以使用诸如“Up key”之类的高级概念,而不是像^[[A
如何获取终端类型?echo$TERM?在我的例子中,例如screen-256color,如何获取有关字节序列的更多信息?(1)是echo$TERM
(2)研究infocmp
的输出,查看kcuu1
和cuu1
(为什么?在man 5 terminfo
中查找它们),请记住,kcuu1
和同级在所有终端模式下都不一定正确,需要使用cuu1
等(我不知道具体原因或时间)。