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