【发布时间】:2011-09-26 20:04:40
【问题描述】:
emacs shell 模式下的配色方案显示为原色(高饱和度)并且看起来很原始,并且某些颜色(例如紫色)不会出现:
我想调整颜色,使它们使用更多的中间颜色,并且看起来更柔和,就像在 gnome-terminal 中一样:
如何在 shell 模式下更改配色方案?我在 emacs 中找不到与 shell 模式相关的字体分配,这可能是因为颜色是由 shell 给出的,并且与 emacs 中的其他字体分配不同。
【问题讨论】:
emacs shell 模式下的配色方案显示为原色(高饱和度)并且看起来很原始,并且某些颜色(例如紫色)不会出现:
我想调整颜色,使它们使用更多的中间颜色,并且看起来更柔和,就像在 gnome-terminal 中一样:
如何在 shell 模式下更改配色方案?我在 emacs 中找不到与 shell 模式相关的字体分配,这可能是因为颜色是由 shell 给出的,并且与 emacs 中的其他字体分配不同。
【问题讨论】:
一些color-themes 被设计为在终端中看起来不错。如果它们都不适合,您可以使用一个作为您自己主题的起点。我像这样为 X/terminal 选择合适的主题:
(if (eq (window-system) 'x)
(color-theme-gray30)
(color-theme-emacs-nw))
【讨论】:
当在 shell 模式下运行的程序发出 ANSI 转义字符以将显示颜色设置为例如洋红色时,Emacs 会截取这些转义字符并使用该前景色“洋红色”创建一个彩色叠加层。所以这里没有颜色主题交互,也没有特定于 shell 的自定义项。
不过,拦截是由ansi-color.el 中的函数进行的,看起来您可以自定义ansi-color-names-vector,因此将“PaleBlue”用于“蓝色”,M-x customize RET ansi-color-names-vector,或者尝试放置类似在您的 emacs 配置中执行以下操作:
(setq ansi-color-names-vector
["black" "red" "green" "yellow" "PaleBlue" "magenta" "cyan" "white"])
要查看可用的颜色名称,请使用M-x list-colors-display,或输入十六进制颜色,例如“#ccccff”。
【讨论】: