我在python中有一个名为blue
的函数,它使用ansi代码包装一个字符串,为字符串blue着色。当我在普通终端的python解释器中运行以下代码时:
>>> blue('hello')
'\x1b[94mhello\x1b[0m'
>>> print blue('hello')
hello
第二个hello
是蓝色的,正如我所料。
但是,如果我在运行emacs的python解释器中运行相同的命令,则不会考虑颜色(它只是默认颜色)。但是,并不是emacs只是忽略所有颜色指令的情况,因为例如我的zsh
终端,ls
等的颜色确实出现了。是否存在emacs尊重的一组不同的转义码?为什么emacs没有为我的文字上色?
答案 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