我正在浏览我的vim dotfiles来整理它们。我注意到,随着时间的推移,我以各种不一致的方式添加了各种文件类型特定的设置。我们假设我正在为Python定制:
au BufRead,BufNewFile *.py (do something)
。我不喜欢这个,因为一些Python文件可能没有.py终止。
au FileType python (do something)
。这似乎是一个更好的选择,因为它不依赖于具有.py终止的文件。缺点是Vim不知道某些文件类型。我可以让Vim识别其他文件类型,但我也有各种不一致的方法:.vim/filetype.vim
文件,.vim/after/filetype.vim
中的另一个文件和set filetype
中的各种.vimrc
命令。 / p>
添加具有特定于文件类型设置的.vim/ftplugin/python.vim
文件。我理解$VIMRUNTIME/ftplugin/python.vim
可以覆盖我在这里设置的任何设置。一个问题是,我不确定这与.vim/filetype.vim
和.vim/after/filetype.vim
如何互动。
添加.vim/after/ftplugin/python.vim
。我知道这是在$VIMRUNTIME/ftplugin/python.vim
之后加载的,所以它可以从那里覆盖设置。与前面的方法一样,我不确定它是如何与filetype.vim
文件交互的。
所以我至少有四种方法可以做到这一点,不提及语法文件和特定于文件类型的插件。在我看来,最好的方法是将我的文件类型特定设置放在after/ftplugin
中,这样就不会覆盖filetypes.vim
after
出于同样的原因。
但是,在我继续之前,我想问一下是否有人对处理文件类型特定设置的最佳方法有任何建议。
答案 0 :(得分:65)
我将特定于Python的设置存储在$HOME/.vim/ftplugin/python.vim
中,因为我没有做任何与$VIMRUNTIME/ftplugin/python.vim
冲突的事情。
将这些设置保存在ftplugin
文件中可使my .vimrc
保持良好且通用且易于维护(在使用Vim十年后仍然非常大)。
如果您想overrule设置了您的Vim发布内容ftplugin
的内容,那么$HOME/.vim/after/ftplugin/python.vim
就是您想要的内容,因为它是 after
这些。
同样,$HOME/.vim/filetype.vim
将在$VIMRUNTIME/filetype.vim
之前提供,而$HOME/.vim/after/filetype.vim
之前会来源。{/ p>
调用:scriptnames
将按照首次采购的顺序列出所有源脚本名称。
:help filetype
提供了有关所有这些的非常全面的信息。