VIM中的ANSI颜色代码

fd3cxomn  于 2023-03-30  发布在  其他
关注(0)|答案(4)|浏览(217)

我有一个脚本,它生成一个日志文件,其中包含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理解这些颜色代码?
谢谢你的帮助。

zmeyuzjn

zmeyuzjn1#

我不太确定vim,但如果你只是查看日志文件(即你不需要能够编辑),你可以使用更少:

less -R
agxfikkp

agxfikkp2#

使用Charles坎贝尔(Dr Chip)的AnsiEsc插件:
http://www.vim.org/scripts/script.php?script_id=302
之前:

:AnsiEsc<CR>

gwo2fgha

gwo2fgha3#

由于接受的答案中的链接似乎不起作用,我找到了这个链接:https://github.com/vim-scripts/AnsiEsc.vim

j2datikz

j2datikz4#

AnsiEsc可以处理基本的ANSI颜色代码,但不能处理其他代码。问题是除了基本的\033[31m red \033[0m之外还有很多ANSI_escape_code;什么是AnsiEsc,任何程序都与\033[... unrecognized有什么关系?看起来AnsiEsc只是让这样的东西单独存在,但在Vim和mvim中不同。
AnsiEsc上更好的文档将受到欢迎;一个小的ANSI转义代码解析器在python中的链接将是受欢迎的。
gnu ls和grep的彩色输出测试用例,使用TERM xterm-256color和macosx Terminal版本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

相关问题