使用 grep 保留 vim 的颜色

使用 grep 保留 vim 的颜色

我喜欢 vim 突出显示 syslog 输出的方式。但是,我只想打开最近的输出。我试过

grep --color=always "$@" /var/log/syslog  > /tmp/fileOUT
vim /tmp/fileOUT

但它给出了像 [033;m blah blah 这样的 bash 颜色输出。如果我不这样做include --color=always,则根本没有颜色。我该怎么做?(我正在使用 bash)

答案1

出色地,vim 使用颜色模板文件grep用于语法高亮。这与使用 ANSI 转义序列(您提到的内容)的输出无关\[033;

我的 vim 没有 syslog 的样式文件,也没有为其添加颜色(我在 Debian 和 Ubuntu 14.04 上都检查过了)。如果您查看系统上的相关文件,您会发现它以定义要匹配的文件的正则表达式开头。因此,如果您使用/tmp/fileOUT该语法进行匹配,它应该是彩色的。不要使用--color=always,那只会把事情搞砸。

或者,你也可以使用source-highlight。使用 安装它sudo apt-get install source-highlight然后运行:

sudo tail -n 50 /var/log/syslog | source-highlight --out-format=esc -o STDOUT -s log

上述命令将为最后 50 行添加颜色/var/log/syslog

在此处输入图片描述

相关内容