我有一个脚本可以生成一个带有 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 理解这些颜色代码?
谢谢你的帮助。
我有一个脚本可以生成一个带有 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 理解这些颜色代码?
谢谢你的帮助。
我不确定 vim,但如果您只是查看日志文件(即您不需要能够编辑),您可以使用更少:
less -R
使用 Charles Campbell 的 (Dr Chip) AnsiEsc 插件:
http://www.vim.org/scripts/script.php?script_id=302
前:
:AnsiEsc<CR>
由于接受的答案中的链接似乎不起作用,我找到了这个链接:https ://github.com/vim-scripts/AnsiEsc.vim
AnsiEsc
适用于基本的 ANSI 颜色代码,但不适用于其他代码。问题是除了 basic 之外还有很多ANSI_escape_code\033[31m red \033[0m
;什么是AnsiEsc
,有什么程序,有什么关系\033[... unrecognized
?似乎AnsiEsc
只留下了这样的问题,但在 Vim 和 mvim 中有所不同。
欢迎提供更好的文档AnsiEsc
;欢迎链接到 python 中的小型 ANSI 转义代码解析器。
来自 gnu ls 和 grep 的彩色输出的测试用例,TERM xterm-256color
以及 macosx 终端版本 2.3:
#!/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。