使用 vim 作为过滤器来为命令行输出着色

使用 vim 作为过滤器来为命令行输出着色

我喜欢 vim 的语法高亮功能。它在统一差异方面表现特别好,所以我经常这样使用它:

diff -pu old new | vim -

我知道一个技巧使用 vim 作为更好的 less,但我真正想要的是一种只输出彩色输出(无分页)的方法。我相信这是可以做到的,但怎么做呢?

答案1

如果您想要 ANSI 输出,我不知道如何实现,但 Vim 有一个 :TOhtml 命令,我一直在我的一个 Makefile 中使用(此处简化):

vim -gf --noplugin -c 'if has("gui_running") | stop | endif' \
    -c 'runtime syntax/2html.vim' \
    -c 'w foo.html' -c 'qa!' foo

第一行运行“stop如果 GUI 正在运行,则运行“ ”实际上不会停止 gVim,它只是将其最小化。第二行带有“ runtime”命令,基本上就是 :TOhtml 所做的 — 我已经不记得为什么我选择这样做而不是使用 :TOhtml。第三行写入“ foo.html”并退出,同时在命令行中包含原始文件,foo在本例中为“ ”,您可以将其更改为-

答案2

不幸的是我无法评论这个问题,这就是我写答案并希望更有特权的用户将我的条目转换为评论的原因。

对于 diff 的用法,您还可以尝试类似以下操作:

svn diff |colordiff

colordiff 通过对 diff 输出进行着色,效果非常好,也许您可​​以针对这种特定情况尝试一下。否则,Heptite 的答案是正确的方法。

相关内容