Emacs在终端中去除所有的ANSI颜色代码

14
我正在使用OS X上的emacs 24,遇到一个奇怪的问题,就是无法看到任何颜色代码。Emacs似乎只是忽略它们。我的动机是要从C++项目的cmake、llvm和googletest框架中看到彩色输出。我想在编译模式下看到颜色,但修复comint或shell模式的显示可能已经足够了。
与其他许多人不同的是,我的问题在于既看不到原始的ansi颜色序列,也看不到它们应该产生的颜色。似乎代码只是从输出中剥离出来了,但我找不到它们的位置。

ANSI codes not rendered correctly

我尝试了一些显而易见的事情,比如:

  • 需要 'ansi-color
  • 打开 ansi-color-for-comint-mode
  • 在 shell、eshell、multi-term 和 ansi-term 中都无法产生任何带有 ansi 颜色的输出
  • 将 TERM 设置为各种设置,包括 xtermxterm-colorxterm-256color

但这些都没有成功。

编辑:

我的 Emacs 配置分为我的 个人设置 和一个 分支 的 Emacs Prelude,在其中我修改了一些次要设置,主要是添加了一些包。


这里有一个类似的问题 - syohex
1
@syohex:不,这已经被问题中的“这与...不同”条款所覆盖! - tripleee
从你的截图来看,我认为echo的输出已经被着色了,很可能是由于常规的compile-mode高亮显示引起的。 - tripleee
最后一行以编译模式的正常高亮显示着色,但它并不是我预期的蓝色/加粗组合的ansi代码。 - jupp0r
3
我是Emacs Prelude的作者,我没有在其中设置任何会剥夺颜色的选项。我刚刚尝试了shell-mode和ansi-term,在那里输出的内容都被正确地显示出颜色。我会进一步调查。 - Bozhidar Batsov
显示剩余8条评论
2个回答

3

原来问题是由zenburn-theme 1.2引起的。其中ansi-color-names-vector存在一个错误,这个问题在版本1.3中得到了修复(刚刚发布)。如果您遇到类似的问题,请确保升级您的 zenburn 版本。


2
我可以肯定地说,只使用(ansi-color-for-comint-mode-on)对我来说效果很好。顺便说一下,你可以浏览我的emacs配置,但它相当大 :)。 https://github.com/aufflick/emacs.d

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