禁用某些文件名的语法突出显示

Phi*_*ank 2 vim syntax-highlighting autocmd

我在.vimrc中启用了语法高亮,但这使得加载某些文件的时间过长.因此,我需要禁用(或者,确切地说,不启用...启用它,然后禁用不是解决方案)语法突出显示这些文件.我试过了

au BufNewFile,BufRead !*.inc syntax enable
Run Code Online (Sandbox Code Playgroud)

但这使得没有应用语法高亮.这里提出的解决方案对我不起作用,因为我无法通过文件类型进行区分.我尝试适应无效,可能会或可能不会连接到"语法启用"所需的事件.

感谢您的任何指示!

Ash*_*ani 5

如果要仅显示.c文件的语法.放

syntax off
autocmd! bufreadpost *.c syntax on
Run Code Online (Sandbox Code Playgroud)

在你的vimrc.

您还可以映射用于启用语法的键(Ctrl+s在本例中)

nnoremap <C-S> :syntax on<CR>
Run Code Online (Sandbox Code Playgroud)

在您的问题中,您想要仅为.inc文件禁用语法.像这样做:

syntax on
autocmd! bufreadpost *.inc set syntax=off
Run Code Online (Sandbox Code Playgroud)


Ing*_*kat 5

提到的解决方案指向正确的方向:为所有缓冲区定义一个 autocmd ,然后(而不是'filetype')通过expand('<afile>')以下方式与文件名匹配:

au BufNewFile,BufRead * if expand('<afile>:e') !=? 'inc' | syntax enable | endif
Run Code Online (Sandbox Code Playgroud)

在这里,我在条件中使用了您的*.inc扩展示例。如果您发现匹配很麻烦并且宁愿使用 autocmd 语法,您也可以使用中间缓冲区标志来做到这一点,使用 autocmds 按定义顺序执行的事实:

au BufNewFile,BufRead *.inc let b:isOmitSyntax = 1
au BufNewFile,BufRead *     if ! exists('b:isOmitSyntax') | syntax enable | endif
Run Code Online (Sandbox Code Playgroud)