vim-sexp
的键绑定,但是在处理clojure时,我确实希望加载该插件。我目前正在使用neovim和病原体,但是如果有其他的插件管理器为我执行此操作,则我愿意进行切换。另外,如果确实存在,则
:set syntax whatever
是否切换插件?因为那将是超级:) 预先感谢任何帮助/指导!
#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
是否切换插件?因为那将是超级:) 一旦插件被加载,它就会被加载。 “插件”只是
function
,command
和map
定义的集合。我不知道有什么简单的方法可以“卸载”此文件。如果您使用
:set filetype
,它确实会加载文件类型的插件;通常,您总是想使用:set filetype
而不是:set syntax
,因为syntax
只会设置语法高亮显示,而不是缩进和其他设置(例如iskeyword
,formatexpr
等)。
评论
您在问一个问题,但实际上是在描述另一个问题:如果插件安装了全局键绑定,请禁用它们(请阅读插件文档以了解如何操作),然后仅针对您所用的文件类型在本地重新启用它们(例如,使用autocmds)想。如果插件编写正确,则延迟其初始化不会带来太多收益。但是,如果您不禁用由插件激活的不需要的全局键绑定,那么它们在加载插件后仍然会影响您。