【发布时间】:2012-11-07 15:04:30
【问题描述】:
有时我想在当前缓冲区上应用一些自定义的额外语法突出显示。
如何使用内置的 vim 语法/高亮系统来完成(我不想使用 Highlight 插件)
例如,我想突出显示当前缓冲区中的所有断言语句。
【问题讨论】:
标签: vim vim-syntax-highlighting
有时我想在当前缓冲区上应用一些自定义的额外语法突出显示。
如何使用内置的 vim 语法/高亮系统来完成(我不想使用 Highlight 插件)
例如,我想突出显示当前缓冲区中的所有断言语句。
【问题讨论】:
标签: vim vim-syntax-highlighting
如果突出显示仅针对某些文件类型(例如 Java),并且您一直想要它,我会在 :syn match ... 定义中扩展原始语法,并将其放在 ~/.vim/after/syntax/java.vim 中。
如dwalter所示,使用:match(或:2match)进行自发突出显示。
如果您要编写更精细的映射,可能带有切换开/关逻辑,请使用 matchadd() / matchdelete()。
最后,如果您需要突出显示任意单词/字符串,例如使用文本标记标记文档,我建议您使用像 Mark 这样的插件(我已接管维护)。
【讨论】:
如果需要,您可以使用match 和highlight。
示例:
:hi MyAsserts term=bold ctermbg=Cyan
:match MyAsserts /assert(.*)/
以青色背景突出显示您的assert() 语句。
:match 不带任何参数将重置它。
有关highlight 或match 的更多信息,请通过以下方式查看文档
: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。
【讨论】: