我正在处理两个不同的项目(让我们称之为projA和projB),这些项目都有自己的Vim插件。
每个插件文件夹都有一个ftdetect,ftplugin,插件和语法子文件夹,每个文件夹都处理相同类型的文件(.cpp,.html等)。
如果我加载两组插件,那么我想要的任何工作都没有用,所以我需要一种方法来只加载与我正在处理的项目相对应的插件。
我的想法是通过getcwd()
检测我当前的工作目录,然后只加载相关的插件,但我不知道如何手动加载单个插件。
我目前正在使用Vundle来管理我的其他插件。
答案 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' }