使用 grep 保持 vim 的颜色

MrU*_*ser 5 vim command-line bash grep

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

grep --color=always "$@" /var/log/syslog  > /tmp/fileOUT
vim /tmp/fileOUT
Run Code Online (Sandbox Code Playgroud)

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

ter*_*don 4

嗯,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
Run Code Online (Sandbox Code Playgroud)

上面的命令将为最后 50 行着色/var/log/syslog

在此输入图像描述