【问题标题】:Terminal and character written by catcat 写的终端和字符
【发布时间】:2014-08-12 14:19:36
【问题描述】:

我试图更好地理解这些符号的来源以及它们的含义。如果我跑猫

xxx@xxx-debian:~$ cat
^[[A^[[A

在那种情况下,我正在输入向上箭头。

我认为输入的符号与配置的终端类型有关,我在哪里可以获得更多信息? 是否有一个表格指定输入的内容和屏幕上打印的内容之间的映射?

基本上我想做的是在我键入 Ctrl-UP 时映射来自 tmux 的内容,即 ^[[A

在我的 .vimrc 文件中,我该怎么做呢? 无论如何,我的问题要笼统得多,正如您所理解的那样,我对这一切感到有些困惑。

【问题讨论】:

标签: linux vim terminal


【解决方案1】:

cat这里没有写任何字符。在您按 Enter 之前,它不会得到任何字符,也不会产生任何字符。这是您的终端发送给与其连接的程序的内容。

它们产生的特殊键和字节序列之间的映射特定于每种终端类型并硬连线到其中。您的计算机上有一个数据库,可以为多种类型的终端汇总此信息以及更多信息。该数据库称为“terminfo 数据库”。你可以通过在你的 shell 中输入man 5 terminfo 命令来阅读它。

vibash 等许多读取和理解方向键和其他特殊键的程序都查阅了此数据库。并非所有程序都可以(例如cat 不可以)。 ncurses 之类的库封装了所有这些细节,因此您可以使用诸如“向上键”之类的高级概念,而不是解释诸如 ^[[A 之类的序列。

【讨论】:

  • 如何获取我的终端类型?回声 $TERM ?就我而言,例如 screen-256color,我如何获得有关字节序列的更多信息?
  • (1) 是echo $TERM。 (2) 研究infocmp 的输出,查看kcuu1cuu1(为什么要这些?在man 5 terminfo 中查找它们),请记住kcuu1 和兄弟姐妹不一定在所有终端模式下都正确和cuu1 et al 需要被使用(我不知道为什么或何时会出现这种情况)。
【解决方案2】:

是生成的转义序列

^[ ESC 字符和[A 有助于表示其UP Arrow 键。

所以作为^[[A 的组合,操作系统理解用户按下了UP Arrow 键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多