Vim:语法文件未自动加载

11

我的~/.vimrc文件包含以下行:

au BufNewFile,BufRead *.fsh,*.vsh setf glsl

我的~/.vim/syntax目录包含glsl.vim,如果手动加载(:setf glsl在Vim中),它可以正常工作,但是当编辑具有这些扩展名的文件时,它不会自动加载。 如何使这些文件自动获得语法高亮?其他文件的语法高亮正常工作。 我正在运行Linux Mint上的Vim版本7.4。


2
这可能是一次尝试,但你是否尝试过使用扩展形式的 set filetype=glsl 而不是 setf glsl - Nadir Sampaoli
2
@Nadir Sampaoli:那不是“扩展形式”,它是一个不同的命令。请参阅:help :setf - benjifisher
2
@SurvivalMachine:执行 :e foo.fsh 然后执行 :verbose set ft? 会发生什么?执行 :verbose au BufNewFile *.fsh 呢? - benjifisher
@NadirSampaoli 那个有效了,谢谢! - SurvivalMachine
1个回答

6
我认为这行代码不能放在你的~/.vimrc文件中。由于加载顺序的原因,它可能需要放在~/.vim/filetype.vim文件中。请尝试将此代码放入该文件中:
augroup filetypedetect
  au BufNewFile,BufRead *.fsh,*.vsh setf glsl
augroup END

VIM命令可以在.vimrc中使用。这就是它存在的全部意义。 - Michael Foukarakis
1
Vim命令可以放在.vimrc文件中,但也可以放在其他地方。文件类型命令应该放在filetype.vim文件中,过去我曾试图将其强制放入.vimrc文件中,但遇到了问题。这是因为加载顺序可能很重要,正如这个问题所暗示的那样。 - Adam Katz
1
尝试将其添加到/usr/share/vim/vim73/filetype.vim。在~/.vim/filetype.vim中加入au BufNewFile,BufRead *.fsh,*.vsh setf glsl后,它就可以工作了。 - PeqNP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接