我想知道是否可以使 emacs 在 gnu 屏幕或 tmux 会话中运行时使用与TERM=xterm
.在 gnu 屏幕或 tmux 会话中, TERM=screen
emacs 使用与 时不同的颜色集TERM=xterm
。
例如,当 时TERM=xterm-256color
, 的前景色font-lock-comment-face
是“Firebrick”。但当 时TERM=screen-256color
,它被设置为“chocolate1”。
为了使 tmux 正常工作,TERM 变量必须设置为屏幕或某些衍生产品,因此重置 TERM 对我来说不是一个选择。
答案1
这的定义font-lock-comment-face
包括针对不同颜色支持情况的许多变体。
chocolate1
当至少有 88 种颜色可用并且“背景”为“深色”时,使用该变体。Firebrick
当至少有 88 种颜色可用并且“背景”为“浅色”时,使用该变体。
差异是由一些代码引起的,这些代码赋予以xterm
、rxvt
、dtterm
和开头的 TERM 值特殊含义eterm
:它认为它们具有“浅色”背景。
您应该能够将frame-background-mode
*自定义为其light
值,以始终使用“浅色”颜色变体。
如果您的 Emacs 还不够新,无法拥有自己的term/screen.el
,那么您还需要为自己调整一个,以进行适当的颜色调整调用。您可以使用来自Emacs主干,或者我有要点包括一个.emacs.d/lisp/term/screen.el
(带有一些额外的位来识别由提供的修饰符+箭头/Home/End序列多路复用器的xterm-keys
选项),以及.emacs
让它自动加载所需的修改。
当然,仍然可能有其他代码直接检查 TERM 值并对screen
- 和xterm
- 类似值执行不同的操作......
* Mx自定义变量框架背景模式