本机 vim 插件加载顺序

native vim plugin load order

有时 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.

让我们来做个小实验……

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

    Filepath Content
    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“管理”您的插件,就像使用插件管理器一样。让我们来试验一下……

  1. start/ 重命名为 opt/:

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

    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
    

    什么?

好吧……我猜你可以在这里尝试排序,直到你得到想要的顺序,但我认为相反的顺序看起来像个错误。