我创建了一个vim脚本,以便在编写代码时轻松插入代码段。我使用<#placeholder#>
形式的占位符并循环它们。我想将占位符突出显示为注释,因此vim不会尝试为这些块着色:
syntax match abridgePlaceholder "<#.[^#]*#>"
highlight link abridgePlaceholder Comment
这在实时会话中工作正常,但我尝试将其打包在.vim/syntax
内的语法文件中,但它不起作用。我认为vim不会在运行时加载此语法文件。
我也尝试在我的.vimrc
中添加该语法,但它既不起作用......
所以我希望将该语法应用于所有文件类型。有没有办法做到这一点?
答案 0 :(得分:3)
是的,这是可能的。你需要挂钩Syntax
事件;只要文件类型/语法发生变化,就会被触发。您可以将其放入~/.vimrc
,但在:syntax on
之后,以便首先使用默认语法处理(清除现有内容):
:autocmd Syntax * syntax match abridgePlaceholder "<#.[^#]*#>"
突出显示只需要定义一次:
:highlight link abridgePlaceholder Comment
语法添加可能会干扰现有文件类型的语法,添加containedin=ALL
可能会缓解问题,但是没有完美的解决方案。
或者,您可以使用:match
/ call matchadd()
,它与语法突出显示完全分开,但需要为每个窗口定义(同样,使用:autocmd
s。) / p>