Vim - 自定义通用语法文件

时间:2014-04-10 15:14:21

标签: vim

我创建了一个vim脚本,以便在编写代码时轻松插入代码段。我使用<#placeholder#>形式的占位符并循环它们。我想将占位符突出显示为注释,因此vim不会尝试为这些块着色:

syntax match abridgePlaceholder "<#.[^#]*#>"
highlight link abridgePlaceholder Comment

这在实时会话中工作正常,但我尝试将其打包在.vim/syntax内的语法文件中,但它不起作用。我认为vim不会在运行时加载此语法文件。

我也尝试在我的.vimrc中添加该语法,但它既不起作用......

所以我希望将该语法应用于所有文件类型。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。你需要挂钩Syntax事件;只要文件类型/语法发生变化,就会被触发。您可以将其放入~/.vimrc,但在:syntax on之后,以便首先使用默认语法处理(清除现有内容):

:autocmd Syntax * syntax match abridgePlaceholder "<#.[^#]*#>"

突出显示只需要定义一次:

:highlight link abridgePlaceholder Comment

注意事项

语法添加可能会干扰现有文件类型的语法,添加containedin=ALL可能会缓解问题,但是没有完美的解决方案。

替代

或者,您可以使用:match / call matchadd(),它与语法突出显示完全分开,但需要为每个窗口定义(同样,使用:autocmd s。) / p>