Vim的包管理有很多选择,有Vundle、NeoBundle、Vim-plugin、Pathogen、Dein、VAM等,像我之前一直使用的是Vundle。这段时间把Vim升级到了Vim 8+,发现了Vim 8已经有内置的包管理功能,于是体验了一把,如下就是使用方法。

一、package概念

不同于Vundle或者vim-plugin中的plugin, vim 8内置包管理器引入了一个新的package的概念来组织管理包。一个package是若干plugin的集合,一个package里的plugin之间可以是互相依赖的。package中有两个目录:启动时加载目录启动后加载目录,你可以将希望vim启动时自动加载的plugin放置到启动时加载目录中,启动后加载plugin放置到启动后加载目录

二、如何使用

首先毫无疑问,你的vim版本要升级到8.0以上~

  1. 创建放置所有package的根目录

    mkdir -p ~/.vim/pack
    
  2. 创建一个新的package,用于存放vim插件

    mkdir -p ~/.vim/pack/mypackage
    
  3. 分别在mypackage中创建目录startopt

    mkdir -p ~/.vim/pack/mypackage/start 
    mkdir -p ~/.vim/pack/mypackage/opt
    
  4. 将想vim启动时自动加载的插件丢到~/.vim/pack/mypackage/start ,而不想启动时加载的插件丢到~/.vim/pack/mypackage/opt中,需要用到的时候,执行:packadd $pluginname 就可以了

  5. 重启vim,~/.vim/pack/mypackage/start 中插件即可自动加载了

三、插件管理

如何方便地添加、升级、同步vim插件呢?我们用到的vim插件很多都是在github上以repostory形式存在的,可以配合使用git的submodule功能,来从github上添加、更新第三方vim插件。

  1. ~/.vim做成一个git仓库,然后初始化submodule

    cd ~/.vim
    git init
    git submodule init
    
  2. 添加第三方插件,比如ale

    cd ~/.vim
    git submoudle add git@github.com:dense-analysis/ale.git pack/mypackage/start/ale
    
  3. 升级所有第三方插件

    git submodule update --recursive --remote
    
  4. 同步vim插件到另一台机器,只需要在另一台机器上把vim插件仓库clone下来到.vim目录即可

    cd ~/.vim
    git clone --recursive git@github.com:{your_github_name}/{your_repostoy_name}.git