在.vim和.vimrc中组织文件类型设置的最佳方法?

时间:2010-05-22 21:05:27

标签: file-type vim ftplugin

我正在浏览我的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出于同样的原因。

但是,在我继续之前,我想问一下是否有人对处理文件类型特定设置的最佳方法有任何建议。

1 个答案:

答案 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提供了有关所有这些的非常全面的信息。