3

有时我想在当前缓冲区上应用一些自定义的额外语法突出显示。

如何使用内置 vim 语法/突出显示系统来完成(我不想使用突出显示插件)

例如,我想突出显示当前缓冲区中的所有断言语句。

4

2 回答 2

5

如果突出显示仅适用于某些文件类型(例如 Java),并且您一直想要它,我会扩展原始语法,并将:syn match ...定义放在~/.vim/after/syntax/java.vim.

对于自发突出显示,请使用:match(或:2match),如dwalter所示。

如果您要编写更精细的映射,可能带有切换开/关逻辑,请使用matchadd()/ matchdelete()

最后,如果您需要突出显示任意单词/字符串,例如使用文本标记标记文档,我建议您使用Mark等插件(我已经接管维护)。

于 2012-11-07T15:36:43.240 回答
4

如果需要,您可以使用matchhighlight

例子:

    :hi MyAsserts term=bold ctermbg=Cyan
    :match MyAsserts /assert(.*)/

assert()用青色背景 突出你的陈述。:match没有任何参数将重置它。

有关两者的更多信息,或通过highlightmatch查看文档 :help hi:help match

要重复使用突出显示,您可以将这些命令保存在一个文件中,并在:source file.vim需要时随时加载它。另一种方法是在.vimrc.

     hi MyAsserts ctermbg=Cyan
     command -bar -nargs=0 HiAsserts match MyAsserts /assert(.*)/
     "highlight any given regex
     command -bar -nargs=1 HiIt match MyAsserts /<args>/

并调用它:HiAsserts以突出显示您的assert()语句或突出显示缓冲区中的:HiIt foo每一个。foo

于 2012-11-07T15:23:40.510 回答