VIM中的ANSI颜色代码

51

我有一个脚本,它生成带有 ANSI 颜色代码的日志文件,如下所示:

[2012-05-14 18:00:02] ^[[0mINF: -- Starting update script --^[[0m
[2012-05-14 18:00:29] ^[[91mERR: Improper date, entry being ignored.^[[0m

有没有办法让Vim理解这些颜色代码?

感谢任何帮助。


可能是跨站点重复问题:http://superuser.com/questions/358409/how-can-i-tell-vim-to-show-ansi-escape-codes-properly - Ciro Santilli OurBigBook.com
如果你的Vim版本足够新,支持+terminal功能,那么你可以执行:term cat somefile命令,这样就会得到一个解释了所有终端代码的缓冲区。相较于Colorizer,对于大文件而言,这种方式可能更为高效。在我让它处理一个6000行的文件时,Colorizer使我的Vim变得极其缓慢。 - sideshowbarker
4个回答

62

我不确定vim是否适用,但如果你只是查看日志文件(即无需编辑),你可以使用less:

less -R

这个工具非常有用,没有人抱怨它并没有完全回答问题。 - undefined

45

1
我不得不将91m93m分别更改为31m33m,但除此之外它运行得非常好。谢谢。 - Blake
改在哪里?(VBA文件相当混乱...)我仍然得到一些转义序列而不是颜色... - fakeleft
没关系。颜色已经应用了,但我认为我需要重新编译带有“conceal”功能的vim来隐藏转义序列。 - fakeleft
1
无法在vim 7.4上运行此程序--有没有其他解决方案? - serup
5
Charles Campbell(Dr Chip)的 AnsiEsc 有一个更新的分支,由 Alex Efros 维护:Improved AnsiEscgithub)。 - dexteritas
显示剩余3条评论

6

1
新的分支版本:https://github.com/powerman/vim-plugin-AnsiEsc - Eric

6

AnsiEsc 适用于基本 ANSI 颜色代码,但不适用于其他代码。 问题在于除了基本的 \033[31m 红色 \033[0m 之外, 还有很多ANSI_escape_code。 对于 \033[... 未识别 的代码,AnsiEsc 似乎只是将其留下,但在 Vim 和 mvim 中表现不同。

更好的关于 AnsiEsc 的文档将是受欢迎的; 同时,链接到一个小的 Python ANSI 转义代码解析器也将是受欢迎的。

使用 TERM xterm-256color 和 macOSX 终端版本2.3 进行 gnu ls 和 grep 的彩色输出测试案例:

#!/bin/bash
# test https://en.wikipedia.org/wiki/ANSI_escape_code#Colors from gnu ls and grep

mkdir bluedir  2> /dev/null
ls -d --color=always  bluedir  > ls.out

echo red-hot | grep --color=always  red  > grep.out

od -c ls.out
# 0000000  033   [   0   m 033   [   3   4   m   b   l   u   e   d   i   r
# 0000020  033   [   0   m  \n                                            
# Vim 7.3 :AnsiEsc "bluedir" blue, \033[0m as is
# mvim 8.0 :AnsiEsc "bluedir" works

od -c grep.out
# 0000000  033   [   0   1   ;   3   1   m 033   [   K   r   e   d 033   [
# 0000020    m 033   [   K   -   h   o   t  \n                            
# both Vim and mvim display as is

还可以参考可爱的bash脚本colors256


我看了你的评论,发现我的“基础”代码没有被脚本翻译。问题在于我将3x和9x代码视为基础(普通和亮色)。 AnsiEsc仅处理3x代码。 - Marcel Wilson

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