手动和有条件地为Vim加载插件

时间:2013-09-03 13:24:03

标签: vim

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

Vundle通过~/.vimrc命令引用Bundle 'foo/bar'中的插件,因此您只需要为其添加条件:

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

传统方法

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

答案 1 :(得分:0)

使用vim-plug

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

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

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }