各种 $TERM 变量之间有什么区别?

各种 $TERM 变量之间有什么区别?

我使用 .vt100、vt102、vt220 和 xterm 尝试过top

但我找不到他们的区别。还有其他术语类型吗?他们有什么区别?

答案1

xterm应该是 的超集vt220,换句话说,它很像,vt220但具有更多功能。例如,xterm通常支持颜色,但vt220实际上不支持。您可以通过按zinside进行测试top

同样,vt220比 具有更多的功能vt100。例如,vt100似乎不支持F11F12

通过运行来比较它们的功能和转义序列,您的系统认为它们具有infocmp <term type 1> <term type 2>,例如infocmp vt100 vt220

完整列表因系统而异。您应该能够使用toetoe /usr/share/terminfo、 或获取列表find ${TERMINFO:-/usr/share/terminfo}。如果这些都不起作用,您还可以看看ncurses 的 terminfo.src,这是目前大多数发行版获取数据的地方。

但除非你的终端看起来像或者,您可能只想使用其他一些:

  • xterm-color- 如果您使用的是较旧的系统并且颜色不起作用
  • puttykonsoleEtermrxvtgnome等 - 如果您正在运行 XTerm 模拟器,并且某些功能键、Backspace、Delete、Home 和 End 无法正常工作
  • screen- 如果在 GNU 屏幕(或 tmux)内运行
  • linux- 通过 Linux 控制台登录时(例如Ctrl+Alt+F1
  • dumb- 当一切都被打破时

答案2

不带任何参数运行 infocmp 将为您提供所有可用的 xterm 替代方案:

$> infocmp
xterm|xterm-debian|X11 terminal emulator,
    am, bce, km, mc5i, mir, msgr, npc, xenl,
    colors#8, cols#80, it#8, lines#24, pairs#64,
    ...

欲了解更多信息,请检查

$> ls /lib/terminfo/x/
xterm         xterm-256color  xterm-color     xterm-debian    xterm-mono
xterm-r5      xterm-r6        xterm-vt220     xterm-xfree86

答案3

在过去,“终端”是单独的设备。有些是纸和墨带,有些是“玻璃钥匙孔”。有很多制造商。除了文本之外,制造商还需要非文本(不可见)方式来调用特定于终端的行为,即“控制字符”和“转义序列”。由于没有标准,不同的制造商可以为相同的功能(在他们自己的终端上)选择不同的转义序列。设置环境变量不是设置每个转义序列(在此终端上,这是如何清除屏幕,这是如何定位光标等),而是TERM充当终端信息数据库的键,保存该终端的所有设置。看man terminfo terminfos tput stty

Digital Equipment Corporation (DEC) 制造了一款流行的玻璃按键机 VT100,随后又推出了 VT220,其控制序列被 Unix 社区采用。

“控制字符”(与“字符”不同,其第 7 位 (0x40) 已被清除,请参阅man ascii)继承自更早期的 TeleType(由 The Phone Company 制造的复杂机电奇迹(当时只有一个) )) 用于文本传输。

您在图形画布、窗口、屏幕上运行“终端模拟器”时,只能通过使用TERM.TERM用于使“大部分兼容”、串行连接的不同硬件机器与 Unix“工作”。

串行通信的历史非常有趣,正如它在 Unix/Linux 设备接口中的反映一样。如果它有效,就保留它。如果出现“更好”的方法,请使用它。总有人在某个地方使用 110 波特的 Model 33 TeleType。

答案4

echo $TERM:

在 tmux 内部:给出screen-256color

外部:给予xterm-256color

某些键(例如Home 和 ) 的End行为有所不同。

键入cat然后按一些键即可查看不同之间的区别$TERM


infocmp xterm-256color screen-256color | less

NULL屏下多- 256 色

    comparing xterm-256color to screen-256color.
        comparing booleans.
        bce: T:F.
        ccc: T:F.
        mc5i: T:F.
        npc: T:F.
        comparing numbers.
        comparing strings.
        acsc: '``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~', '++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~'.
        clear: '\E[H\E[2J', '\E[H\E[J'.
        cnorm: '\E[?12l\E[?25h', '\E[34h\E[?25h'.
        cuu1: '\E[A', '\EM'.
        cvvis: '\E[?12;25h', '\E[34l'.
        ech: '\E[%p1%dX', NULL.
        enacs: NULL, '\E(B\E)0'.
        flash: '\E[?5h$<100/>\E[?5l', '\Eg'.
        initc: '\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\', NULL.
        invis: '\E[8m', NULL.
        is2: '\E[!p\E[?3;4l\E[4l\E>', '\E)0'.
        kDC: '\E[3;2~', NULL.
        kEND: '\E[1;2F', NULL.
        kHOM: '\E[1;2H', NULL.
        kIC: '\E[2;2~', NULL.
        kLFT: '\E[1;2D', NULL.
        kNXT: '\E[6;2~', NULL.
        kPRV: '\E[5;2~', NULL.
        kRIT: '\E[1;2C', NULL.
        ka1: '\EOw', NULL.
        ka3: '\EOy', NULL.
        kb2: '\EOu', NULL.
        kbeg: '\EOE', NULL.
        kc1: '\EOq', NULL.
        kc3: '\EOs', NULL.
        kend: '\EOF', '\E[4~'.
        kent: '\EOM', NULL.
        kf13: '\E[1;2P', NULL.
        kf14: '\E[1;2Q', NULL.
        kf15: '\E[1;2R', NULL.
        kf16: '\E[1;2S', NULL.
        kf17: '\E[15;2~', NULL.
        kf18: '\E[17;2~', NULL.
        kf19: '\E[18;2~', NULL.
        kf20: '\E[19;2~', NULL.
        kf21: '\E[20;2~', NULL.
        kf22: '\E[21;2~', NULL.
        kf23: '\E[23;2~', NULL.
        kf24: '\E[24;2~', NULL.
        kf25: '\E[1;5P', NULL.
        kf26: '\E[1;5Q', NULL.


相关内容