在.vim和.vimrc中组织文件types设置的最佳方法是什么?
我正在通过我的vim dotfiles来整理它们。 我注意到,通过时间我已经以各种不一致的方式添加了各种文件types的具体设置。 假设我正在为Python定制:
-
au BufRead,BufNewFile *.py (do something)
。 我不喜欢这个,因为一些Python文件可能没有.py终止。 -
au FileType python (do something)
。 这似乎是一个更好的select,因为它不依赖于具有.py终止的文件。 缺点是Vim不知道一些文件types。 我可以让Vim识别附加的文件types,但是我也有各种不一致的方法:.vim/filetype.vim
文件,另外一个在.vim/after/filetype.vim
以及.vimrc
各种set filetype
命令。 -
添加一个
.vim/ftplugin/python.vim
文件,具有文件types特定的设置。 我知道$VIMRUNTIME/ftplugin/python.vim
可以覆盖我在这里设置的任何设置。 一个问题是,我不知道这是如何与.vim/filetype.vim
和.vim/after/filetype.vim
交互。 -
添加一个
.vim/after/ftplugin/python.vim
。 我知道这是$VIMRUNTIME/ftplugin/python.vim
之后加载,所以它可以覆盖那里的设置。 和前面的方法一样,我不确定它如何与filetype.vim
文件交互。
所以我至less有四种方法来做这个,而不是提到语法文件和文件types特定的插件。 在我看来,最好的办法是将我的文件types特定的设置放在after/ftplugin
这样它们不会被覆盖,而filetypes.vim
也会出于同样的原因。
但是,在我继续之前,我想问问任何人是否有处理文件types特定设置的最佳方法的build议。
我将我的Python特有的设置存储在$HOME/.vim/ftplugin/python.vim
,因为我没有做任何与$VIMRUNTIME/ftplugin/python.vim
冲突的$VIMRUNTIME/ftplugin/python.vim
。
将这些设置保存在一个ftplugin
文件中,可以让我的.vimrc
保持良好的通用性,并且更易于维护(在Vim使用十多年之后,它仍然相当大)。
如果你想控制你的Vim发行版的ftplugin
,那么$HOME/.vim/after/ftplugin/python.vim
是你想要的,因为它是after
这after
被读取的。
同样, $HOME/.vim/filetype.vim
将在$VIMRUNTIME/filetype.vim
之前被find,并且在$HOME/.vim/after/filetype.vim
之前被提交。
调用:scriptnames
脚本名将按照它们的第一个来源的顺序列出所有的脚本名。
:help filetype
提供了所有这些相当全面的信息。