我正在寻找答案,但是还没有找到任何东西,因此,如果我错过了明显的内容,我深表歉意。我认为这将是一个快速的Google搜索工具,所以它可能比我想象的要复杂。例如,在编辑python时,我不希望安装vim-sexp的键绑定,但是在处理clojure时,我确实希望加载该插件。

我目前正在使用neovim和病原体,但是如果有其他的插件管理器为我执行此操作,则我愿意进行切换。另外,如果确实存在,则:set syntax whatever是否切换插件?因为那将是超级:)

预先感谢任何帮助/指导!

评论

您在问一个问题,但实际上是在描述另一个问题:如果插件安装了全局键绑定,请禁用它们(请阅读插件文档以了解如何操作),然后仅针对您所用的文件类型在本地重新启用它们(例如,使用autocmds)想。如果插件编写正确,则延迟其初始化不会带来太多收益。但是,如果您不禁用由插件激活的不需要的全局键绑定,那么它们在加载插件后仍然会影响您。

#1 楼

您可以使用Vim-Plug进行此操作。请参阅自述文件:

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


我认为您必须使用:set filetype whatever而不是set syntax whatever来启用该插件。

(某些其他插件管理器可能会允许您这样做,请参阅vim插件管理器之间有什么区别?)

评论


请注意,vim-plug维护者不再推荐此功能:github.com/junegunn/vim-plug/issues/953#issuecomment-626317600。

– Mu Mind
20-09-11的1:18

#2 楼

无需调用execute pathogen#infect()来加载所有插件,而是为每个插件调用pathogen#interpose,例如:

execute pathogen#interpose('bundle/unicode.vim')
execute pathogen#interpose('bundle/AnsiEsc.vim')


病原体API并未在源代码之外进行记录,但是非常简单(即使函数名称晦涩难懂且不具描述性)。您还可以将pathogen#surround()用于绝对路径。

您可以有条件地使用基本autocmd加载插件:在这些情况下,您甚至可以将其拆分为不同的路径:




~/.vim/bundle/always用于您一直想要的插件

~/.vim/bundle/<filetype>用于特定插件的文件类型

,然后像这样加载它:

" Always use this plugin
execute pathogen#interpose('bundle/unicode.vim')

" Only for Python
autocmd FileType python execute pathogen#interpose('bundle/vim-sexp')



这样,您不必添加一大堆autocmd s用于每个文件类型/插件。


如果存在,:set syntax whatever是否切换插件?因为那将是超级:)



一旦插件被加载,它就会被加载。 “插件”只是functioncommandmap定义的集合。我不知道有什么简单的方法可以“卸载”此文件。
如果您使用:set filetype,它确实会加载文件类型的插件;通常,您总是想使用:set filetype而不是:set syntax,因为syntax只会设置语法高亮显示,而不是缩进和其他设置(例如iskeywordformatexpr等)。