Terminal 为什么Gnome终端中的Emacs语法高亮显示会受到终端颜色主题化的影响?

Terminal 为什么Gnome终端中的Emacs语法高亮显示会受到终端颜色主题化的影响?,terminal,syntax-highlighting,emacs24,Terminal,Syntax Highlighting,Emacs24,我正在Ubuntu 14.04.1下使用Emacs24.3。我想通过GTK接口和Gnome终端使用它,使用emacs-nw。不幸的是,我使用的任何主题的颜色在终端中都会略有不同 我已经设置好,以便在Gnome终端下,TERM=xterm-256color。然而,我也定制了我的终端颜色——“黑色”实际上是#151515,“红色”是#DA4939,等等。Emacs似乎接近于为每个主题显示正确的颜色,但从来都不太正确。我使用的主题是主题的deftheme-风格 我不明白为什么定制终端颜色会影响这一点-

我正在Ubuntu 14.04.1下使用Emacs24.3。我想通过GTK接口和Gnome终端使用它,使用
emacs-nw
。不幸的是,我使用的任何主题的颜色在终端中都会略有不同

我已经设置好,以便在Gnome终端下,
TERM=xterm-256color
。然而,我也定制了我的终端颜色——“黑色”实际上是
#151515
,“红色”是
#DA4939
,等等。Emacs似乎接近于为每个主题显示正确的颜色,但从来都不太正确。我使用的主题是主题的
deftheme
-风格

我不明白为什么定制终端颜色会影响这一点-使用
TERM=xterm-256color
,Emacs应该可以使用比通常16种颜色更大的调色板。在
列表颜色显示
的输出中,
黑色
列为
#000000
,但显示为
#151515
;但是,还有一个
color-16
,它也被列为
#000000
,并正确显示。因此,Emacs确实能够显示
#000000

左边是Emacs GTK,它正确显示了主题颜色。右边是
emacs-nw
runingnome终端,所有颜色都与主题指定的颜色略有不同。我在这张图片中使用的主题只是一个例子;任何主题都会发生这种情况。我的满满的

如何让Emacs在Gnome终端中显示正确的主题颜色,而不删除终端调色板的自定义设置?

几个问题:

1) 我相信,当您自定义“终端颜色”时,它们与256调色板的前16个颜色项重叠。因此,如果emacs告诉终端使用0-15的颜色,它们将显示为您在终端首选项中实际设置的颜色。它似乎并没有特别影响到你,但意识到这一点是很好的

2) 对于剩下的256种颜色,我相信只有256种(如果您的终端将前16种颜色重新着色,则可能是241种)颜色是您需要的

除非您选择与GTK主题颜色完全匹配,否则让它们完全相同是不可能的。看起来您的emacs在自行选择256种最接近的可用颜色方面做得相当好


如果您想了解我所说的实际操作,请尝试下载并运行这样的脚本,然后在您的终端中运行它。我敢打赌,当您更改终端颜色时,您将看到条目
000
015
相应更改,而其余颜色始终相同。

我正在考虑创建一个新的终端配置文件,采用“正常”颜色方案,专门用于EMAC。但如果我正确理解第1点,这可能不会有帮助。经过反射,256色调色板将无法显示三个八位组
#xxyyz
方案所表示的全部可能颜色,这是有道理的。哈!我甚至不能让我的字体在窗口和终端上显示相同的内容。你应该数你的祝福。:)@dg99我只是对所有东西都使用相同的一个:P