![为什么 TERM 变量不反映终端模拟器中的真彩色支持](https://linux22.com/image/212108/%E4%B8%BA%E4%BB%80%E4%B9%88%20TERM%20%E5%8F%98%E9%87%8F%E4%B8%8D%E5%8F%8D%E6%98%A0%E7%BB%88%E7%AB%AF%E6%A8%A1%E6%8B%9F%E5%99%A8%E4%B8%AD%E7%9A%84%E7%9C%9F%E5%BD%A9%E8%89%B2%E6%94%AF%E6%8C%81.png)
因此,使用 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
。