我最近从rxvt-unicode到英石。这意味着我从$TERM=rxvt-unicode-256color
到$TERM=st-256color
。
我对这个开关很满意,并想继续使用st
。但是,我注意到某些终端应用程序对新$TERM
值不满意。例如,emacs
不会加载st
全彩色支持,除非我“欺骗”它认为它$TERM
是可识别的,例如$TERM=xterm-256color
.
我的问题是:简单设置有什么风险$TERM=xterm-256color
?在我看来,重要的部分$TERM=*-256color
就是256color
部分,而价值*
似乎不太重要。
答案1
的值的重要部分TERM
是它与 terminfo 或 termcap 数据库中的条目匹配,并且该条目正确地描述了您的终端。
您无法合理地告诉软件您的终端是 XTerm,而它显然不是。认为其他终端仿真器使用与 XTerm 相同的输入/输出控制序列或提供所有相同的功能是完全错误的。
-256color
只是一个的一部分姓名,它对大多数软件没有固有意义(尽管极少数软件确实会寻找功能后缀)。它(主要)仅对人类有意义,因为是人类根据名称将 terminfo/termcap 数据库中的条目分组为家族。终端类型名称中的功能后缀主要用于人类,而不是软件。
对软件来说有意义的是数据库中的记录是否就是这么命名的表示该终端支持 256 色,并提供了在该类型终端上使用它们的控制序列。
也就是说,emacs 确实做了自己的事情,并且不仅仅依赖于 terminfo/termcap 数据库。例如,已知它的函数与againstframe-set-background-mode
的值匹配,这在现在可能是错误的。这里正确的方法是修复 emacs,以便它最终能够正确识别终端类型(以及、和其他类型)。 TERM
^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)
st-256color
putty-256color
vte-256color
进一步阅读
- 乔纳森·德博因·波拉德 (2019)。 ”学期”。 杂项。诺什工具集。
- 乔纳森·德博因·波拉德 (2019)。 ”终端能力”。 杂项。诺什工具集。
- https://unix.stackexchange.com/a/419092/5132
- https://stackoverflow.com/a/49364532/340790
- https://emacs.stackexchange.com/a/50161/20085
- $TERM 如何以及在哪里解释?
- ”特定于终端的初始化”。 emacs Lisp。自由软件基金会。