因此,使用 st 终端模拟器TERM
将变量设置为st-256color
,甚至tput colors
给了我 256。
但从多个来源和我运行的测试来看,ST 似乎确实支持 TRECOLOR。看https://github.com/termstandard/colors#complete-supporting
许多程序和应用程序似乎依赖TERM
或COLORTERM
(很少)检测颜色支持,这似乎有问题。
网上的大多数信息强烈建议不要手动设置TERM
自己,所以我没有看到问题是如何解决的?
TERM
是 ST 没有正确设置变量的问题吗?是否是应用程序的错误没有以不同的方式检查颜色功能?
在这种情况下检测真彩色支持的理想方法是什么?
答案1
这TERM
不仅仅是一个变量。它指定应使用哪些终端设置。基本上,终端可以理解很多转义序列 - 但不同的终端可以对相同的转义序列执行不同的操作。或者同一操作需要不同的转义序列。这是通过终端转义序列数据库解决的:terminfo
。
转到/usr/lib/terminfo
(或/usr/share/terminfo
,这取决于 *nix 的风格),您会发现很多文件(分组在目录中) - 这些文件实际上TERM
指向。这些是编译后的二进制文件,带有一系列对:控制序列 = 转义序列。
您可以运行infocmp
来解码 terminfo 的文件。
运行man 5 terminfo
以获得控制序列的完整列表和描述。
如果您想在终端上显示真彩色 - 查找或(自己编写)相应的terminfo
文件。之后 - 您可以使用 来选择它TERM
。