vim、病原体和 ftplugin 文件的加载顺序
-
21-12-2019 - |
题
我一直在使用 Vim 病原 一段时间以来,一切都工作正常,但最近我的 ftplugin 配置开始出现加载顺序问题。
我现在遇到的具体问题是 python模式 正在覆盖我的 ftplugin 设置。我有一个 ~/.vim/ftplugin/python.vim
包含以下行:
setlocal textwidth=119
python-mode 带有自己的 ftplugin 文件,该文件还设置 textwidth
, , 在 ~/.vim/bundle/python-mode/ftplugin/python/pymode.vim
.
问题是 Vim 现在正在加载 python 模式的 ftplugin 文件 后 我的 ftplugin 文件,所以我最终得到了它 textwidth=79
. 我最近不得不重新安装 MacPorts,我认为库存配置中一定发生了一些变化。
我尝试过各种技巧,包括在调用病原体之前关闭文件类型/插件检测,根据 各种各样的 其他 答案,但没有一个有帮助。
通过使用 verbose set textwidth?
还有一些 echomsg
调试时,我知道两个 ftplugin 文件都被调用,并且它们是以错误的(根据我的需要)顺序调用的。
有没有办法强制 Vim/pathogen 在插件之后调用我的 ftplugin 文件?
我什至尝试将我的设置放入 ~/.vim/after/plugin/pymode.vim
, ,但它是在病原体设置插件后立即加载的,因此它仍然在之前运行 ftplugin
文件,只有在我编辑 Python 文件后才会加载。
解决方案
事实证明,也许这从来没有像我想象的那样有效。没想到Vim也支持 ~/.vim/after/ftplugin
, ,所以我能够将我的覆盖移动到 ~/.vim/after/ftplugin/python.vim
并得到我期望的行为。我不愿意回答我自己的问题,但希望这对其他人有帮助。
其他提示
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
, ,但我还没有测试过。
我仍在寻找这个加载顺序问题的更通用的答案
据我所知,用 Pathogen 确实做不到这一点。使用 NeoBundle 真的很容易。Pathogen 确实很小,它并没有为您提供很多灵活性 - 它只做一件事并且做得很好。如果您正在寻找可配置性,我认为您使用了错误的工具。
编辑:不太确定 ftplugins,但捆绑包通常会在您指定时加载(使用 Vundle/NeoBundle)。所以我意识到这可能不是最相关的答案。