首页 > 解决方案 > 本机 vim 插件加载顺序

问题描述

有时 Vim 插件会建议加载顺序,但现在 Vim 本身支持加载插件而无需插件管理器。您只需将一个子模块放在一个文件夹中,例如~/.vim/pack/vendor/start它就会自动加载。所以,我的问题是你如何确保加载顺序类似于人们以前的方式。旧的做事方式示例如下:

Plug 'preservim/nerdtree' |
            \ Plug 'Xuyuanp/nerdtree-git-plugin' |
            \ Plug 'ryanoasis/vim-devicons'

取自https://github.com/Xuyuanp/nerdtree-git-plugin#faq

标签: vimvim-plugin

解决方案


让我们做个小实验……</p>

  1. 创建以下虚拟文件及其相应的内容:

    文件路径 内容
    pack/dummy/start/nerdtree/plugin/foo.vim echom "nerdtree"
    pack/dummy/start/nerdtree-git-plugin/plugin/bar.vim echom "nerdtree-git-plugin"
    pack/dummy/start/vim-devicons/plugin/baz.vim echom "vim-devicons"
  2. 启动 Vim,你应该会看到如下内容:

    $ vim
    nerdtree
    nerdtree-git-plugin
    vim-devicons
    Press ENTER or type command to continue
    

    这与:

    :filter dummy scriptnames
     40: ~/.vim/pack/dummy/start/nerdtree/plugin/foo.vim
     41: ~/.vim/pack/dummy/start/nerdtree-git-plugin/plugin/bar.vim
     42: ~/.vim/pack/dummy/start/vim-devicons/plugin/baz.vim
    Press ENTER or type command to continue
    

基于这个实验,我们可以得出结论,内置的“包”功能将“加载”start/在文件系统顺序中找到的插件,这恰好与规定的顺序相同。当然,您的文件系统可能对目录的排序与我的不同,所以 YMMV。

理论上,该:help :packadd命令应该允许您从您的“管理”插件vimrc,就像使用插件管理器一样。让我们来试验一下……</p>

  1. 重命名start/opt/

    pack/dummy/opt/nerdtree/
    pack/dummy/opt/nerdtree-git-plugin/
    pack/dummy/opt/vim-devicons/
    
  2. 将以下行添加到您的vimrc任何syntax onfiletype on行之后:

    packadd! nerdtree
    packadd! nerdtree-git-plugin
    packadd! vim-devicons
    
  3. 启动 Vim:

    $ vim
    vim-devicons
    nerdtree-git-plugin
    nerdtree
    Press ENTER or type command to continue
    

    什么?

嗯……我想你可以在这里尝试排序,直到你得到想要的顺序,但是这个相反的顺序对我来说就像一个错误。


推荐阅读