我最近从rxvt-unicode切换到st。这意味着我从$TERM=rxvt-unicode-256color
到$TERM=st-256color
。
我对开关很满意,并希望继续使用st
. 但是,我注意到某些终端应用程序对新$TERM
值不满意。例如,除非我“欺骗”它认为这是可识别的东西,否则emacs
不会加载全彩色支持。st
$TERM
$TERM=xterm-256color
我的问题是:简单设置的风险是什么$TERM=xterm-256color
?在我看来,重要的部分$TERM=*-256color
是256color
部分,而价值*
似乎不那么重要。
值的重要部分
TERM
是它与 terminfo 或 termcap 数据库中的条目匹配,并且该条目正确描述了您的终端。你不能合理地告诉软件你的终端是 XTerm,而它显然不是。认为其他终端仿真器使用与 XTerm 相同的输入/输出控制序列或提供所有相同的功能是完全错误的。
-256color
只是名称的一部分,它对大多数软件没有内在含义(尽管很少有人会寻找功能后缀)。它(主要)只对人类有意义,因为是人类将 terminfo/termcap 数据库中的条目按名称分组到族中。终端类型名称中的功能后缀主要用于人类,而不是软件。对软件有意义的是数据库中的记录是否表明该终端支持256色,并提供在该类型终端上使用它们的控制序列。
也就是说,emacs 确实做自己的事情,而不是简单地依赖于 terminfo/termcap 数据库。例如,已知它的
frame-set-background-mode
函数与 against 的值相匹配TERM
,^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)
现在这可能是错误的。此处正确的方法是修复 emacs,以便最终正确识别st-256color
终端类型(以及putty-256color
、vte-256color
和其他)。进一步阅读