我在Ubuntu上使用Emacs进行编程(目前是Hardy Heron版本),我喜欢Emacs GUI默认文本的颜色。但是,当Emacs在终端运行时,默认的文本颜色与GUI中的不同并且很夸张。
我该如何使终端中的颜色与GUI中的颜色相匹配?
您不必局限于终端的默认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
。
(您可能会在某些时候感到沮丧;上帝知道每次我尝试做类似的事情时都是如此。但请坚持下去;这非常值得。)
TERM=xterm-256color emacs
命令启动 Emacs,而无需导出环境变量,从而在 256 色终端上运行 Emacs。 - SabreWolfyemacs -nw
的解决方案时来到这里,请注意,您可以告诉iTerm将终端类型报告为“xterm-256color”。转到首选项➜配置文件➜终端并设置字段“报告终端类型”。 - mhucka我成功地使用了 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和终端之间的颜色看起来几乎完全相同。
我认为这种一般性的方式不太可能。使用终端时,通常会受到一些预定义颜色的限制(例如像gnome-terminal这样的工具可以调整这些颜色,但你仍然被限制在预定义的有限数量的颜色中)。
-nw
运行Emacs时,默认的颜色主题是什么。 - SabreWolfy