Skip to main content

Package Managers

Until Vim8, the ecosystem of plugin managers offered numerous unofficial solutions with popular ones like:

With Vim 8, native third-party package loading has been introduced.

See vim-startuptime-benchmark for a comparison of startup times.

Vim8 Native Package Loading

Inside Vim, run :h packages to read the original documentation.

Directory layout

Directory layout for packages is given as the following.

start/foobar/plugin/foo.vim       " always loaded, defines commands
start/foobar/plugin/bar.vim " always loaded, defines commands
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
opt/fooextra/doc/tags " help tags

Unofficial Package-Managers

Unofficial package-managers that keep track and setup plugins from your .vimrc

Dein

Simple and faster than NeoBundle.

  • No commands, Functions only to simplify the implementation
  • Easy to test and maintain
  • No Vundle/NeoBundle compatibility
  • Neovim/Vim8 asynchronous API installation support
  • Local plugin support
  • Non-github plugins support
  • Go like clone directory name, i.e. "github.com/{user}/{repository}"
  • Merge the plugins directories automatically to avoid long runtimepath

Vundle

Stable & simple solution, good for beginners.

  • Update configured plugins
  • Search by name all available Vim scripts
  • Clean unused plugins up
  • Run the above actions in a single key-press with interactive mode
  • Regenerates help tags after installing and updating

NeoBundle

Warning: Active development on NeoBundle has stopped around February 2016.

  • Complex
  • Early development (may break compatibility)
  • Good for plugin power users
  • Can only accepts "https" or "ssh" protocols

vim-plug

Easier to setup: Single file. No boilerplate code required.

  • Super-fast parallel installation/update (with any of +job, +python, +python3, +ruby, or Neovim)
  • Creates shallow clones to minimize disk space usage and download time
  • On-demand loading for faster startup time
  • Can review and rollback updates
  • Branch/tag/commit support
  • Post-update hooks
  • Support for externally managed plugins

Pathogen

A minimal solution that only:

  • Auto-load plugins from a folder
  • Generate help tags for these plugins

Cons:

  • No install/update/remove management
  • No lazy loading

Pathogen Tricks

Notable Mentions

https://github.com/pchynoweth/vim-plugin-minimal https://github.com/itchyny/miv https://github.com/MarcWeber/vim-addon-manager https://github.com/kamichidu/go-hariti https://github.com/egalpin/apt-vim https://github.com/mikejsavage/vim-git-puller https://github.com/bohrshaw/vundle https://github.com/rkulla/vimogen https://github.com/airblade/voom https://github.com/KevinSjoberg/vpm https://github.com/xsc/microbe-vim https://github.com/selectnull/vimanage https://github.com/Carpetsmoker/packman.vim