为什么 TERM 变量不反映终端模拟器中的真彩色支持

为什么 TERM 变量不反映终端模拟器中的真彩色支持

因此,使用 st 终端模拟器TERM将变量设置为st-256color,甚至tput colors给了我 256。

但从多个来源和我运行的测试来看,ST 似乎确实支持 TRECOLOR。看https://github.com/termstandard/colors#complete-supporting

许多程序和应用程序似乎依赖TERMCOLORTERM(很少)检测颜色支持,这似乎有问题。

网上的大多数信息强烈建议不要手动设置TERM自己,所以我没有看到问题是如何解决的?

TERM是 ST 没有正确设置变量的问题吗?是否是应用程序的错误没有以不同的方式检查颜色功能?

在这种情况下检测真彩色支持的理想方法是什么?

答案1

TERM不仅仅是一个变量。它指定应使用哪些终端设置。基本上,终端可以理解很多转义序列 - 但不同的终端可以对相同的转义序列执行不同的操作。或者同一操作需要不同的转义序列。这是通过终端转义序列数据库解决的:terminfo

转到/usr/lib/terminfo(或/usr/share/terminfo,这取决于 *nix 的风格),您会发现很多文件(分组在目录中) - 这些文件实际上TERM指向。这些是编译后的二进制文件,带有一系列对:控制序列 = 转义序列。

您可以运行infocmp来解码 terminfo 的文件。

运行man 5 terminfo以获得控制序列的完整列表和描述。

如果您想在终端上显示真彩色 - 查找或(自己编写)相应的terminfo文件。之后 - 您可以使用 来选择它TERM

相关内容