2

我正在处理两个不同的项目(我们称它们为 projA 和 projB),它们有自己的 Vim 插件。

每个插件文件夹都有一个 ftdetect、ftplugin、plugin 和 syntax 子文件夹,每个都处理相同类型的文件(.cpp、.html 等)。

如果我加载了两组插件,那么我想要的任何东西都不能正常工作,所以我需要一种方法来只加载与我正在处理的项目相对应的插件。

我的想法是检测我当前的工作目录是通过什么getcwd(),然后只加载相关的插件,但我不知道如何手动加载单个插件。

我目前正在使用 Vundle 来管理我的其余插件。

4

2 回答 2

5

Vundle 和 Pathogen 之类的包管理器将每个插件分离到它自己的子树中,并将所有这些路径连接到'runtimepath'选项中,以便 Vim 考虑所有这些路径。这使得禁用插件变得特别简单:只需防止将插件的子树包含到'runtimepath'.

~/.vimrcVundle通过命令引用插件Bundle 'foo/bar',所以你只需要在它周围加上一个条件:

if getcwd() ==# '/work/cpp'
    Bundle example/cpp
else
    Bundle example/other
endif

常规方法

使用传统的单一~/.vim/配置层次结构,您必须通过设置规范g:loaded_PluginName包含保护来抑制插件加载。这需要插件的支持,并且大多数情况下不适用于 ftplugins、缩进和语法脚本。

于 2013-09-03T14:32:15.753 回答
4

vim-plug

vim-plug插件管理器支持有条件地加载插件。

这直接来自他们的自述文件:

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
于 2019-01-21T18:08:02.000 回答