某些终端颜色不会显示在emacs中

时间:2015-03-06 18:49:05

标签: emacs ansi-colors

我在python中有一个名为blue的函数,它使用ansi代码包装一个字符串,为字符串blue着色。当我在普通终端的python解释器中运行以下代码时:

>>> blue('hello')
'\x1b[94mhello\x1b[0m'
>>> print blue('hello')
hello

第二个hello是蓝色的,正如我所料。

但是,如果我在运行emacs的python解释器中运行相同的命令,则不会考虑颜色(它只是默认颜色)。但是,并不是emacs只是忽略所有颜色指令的情况,因为例如我的zsh终端,ls等的颜色确实出现了。是否存在emacs尊重的一组不同的转义码?为什么emacs没有为我的文字上色?

1 个答案:

答案 0 :(得分:0)

我认为这是特定颜色代码的问题,终端没有足够的颜色(如上所述) here所说的只有8个。

事实上,

def blue(s):
     return "\x1b[34m" + s + "\x1b[0m"

在emacs 24.3.1的终端中为我工作。

仅供参考,与ls使用的颜色代码相同,给出here中的列表。 实际上,大胆蓝色的\x1b[01;34m也有效。

在上述链接中测试script会产生以下结果:

以下文字颜色代码有效:

\x1b[30m | black
\x1b[31m | red
\x1b[32m | green
\x1b[33m | yellow
\x1b[34m | blue
\x1b[35m | magenta
\x1b[36m | cyan
\x1b[37m | white

还支持相应的背景颜色:

\x1b[40m | black
\x1b[41m | red
\x1b[42m | green
\x1b[43m | yellow
\x1b[44m | blue
\x1b[45m | magenta
\x1b[46m | cyan
\x1b[47m | white

最重要的是,以下格式代码也有效:

\x1b[01m | bold
\x1b[04m | underline
\x1b[07m | inverted