VIM 中的 ANSI 颜色代码
Posted
技术标签:
【中文标题】VIM 中的 ANSI 颜色代码【英文标题】:ANSI Color Codes in VIM 【发布时间】:2012-05-22 11:47:34 【问题描述】:我有一个脚本可以生成一个带有 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 理解这些颜色代码?
感谢您的帮助。
【问题讨论】:
可能跨站重复:superuser.com/questions/358409/… 在vi.stackexchange.com/a/20496/3324 上查看答案:“如果你有一个足够现代的 vim,它具有 +terminal 功能,你可以使用:term cat somefile
,你会得到一个包含所有终端代码解释。这在大文件上可能比例如在大文件上效果更好。着色器,当我在 6000 行文件上放开 vim 时,它让我的 vim 变得异常缓慢。”
【参考方案1】:
我不确定 vim,但如果您只是查看日志文件(即您不需要能够编辑),您可以使用 less:
less -R
【讨论】:
【参考方案2】:使用 Charles Campbell 的 (Dr Chip) AnsiEsc 插件:
http://www.vim.org/scripts/script.php?script_id=302
之前:
:AnsiEsc<CR>
【讨论】:
我不得不将91m
和93m
分别更改为31m
和33m
,但除此之外效果很好。谢谢。
在哪里换? (vba 文件很复杂......)我仍然得到一些转义序列而不是颜色......
没关系。颜色已应用,但我认为我需要使用“隐藏”功能重新编译 vim 以隐藏转义序列。
无法让它与 vim 7.4 一起使用 -- 是否有其他解决方案?
Alex Efros 的 Charles Campbell (Dr Chip) AnsiEsc 有一个更新的分支:Improved AnsiEsc (github)。【参考方案3】:
由于接受的答案中的链接似乎不起作用,我找到了这个链接:https://github.com/vim-scripts/AnsiEsc.vim
【讨论】:
新的分叉版本:github.com/powerman/vim-plugin-AnsiEsc【参考方案4】:AnsiEsc
适用于基本的 ANSI 颜色代码,但不适用于其他代码。
问题是
有 很多 个 ANSI_escape_code s
超越基本\033[31m red \033[0m
;
AnsiEsc
是什么,与 \033[... unrecognized
有什么关系?
似乎AnsiEsc
只是不理会这些,但在 Vim 和 mvim 中有所不同。
欢迎在AnsiEsc
上提供更好的文档;
欢迎链接到 python 中的小型 ANSI 转义代码解析器。
来自 gnu ls 和 grep 的彩色输出的测试用例,带有TERM xterm-256color
和 macOS 终端 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。
【讨论】:
这个!我阅读了您的评论,并一直看到我的“基本”代码没有被脚本翻译。我遇到的问题是我认为 3x 和 9x 代码是基本的(常规和明亮)。 AnsiEsc 只处理 3x 代码。以上是关于VIM 中的 ANSI 颜色代码的主要内容,如果未能解决你的问题,请参考以下文章
在最新的VScode中运行Minitest - 显示Ansi颜色代码