it-swarm.cn

如何使Vim显示颜色代码所指示的颜色?

简而言之,我正在努力将less替换为vimvimpager)。我有一些脚本设置,可以在任何可能的时候吐出颜色(以及粗体和所有不错的东西)。 less理解颜色代码并很好地显示它们。如何使vim解析代码并以less的方式显示颜色/粗体?

62
phunehehe

两个答案:

一个简短的例子:您想使用vim脚本 AnsiEsc.vim 。它将隐藏文件中的实际ANSI转义序列,并使用语法突出显示为文本适当地着色。在寻呼机中使用它的问题是,您将必须让vim识别何时使用它。我不确定是否可以始终加载它,或者它是否会与其他语法文件冲突。您将不得不尝试一下。

很长的答案:最好的希望是部分非便携式解决方案。更少的人实际上不了解终端转义序列,因为它们很大程度上取决于终端,但是更少的人可以识别这些(子集),并且如果您使用-r(或-R)选项。终端将解释转义序列并更改文本的属性(颜色,粗体,下划线...)。 Vim是编辑器而不是寻呼机,不会简单地将原始控制字符传递给终端。它需要以某种方式显示它们,因此您实际上可以对其进行编辑。您可以使用vim的其他功能,例如隐藏和语法高亮来隐藏序列,并使用它们来设置文本的颜色,但是,它将始终仅处理终端序列的一个子集,并且可能在某些终端上不起作用。

实际上,这只是尝试使用文本编辑器作为寻呼机时遇到的许多问题之一。

45
Jan Hlavacek

现在,在vim 8中,您可以使用终端模式:terminal,然后在该终端机执行cat myfile并使用Ctrl-w N返回正常模式。这将正确显示ANSI颜色代码。通过自动执行这些步骤并从标准输入而不是文件中读取,应该可以使用vim进行替换。

4
rubystallion