Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 由cat编写的终端和字符_Linux_Vim_Terminal - Fatal编程技术网

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
等(我不知道具体原因或时间)。