如何使Emacs终端颜色与Emacs GUI颜色相同?

74

我在Ubuntu上使用Emacs进行编程(目前是Hardy Heron版本),我喜欢Emacs GUI默认文本的颜色。但是,当Emacs在终端运行时,默认的文本颜色与GUI中的不同并且很夸张。

我该如何使终端中的颜色与GUI中的颜色相匹配?


2
我想实现相反的效果。我喜欢在“-nw”模式下使用语法颜色。这可能吗? - aL3xa
你需要知道,当使用-nw运行Emacs时,默认的颜色主题是什么。 - SabreWolfy
2
我也想知道相反的问题的解决方案,如何将Emacs的颜色主题设置为类似于Emacs -nw中的颜色主题? - Bart Snapp
5个回答

124

您不必局限于终端的默认16(或更少)种颜色。现代终端会支持256种颜色(这将让您的界面看起来非常相似)。

不幸的是,让您的终端支持256种颜色是棘手的,并且因终端而异。这个页面对我帮助很大(但它已经过时了;我肯定在gnome-terminal和xfce4-terminal中使用了256种颜色;但您可能需要从源代码构建它们)。

一旦您的终端使用256种颜色,那么魔法般的调用是在调用emacs之前将您的终端类型设置为“xterm-256color”,例如:

env TERM=xterm-256color emacs -nw

或者,您可以在.bashrc文件中设置TERM:

export TERM=xterm-256color

您可以通过执行M-x list-colors-display在emacs中检查是否工作,这将显示16或256个绚丽的颜色。

如果它有效,请像其他人建议的那样查看color-theme

(您可能会在某些时候感到沮丧;上帝知道每次我尝试做类似的事情时都是如此。但请坚持下去;这非常值得。)


2
太好了,我在我的.profile文件中添加了"export TERM=xterm-256color",这样我就不需要每次运行它了。 - Matti Pastell
1
你也可以使用 TERM=xterm-256color emacs 命令启动 Emacs,而无需导出环境变量,从而在 256 色终端上运行 Emacs。 - SabreWolfy
如果从88或256色终端运行,以及使用TERM = xterm-256color或TERM = rxvt-unicode-256color,我的emacs会更改其调色板。但是,这些调色板都不是我在X版本中自定义的调色板。 - tijagi
2
如果有人在搜索如何在Mac OS X上在iTerm窗口中运行emacs -nw的解决方案时来到这里,请注意,您可以告诉iTerm将终端类型报告为“xterm-256color”。转到首选项➜配置文件➜终端并设置字段“报告终端类型”。 - mhucka

2
我不确定是否可能,因为图形用户界面可能比终端具有更多的功能(是的,我最近看到只有16种颜色的GUI终端)。这可能取决于终端的设置。无论如何,我会尝试使用Color Theme
另外,你为什么要同时在终端和图形界面中使用Emacs?一般来说,人们会发现其中一个更吸引人,并且只使用那个。如果你在远程使用Emacs,也许你想本地运行它并使用Tramp远程打开文件,或者作为root用户运行。

1
一个常见的用例是在本地使用GUI版本,在远程命令行上使用,可能通过几层SSH连接嵌套,在多种机器上使用。 - quazgar

0

我成功地使用了 Emacs 26。

我按照 Emacs FAQ 中的步骤来使 24 位色彩正常工作: https://www.gnu.org/software/emacs/manual/html_mono/efaq.html#Colors-on-a-TTY

然后我改变了 xterm-standard-colors 变量:

(set 'xterm-standard-colors
  '(("black"          0 (  0   0   0))
    ("red"            1 (255   0   0))
    ("green"          2 (  0 255   0))
    ("yellow"         3 (255 255   0))
    ("blue"           4 (  0   0 255))
    ("magenta"        5 (255   0 255))
    ("cyan"           6 (  0 255 255))
    ("white"          7 (255 255 255))
    ("brightblack"    8 (127 127 127))
    ("brightred"      9 (255   0   0))
    ("brightgreen"   10 (  0 255   0))
    ("brightyellow"  11 (255 255   0))
    ("brightblue"    12 (92   92 255))
    ("brightmagenta" 13 (255   0 255))
    ("brightcyan"    14 (  0 255 255))
    ("brightwhite"   15 (255 255 255)))
  )

我没有改变“bright*”颜色,因为我不使用它们,在X11 emacs的list-colors-display中似乎也不可用。

通过这两个更改,对我来说,X11和终端之间的颜色看起来几乎完全相同。


0
有点晚回复,但我遇到了黑色背景显示为灰色的问题。我通过调整调色板来解决它。
编辑 > 个人资料首选项 > 颜色 > 调色板

-1

我认为这种一般性的方式不太可能。使用终端时,通常会受到一些预定义颜色的限制(例如像gnome-terminal这样的工具可以调整这些颜色,但你仍然被限制在预定义的有限数量的颜色中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接