调整 shell 模式配色方案

问题描述 投票:0回答:3

emacs shell 模式下的配色方案显示为原色(高饱和度)并且看起来很原始,并且某些颜色(例如紫色)不会出现:

enter image description here

我想调整颜色,使它们使用更多的中间颜色并且看起来更柔和,就像在 gnome-terminal 中一样:

enter image description here

如何在 shell 模式下更改配色方案?我在 emacs 中找不到与 shell 模式相关的字体分配,这可能是因为颜色是由 shell 给出的,并且与 emacs 中的其他字体分配不同。

shell emacs colors themes
3个回答
19
投票

当在 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”。


1
投票

一些颜色主题被设计为在终端中看起来不错。如果它们都不适合,您可以使用其中一个作为您自己的主题的起点。我为 X/terminal 选择适当的主题,如下所示:

(if (eq (window-system) 'x)
    (color-theme-gray30)
    (color-theme-emacs-nw))

0
投票

这仍然是搜索更改外壳默认颜色时的第一个结果,但它确实没有帮助。原因是,所解释的一些机制在较新版本的 Emacs 中已被弃用。

这对我来说确实有效:

(setq ansi-color-faces-vector
      [default
       ansi-color-red
       ansi-color-green
       ansi-color-yellow
       ansi-color-blue
       ansi-color-magenta
       ansi-color-cyan
       ansi-color-white])

(custom-set-faces
 '(ansi-color-black ((t (:background "#272822" :foreground "#272822"))))
 '(ansi-color-red ((t (:background "#F92672" :foreground "#F92672"))))
 '(ansi-color-green ((t (:background "#A6E22E" :foreground "#A6E22E"))))
 '(ansi-color-yellow ((t (:background "#E6DB74" :foreground "#E6DB74"))))
 '(ansi-color-blue ((t (:background "#66D9EF" :foreground "#66D9EF"))))
 '(ansi-color-magenta ((t (:background "#AE81FF" :foreground "#AE81FF"))))
 '(ansi-color-cyan ((t (:background "#A1EFE4" :foreground "#A1EFE4"))))
 '(ansi-color-white ((t (:background "#F8F8F2" :foreground "#F8F8F2")))))

(硬编码颜色适用于 Monokai,您可以根据需要调整它们)

© www.soinside.com 2019 - 2024. All rights reserved.