有支持真彩色的终端吗?

61

我不明白为什么苹果的默认终端只支持16种颜色,iterm2等支持256种颜色,但是X11的终端支持真彩色(尽管其用户界面很差)。

我的问题分为两部分:

  1. 在当今这个时代,为什么终端无法支持更高的颜色(即高于16和256)?

    上次我问这个问题时,只得到了一些粗鲁的评论,比如“为什么你不自己写一个”...... 我是认真提问的,因为我不知道终端内部是如何工作以及为什么会有这种限制。是否简单地因为没有需求呢?

  2. 如果我错了,并且有好的终端支持真彩色,您能推荐一下吗?

    我的观察基于Mac,但其他平台的答案也受欢迎,因为它们可能对其他人有帮助。


1
所有这些颜色将用于什么? - user395760
6
我可以使用为GUI版本(即真彩色)设计的vim和emacs主题。 - user564376
1
@user564376 顺便说一下,现在可以在终端Vim中使用GUI颜色方案了 http://usevim.com/2013/05/31/24bit/ - Arnis Lapsa
3
这不是关于颜色的问题,而是关于消除调色板颜色索引的问题。对于任何尝试安装 vim 偏好色彩方案的人来说,它基本上是一道障碍。Truecolor 颜色设置可以简单有效地定义和处理实际颜色,而不是颜色样本参考,这会使应用程序不知道它们实际输出的颜色。再次强调,这不仅仅涉及颜色,而是涉及指定颜色的方式。 - Armen Michaeli
2020年,Mac OS终端仍不支持真彩色吗? - Caterina
4个回答

32

在早期终端机起源的时候,它们是硬件设备,其色彩受到硬件限制(即内存短缺)的限制。现在我们大多使用虚拟终端,这些终端通常以软件形式模拟这些旧设备。因此,一个问题是软件终端是否实际上模拟了具有历史限制的设备。

另一个问题是,在颜色、字体或任何方面不存在概念限制。这是因为终端由命令控制,这些命令只是特殊保留的字符序列。命令没有标准化,并且从一个终端到另一个终端不同。这正是为什么几乎没有实现这种奇特功能的原因,因为这将给用户留下两个限制选项:

  • 要求所有终端支持该功能(这实际上不可行)
  • 将软件的使用限制在仅支持该功能的一些特定终端上(这非常不愉快)。

我注意到的第三点是,大多数人实际上并不需要这些功能。


2
关于第三点,一个应用程序需要超过16种颜色但不需要等宽80x24字符网格的情况可能非常罕见。虽然有时让应用程序可由任何理解VT100或ANSI序列的终端仿真器程序使用可能是有利的,但那些需要超出此类终端提供功能的应用程序通常最好使用与终端完全不同的东西。 - supercat
@supercat,也就是图形显示,我非常赞同。 - vines
3
因为没有人了解它或使用/支持它,所以它只是不被需要。如果像vim等软件的开发人员真正支持它,那么它可能会给可恶的终端注入新的生命。 - osirisgothra

31

KDE Konsole支持真正的彩色,也就是说每个字符都可以有一个不同的24位颜色。

Xterm和现今大多数终端仿真器有256种颜色板,其中每个颜色都可以从完整的24位范围中选择。


除此之外,还有一个定义好的转义码用于“最接近该 r/g/b 元组调色板中的颜色”。在这种情况下,xterm 从其 256 种颜色中选择最接近的颜色,而显然 Konsole 则直接使用它。 - Tangent 128
FYI:我认为转义字符是 fg:“\e [38;2;<R>;<G>;<B>m”和 bg:“\e [48;2;<R>;<G>;<B>m”。 - docwhat
而且... \e[38;5;<0-255>m 或者 \e[38;5;<0-255>m 是针对256色调色板的,令人遗憾的是,利用256色调色板特性的程序并不支持24位/真彩色功能。许多人根本不知道它们的存在,因为直到最近才有文档记录。事实上,直到一年前,我甚至不知道除了fbterm(具有严重不兼容性)之外还有其他终端支持真彩色,我认为该序列甚至不是有效的SGR,类似于 \e[1 or 2;(r;g;b or 256-color index)} 或类似的东西,不要引用我的话! - osirisgothra

30

2
如果你在寻找Mac OS X的快速链接,我刚刚得到了iTerm2夜间版本,并且它与真实颜色完美配合使用: https://iterm2.com/downloads/nightly/#/section/home 回答关于为什么这很有用的问题:我在研究颜色,能够在终端中正确显示颜色对于调试/脚本/等等非常有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接