🌺 Minimalist Vim Plugin Manager
vim
Go to file
2013-09-25 02:08:42 +09:00
gif New screenshot 2013-09-24 13:10:57 +09:00
plug.vim Prototype implementation of dependency resolution (#2) 2013-09-25 02:08:42 +09:00
README.md Prototype implementation of dependency resolution (#2) 2013-09-25 02:08:42 +09:00

vim-plug

A single-file Vim plugin manager.

Somewhere between Pathogen and Vundle, but with faster parallel installer.

Pros.

  • Easier to setup
  • Parallel installation/update (requires +ruby)
  • Smallest possible feature set
  • Dependency resolution using Plugfile (experimental)

Cons.

  • Everything else

Usage

Download plug.vim and put it in ~/.vim/autoload

mkdir -p ~/.vim/autoload
curl -fLo ~/.vim/autoload/plug.vim https://raw.github.com/junegunn/vim-plug/master/plug.vim

Edit your .vimrc

call plug#begin()

Plug 'junegunn/seoul256'
Plug 'junegunn/vim-easy-align'
" Plug 'user/repo', 'branch_or_tag'
" Plug 'git@github.com:junegunn/vim-github-dashboard.git'
" ...

call plug#end()

Then :PlugInstall to install plugins.

Plugin directory

By default, plugins are installed in plugged directory under the first path in runtimepath at the point when plug#begin() is called. This is usually ~/.vim/plugged (or $HOME/vimfiles/plugged on Windows) given that you didn't touch runtimepath before the call. You can explicitly set the location of the plugins with plug#begin(path) call.

Commands

Command Description
PlugInstall [#threads] Install plugins
PlugUpdate [#threads] Install or update plugins
PlugClean Remove unused directories
PlugUpgrade Upgrade vim-plug itself
PlugStatus Check the status of plugins

(Default number of threads = g:plug_threads or 16)

Dependency resolution

If a Vim plugin specifies its dependent plugins in Plugfile in its root directory, vim-plug will automatically source it recursively during the installation.

A Plugfile should contain a set of Plug commands for the dependent plugins.

I've created two dummy repositories with Plugfiles as an example to this scheme.

  • junegunn/dummy1
    • Plug 'junegunn/vim-scroll-position'
    • Plug 'junegunn/dummy2'
  • junegunn/dummy2
    • Plug 'junegunn/Zenburn'
    • Plug 'junegunn/jellybeans.vim'
    • Plug 'junegunn/dummy1'
      • (Circular dependencies are ignored)

If you put Plug 'junegunn/dummy1' in your configuration file, and run :PlugInstall,

  1. vim-plug first installs dummy1
  2. And sees if the repository has Plugfile
  3. Plugfile is loaded and vim-plug discovers dependent plugins
  4. Dependent plugins are then installed as well, and their Plugfiles are examined and their dependencies are resolved recursively.

Articles

Regarding feature request

You may submit a request for a new feature by creating an issue. However, please be minded that this is an opinionated software and I want to keep the feature set as small as possible. So I may not agree with you on the necessity of the suggested feature. If that happens, I suggest the following options.

  1. Check out Vundle or NeoBundle. They offer broader feature sets.
  2. Create a fork of this project and let it be your own plugin manager. There's no need for us to have a single canonical branch.