emacs 去除 shell 中的所有 ansi 颜色代码

Posted

技术标签:

【中文标题】emacs 去除 shell 中的所有 ansi 颜色代码【英文标题】:emacs strips away all ansi color codes in shells 【发布时间】:2012-03-03 23:13:06 【问题描述】:

我在 OS X 上使用 emacs 24 并且有一个奇怪的问题,我看不到任何颜色代码。 Emacs 似乎只是忽略了它们。我的动机是看到 C++ 项目的 cmake、llvm 和 googletest 框架的彩色输出。我想在编译模式下查看颜色,但是修复 comint 或 shell 模式的显示可能就足够了。

我的问题与许多其他问题的不同之处在于,我既看不到原始的 ansi 颜色序列,也看不到它们应该产生的颜色。似乎代码只是从输出中剥离出来的,但我不知道在哪里。

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

需要'ansi-color 开启ansi-color-for-comint-mode 尝试在 shell、eshell、multi-term、ansi-term 中生成任何 ansi-colored 输出均失败 将我的 TERM 设置为各种设置,包括 xtermxterm-colorxterm-256color

一切都无济于事。

编辑:

我的emacs配置分为我的personal settings和fork的emacs前奏,其中我修改了一些小设置,主要是添加包

【问题讨论】:

有一个similar question @syohex:不,它被问题中的“this is different from”条款所涵盖! 从您的屏幕截图中看,就像 echo 的输出 是彩色的,可能是常规的 compile-mode 突出显示。 最后一行作为编译模式的常规突出显示的一部分被着色,但这不是我期望从 ansi 代码中获得的蓝色/粗体组合。 我是 Emacs Prelude 的作者,那里没有任何设置可以去除颜色。我刚刚尝试了 shell-mode 和 ansi-term 并且那里的输出颜色很好。我会进一步调查。 【参考方案1】:

原来问题是zenburn-theme1.2引起的。 ansi-color-names-vector 存在一个错误,该错误已在 1.3 版(刚刚发布)中修复。如果您遇到类似问题,请确保升级您的 zenburn 版本。

【讨论】:

【参考方案2】:

我可以肯定地说,仅使用(ansi-color-for-comint-mode-on) 对我来说效果很好。 FWIW 你可以浏览我的 emacs 配置,但它相当大:)

https://github.com/aufflick/emacs.d

【讨论】:

以上是关于emacs 去除 shell 中的所有 ansi 颜色代码的主要内容,如果未能解决你的问题,请参考以下文章

emacs 24 ansi-term 似乎忽略了主题颜色

通过 Emacs 中的 shell 命令过滤文本

Emacs shell 中的屏幕:如何分离?

如何在emacs中打开IPython解释器?

Emacs shell 模式中的 Bash 自动完成

在新的 Emacs 24.3 中调整术语面