6

我已经使用 Vim 和病原体一段时间了,一切正常,但最近我的 ftplugin 配置开始出现加载顺序问题。

我现在遇到的具体问题是python-mode覆盖了我的 ftplugin 设置。我有一个~/.vim/ftplugin/python.vim包含以下行的:

setlocal textwidth=119

python-mode 带有自己的 ftplugin 文件,该文件还设置textwidth~/.vim/bundle/python-mode/ftplugin/python/pymode.vim.

问题是 Vim 现在在我的 ftplugin 文件之后加载 python-mode 的 ftplugin文件,所以我最终得到了它的textwidth=79. 我最近不得不重新安装 MacPorts,我认为库存配置一定发生了一些变化。

根据其他各种 答案,我尝试了各种技巧,包括在调用病原体之前关闭文件类型/插件检测,但它们都没有帮助。

通过使用verbose set textwidth?和一些echomsg调试,我知道两个 ftplugin 文件都被调用了,并且它们被以错误的(根据我的需要)顺序调用。

有没有办法强制 Vim/pathogen 在插件之后调用我的 ftplugin 文件?

我什至尝试将我的设置放入~/.vim/after/plugin/pymode.vim,但它是在病原体设置插件后立即加载的,所以它仍然在文件之前运行ftplugin,只有在我编辑 Python 文件后才会加载。

4

3 回答 3

8

事实证明,也许这从来没有像我想象的那样奏效。我没有意识到 Vim 也支持~/.vim/after/ftplugin,所以我能够将我的覆盖移动到~/.vim/after/ftplugin/python.vim并获得我所期望的行为。我不愿意回答我自己关于 SO 的问题,但希望这对其他人有帮助。

于 2013-11-17T23:01:41.563 回答
6

Plain Vim按字母顺序加载插件脚本。这是从:help load-plugins

... all directories in the 'runtimepath' option will be
searched for the "plugin" sub-directory and all files ending in ".vim"
will be sourced (in alphabetical order per directory), also in
subdirectories.

<filetype>_plugin.vim所以你可以通过重命名来设置插件加载顺序<filetype>/35plugin.vim。35 是您想要的加载顺序。我认为通过重命名里面的插件目录,这也应该与 Pathogen 一起使用bundle,但我还没有测试过。

于 2015-04-28T18:13:06.370 回答
0

我仍在寻找这个加载顺序问题的更一般的答案

据我所知,你不能用 Pathogen 来做这件事。NeoBundle 真的很容易。病原体真的很小,它不会为您提供很大的灵活性 - 它只做一件事并且做得很好。如果您正在寻找可配置性,我认为您使用了错误的工具。

编辑:不太确定 ftplugins,但通常会在您指定它们时加载包(使用 Vundle/NeoBundle)。所以我意识到这可能不是最相关的答案。

于 2013-11-18T04:06:09.377 回答