我正在使用本地vim插件,它允许我使用特定于项目的.vimrc文件,一般情况下它可以正常工作并且正如您所期望的那样。
我使用Silverstripe,因此必须使用Silverstripe模板,这些模板是* .ss文件,但默认情况下,vim会将* .ss分配给方案文件。现在我只使用Silverstripe用于一个项目,并且已经在我的项目特定的.vimrc中使用html文件类型集进行突出显示,但是在遇到一些错误后,我想我会在htmlss中添加* .ss文件的突出显示.vim文件(使用html.vim作为基础,我只是在最后添加了模板规则)。经过一些试验和错误,我得到了它正常工作并突出显示,但是我遇到了一个奇怪的错误......
使用这个项目.vimrc:
augroup filetypedetect
autocmd! * *.ss
autocmd! BufEnter *.ss setf htmlss
augroup END
然而,一切正常,使用此.vimrc:
augroup filetypedetect
autocmd! * *.ss
autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
语法突出显示失败,它正确设置文件类型,但突出显示变得棘手。
我想我想知道为什么版本1有效,但版本2没有,尽管没有其他变化。
附录经过多一点调查后,我发现只有当我从autocmd! * *.ss
移除!
时,删除autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
才能使第二个工作正常。即。
augroup filetypedetect
autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
有效但
augroup filetypedetect
autocmd! BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
和
augroup filetypedetect
autocmd! * *.ss
autocmd BufEnter,BufRead,BufNewFile *.ss setf htmlss
augroup END
不要。
同样,我的问题是为什么会出现这些差异,我现在有一个有效的实施,所以我对任何调查都不感兴趣。我不想要解决方案,因为我没有问题。
答案 0 :(得分:2)
这可能是由于您的语法文件多次应用时与自身冲突造成的。语法文件中的第一行可能是syntax enable
,它可以在不更改任何当前突出显示设置的情况下启用语法。每the docs:
The ":syntax enable" command will keep your current color settings. This allows using ":highlight" commands to set your preferred colors before or after using this command. If you want Vim to overrule your settings with the defaults, use: :syntax on
因此,一个适当的“解决方案”应该是在语法文件中将syntax enable
更改为syntax on
。