在Emacs中修改ansi-term颜色

6

下面红色椭圆中的文本难以阅读

enter image description here

当我使用C-u C-x =检查字体时,我看到以下内容:

enter image description here

所以我去更新了term-bold字体(如下),但颜色似乎与屏幕上实际显示的不符(根据字体定义,它应该是蓝色+黄色)。有什么想法吗?

enter image description here

3个回答

6
Emacs使用自己的终端颜色来渲染ansi颜色代码。您可以通过更改两个面来改变所引用的面的外观:
- term-color-yellow - term-color-blue 例如,将面term-color-yellow的前景属性更改为yellow3,并将面term-color-blue的背景属性更改为dark-blue,结果如下图所示:
enter image description here 这比原帖中的面更易读,类似于蓝色和黄色终端颜色的传统外观。

哦,奇怪。表面上看起来(没有双关语),如果有这些颜色的标准,那听起来像是Emacs的term-color-*设置中的一个错误? - phils
或许不是这样的——如果我运行 emacs -Q,加载 term,然后执行 M-x customize-face term-color-blue,那么该值就是 blue2,比你最初看到的要暗得多。你是否在 Emacs 配置中的其他地方修改了这些颜色? - phils
@phils 是的,你说得对,我不知不觉中已经在修改那些面孔,使它们兼容探戈主题(OP底部显示的颜色选择是顶部截图中使用的颜色选择)。 - Amelio Vazquez-Reina
如果您想以非交互方式进行更改,请使用以下命令:(set-face-attribute 'term-color-blue nil :foreground "DeepSkyBlue") 我需要在 term-exec-hook 中运行此命令,否则会出现错误。 - jcubic

3
最有效的方法是使用Emacs自定义组: M-x customize-group RET term RET 这将打开以下页面: enter image description here

3

它告诉你这个面孔继承term-bold,然后覆盖了继承的foregroundbackgroundinverse-video属性。

我猜颜色来自于你在终端中运行的shell(我假设是一个shell)。所以你可能需要在Emacs之外配置颜色?


感谢@phils,我问这个问题是因为我无法修改less命令的颜色(请参见我的另一个问题此处)。您在上面看到的是将ls命令通过分页器less传递后的输出。不确定谁负责这种着色。回答您的问题,是的,我正在Emacs中的M-x ansi-term缓冲区内运行shell(特别是Zsh)。 - Amelio Vazquez-Reina

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