47

我正在浏览我的 vim 点文件来整理它们。我注意到随着时间的推移,我以各种不一致的方式添加了各种文件类型特定的设置。假设我正在为 Python 定制:

  • au BufRead,BufNewFile *.py (do something). 我不喜欢这样,因为某些 Python 文件可能没有 .py 终止符。

  • au FileType python (do something). 这似乎是一个更好的选择,因为它不依赖于具有 .py 终止的文件。缺点是 Vim 不知道某些文件类型。我可以让 Vim 识别其他文件类型,但我也有各种不一致的方法:一个.vim/filetype.vim文件、另一个in.vim/after/filetype.vim和.set filetype.vimrc

  • 添加具有.vim/ftplugin/python.vim文件类型特定设置的文件。我知道$VIMRUNTIME/ftplugin/python.vim可以覆盖我在这里所做的任何设置。一个问题是我不确定这如何与.vim/filetype.vimand交互.vim/after/filetype.vim

  • 添加一个.vim/after/ftplugin/python.vim. 我知道这是在之后加载的,$VIMRUNTIME/ftplugin/python.vim因此它可以从那里覆盖设置。与前面的方法一样,我不确定它如何与filetype.vim文件交互。

所以我至少有四种方法可以做到这一点,更不用说语法文件和特定于文件类型的插件了。在我看来,最好的方法是将我的文件类型特定设置放入其中,after/ftplugin这样它们就不会被覆盖,并且filetypes.vim出于after同样的原因。

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

4

1 回答 1

69

我将我的 Python 特定设置存储在 中$HOME/.vim/ftplugin/python.vim,因为我没有做任何与$VIMRUNTIME/ftplugin/python.vim.

将这些设置保存在一个ftplugin文件中可以使.vimrc保持良好和通用并且更易于维护(在使用 Vim 十多年后它仍然很大)。

如果你想否决你的ftpluginVim 发行版设置的 s,那么$HOME/.vim/after/ftplugin/python.vim这就是你想要的,因为它是阅读after这些。

同样$HOME/.vim/filetype.vim将在之前采购,$VIMRUNTIME/filetype.vim而那又将在之前采购$HOME/.vim/after/filetype.vim

调用:scriptnames将列出所有来源的脚本名称,按照它们最初来源的顺序。

:help filetype提供了关于这一切的相当全面的信息。

于 2010-05-23T01:51:33.787 回答