在尝试设置终端程序使用颜色时,我遇到了xterm-color
和xterm-256color
这两个选项 - 也就是说,您可以将您的TERM
环境变量设置为其中之一。 我想知道有人能描述一下这两者之间的区别吗?
我已经在我的Ubuntu服务器和Mac上搜索了文档,但没有找到任何内容。 我只能在/usr/share/terminfo
目录下找到各种二进制文件。
xterm-256color
是启用了支持 256 种颜色的 Xterm 终端。而 xterm-color
则是支持 8 种颜色的 Xterm 的旧版本。由于 xterm-color
描述的是一个功能较少且不太可能使用的 Xterm 变体,因此不建议使用它。通常情况下,您会希望使用 xterm
、xterm-16color
或 xterm-256color
。
特别地,xterm-256color
是从 Mac OS X 10.7 Lion 开始终端默认的值,其次推荐使用的值为 xterm-16color
或 xterm
(仅支持 8 种 ANSI 颜色)。在 10.7 之前,xterm-color
是默认值,因为终端不支持推荐的 Xterm terminfo 值中描述的某些关键功能,例如背景颜色擦除(BCE)、现代代码用于切换主/备用屏幕和支持 256 种颜色等。
有时人们会明确将 TERM
设置为 xterm-color
(而不是推荐的 Xterm 值),以禁用功能或解决特定计算机上可用的 terminfo 值与终端仿真器之间的不兼容性问题。
请注意,从技术上讲,终端应该具有自己的最新的 terminfo 值,以准确描述其支持的功能,而不是使用 Xterm 的值。但是:
nsterm
表示来自 NeXTSTEP 的终端祖先。显然,有人最近更新了 nsterm
(在过去的几年中),但我不知道这是否已经纳入了 ncurses 发行版中,并且它可能与 10.7 中的终端不完全兼容。$TERM
以(或等于)xterm
开头。因此,某些用户仍需要了解在终端中使用推荐的 Xterm 值以实现与这些值的兼容性。infocmp
命令查看当前的terminfo设置或比较两个不同的设置,例如,infocmp xterm-color xterm-256color
将显示这两者之间的所有差异。xterm-color
声明的颜色数量。我一定是在某个地方误读了颜色数量。顺便说一下,关于Xterm,我总是听从您的意见——您通常是我的信息来源。 - Chris Pagexterm-256color
是Terminal.app终端。它们之间的差异并不小 - 我在Ubuntu上使用infocmp比较了xterm-color
和xterm-256color
,并对其进行了归一化处理,发现有很多差异。我甚至可以说xterm-256color
不再是xterm了。终端数据库提供了详细信息。它最初被设计为通用终端描述符,但从一开始就没有成功,因为它与XFree86 xterm不匹配,特别是颜色行为(即背景颜色擦除功能)。现在没有人使用nxterm了。最初,xterm-color对应于20世纪90年代中期的color_xterm。1996年,它被XFree86 xterm所取代。
xterm-256color终端描述是通过修改颜色行为(添加更多颜色,但不包括背景颜色擦除功能)从(XFree86)xterm终端描述构建而成。使用infocmp查看区别:
$ infocmp xterm-color xterm-256color |wc -l
122
$ infocmp xterm xterm-256color |wc -l
14
$ infocmp xterm xterm-256color
comparing xterm to xterm-256color.
comparing booleans.
ccc: F:T.
comparing numbers.
colors: 8, 256.
pairs: 64, 32767.
comparing strings.
initc: NULL, '\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\'.
oc: NULL, '\E]104\007'.
rs1: '\Ec', '\Ec\E]104\007'.
setab: '\E[4%p1%dm', '\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m'.
setaf: '\E[3%p1%dm', '\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m'.
setb: '\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
setf: '\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m', NULL.
TERM
环境变量,许多应用程序使用该变量来决定如何使用终端。此外,据报道,Mac OS X 10.7 默认使用 xterm-256color 作为 $TERM 值。这与 xterm-color 有几个不同之处,特别是对 bce 的支持。它还与推荐的 nsterm-256color 不同(infocmp 报告了 111 个差异)。