如何在VIM中将自定义语法突出显示应用于所有文件类型?

时间:2016-12-11 07:07:32

标签: vim

执行此操作的最佳方式可能是我的.vimrc文件或我vimfiles中的其他位置,这些位置很容易保留,而且不附加到额外的插件。

VIM的帮助文件(以及国外互联网上的几乎所有解决方案)直接与为特定文件类型添加语法突出显示有关。

但是,如何添加适用于所有文件的重点?

一个例子是突出显示额外关键字作为Todo突出显示组的一部分 - 例如“注意”,“内部”等。

我曾尝试使用vimfiles\after\syntax\...,但同样,它似乎是基于正确的文件类型而被用于在该目录中创建的.vim文件。

因此,像vimfiles\after\syntax\cpp.vim这样的东西可以用C ++来实现这个目的:

syntax keyword cTodo contained NOTE INTERNAL IMPORTANT

具体来说,对于C ++文件来说,这就是我所期望的。

但是,当文件加载到缓冲区时,如何将其扩展为所有文件类型?

1 个答案:

答案 0 :(得分:1)

您可以通过Syntax事件挂钩加载语法脚本。请务必在.vimrc中 :syntax on之后定义

:autocmd Syntax * syntax keyword allTodo NOTE

如果您还想处理没有设置任何语法(/ filetype)的缓冲区,请添加BufNewFile,BufReadPost个事件。

替代

根据语法的不同,您可能需要指定contained[in]:syn cluster add=...来扩充现有语法。不幸的是,不能一概而论。另一种方法是使用:match:call matchadd(...),它位于语法高亮之上(并且完全独立)。由于这是窗口本地的,因此autocmd将是:

:autocmd VimEnter,WinEnter * match Todo /\<NOTE\>/