我最近从rxvt-unicode转到了st。这意味着我从$TERM=rxvt-unicode-256color到$TERM=st-256color。
我对这个开关很满意,并希望继续使用st。但是,我注意到某些终端应用程序对新的$TERM值不满意。例如,emacs将不会在st中加载完全的颜色支持,除非我“骗”它认为$TERM是某种可以识别的东西,比如$TERM=xterm-256color。
我的问题是:简单设置$TERM=xterm-256color有什么风险?在我看来,$TERM=*-256color的重要部分是256color部分,而*的价值似乎不那么重要。
发布于 2019-04-25 18:09:19
TERM值的重要部分是它匹配了terminfo或termcap数据库中的条目,并且该条目正确地描述了您的终端。
你不能合理地告诉软件你的终端是XTerm,而它显然不是。如果认为其他终端模拟器使用与XTerm相同的输入/输出控制序列或提供所有相同的功能,这是一个彻底的错误。
-256color只是一个名称的一部分,它对大多数软件没有固有的意义(尽管很少有人会寻找特性后缀)。它(主要)只对人类有意义,因为是人类将终端/术语数据库中的条目按名称分组。终端类型名称中的特征后缀主要用于人类,而不是软件。
对软件有意义的是,这样命名的数据库中的记录是否表示终端支持256种颜色,并提供了在这种终端上使用它们的控制序列。
也就是说,emacs确实会做自己的事情,而不是简单地依赖terminfo/termcap数据库。例如,它的frame-set-background-mode函数与TERM与^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)的值相匹配,这可能是错误的。这里的正确方法是修复emacs,以便最终正确地识别st-256color终端类型(以及putty-256color、vte-256color和其他类型)。
https://unix.stackexchange.com/questions/515471
复制相似问题