A minimalist Vim plugin manager.
Pros.
- Minimalist design
- Just one file with no dependencies. Super easy to set up.
- Concise, intuitive syntax that you can learn within minutes. No boilerplate code required.
- No feature bloat
- Extremely stable with flawless backward compatibility
- Works perfectly with all versions of Vim since 2006 and all versions of Neovim ever released
- Super-fast parallel installation/update
- 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
Installation
Download plug.vim
and put it in the «autoload» directory.
Click to see the instructions
Vim
Unix
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
You can automate the process by putting the command in your Vim configuration
file as suggested here.
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |` ni $HOME/vimfiles/autoload/plug.vim -Force
Neovim
Unix, Linux
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Linux (Flatpak)
curl -fLo ~/.var/app/io.neovim.nvim/data/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |` ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
Usage
Add a vim-plug section to your ~/.vimrc
(or ~/.config/nvim/init.vim
for Neovim)
- Begin the section with
call plug#begin()
- List the plugins with
Plug
commands - End the section with
call plug#end()
For example,
call plug#begin() " List your plugins here Plug 'tpope/vim-sensible' call plug#end()
Reload the file or restart Vim, then you can,
:PlugInstall
to install the plugins:PlugUpdate
to install or update the plugins:PlugDiff
to review the changes from the last update:PlugClean
to remove plugins no longer in the list
Note
That’s basically all you need to know to get started. The rest of the
document is for advanced users who want to know more about the features and
options.
Tip
plug#end()
automatically executes filetype plugin indent on
and syntax enable
. We believe this is a good default for most users, but if you don’t
want this behavior, you can revert the settings after the call.
call plug#end() filetype indent off " Disable file-type-specific indentation syntax off " Disable syntax highlighting
Getting Help
- See tutorial page to learn more about the basics of vim-plug
- See tips and FAQ pages for common problems and questions
Examples
The following examples demonstrate the additional features of vim-plug.
Vim script example
call plug#begin() " The default plugin directory will be as follows: " - Vim (Linux/macOS): '~/.vim/plugged' " - Vim (Windows): '~/vimfiles/plugged' " - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged' " You can specify a custom plugin directory by passing it as the argument " - e.g. `call plug#begin('~/.vim/plugged')` " - Avoid using standard Vim directory names like 'plugin' " Make sure you use single quotes " Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git Plug 'junegunn/seoul256.vim' " Any valid git URL is allowed Plug 'https://github.com/junegunn/vim-easy-align.git' " Using a tagged release; wildcard allowed (requires git 1.9.2 or above) Plug 'fatih/vim-go', { 'tag': '*' } " Using a non-default branch Plug 'neoclide/coc.nvim', { 'branch': 'release' } " Use 'dir' option to install plugin in a non-default directory Plug 'junegunn/fzf', { 'dir': '~/.fzf' } " Post-update hook: run a shell command after installing or updating the plugin Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " Post-update hook can be a lambda expression Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " If the vim plugin is in a subdirectory, use 'rtp' option to specify its path Plug 'nsf/gocode', { 'rtp': 'vim' } " On-demand loading: loaded when the specified command is executed Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } " On-demand loading: loaded when a file with a specific file type is opened Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " Unmanaged plugin (manually installed and updated) Plug '~/my-prototype-plugin' " Call plug#end to update &runtimepath and initialize the plugin system. " - It automatically executes `filetype plugin indent on` and `syntax enable` call plug#end() " You can revert the settings after the call like so: " filetype indent off " Disable file-type-specific indentation " syntax off " Disable syntax highlighting " Color schemes should be loaded after plug#end(). " We prepend it with 'silent!' to ignore errors when it's not yet installed. silent! colorscheme seoul256
Lua example for Neovim
In Neovim, you can write your configuration in a Lua script file named
init.lua
. The following code is the Lua script equivalent to the Vim script
example above.
local vim = vim local Plug = vim.fn['plug#'] vim.call('plug#begin') -- Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git Plug('junegunn/seoul256.vim') -- Any valid git URL is allowed Plug('https://github.com/junegunn/vim-easy-align.git') -- Using a tagged release; wildcard allowed (requires git 1.9.2 or above) Plug('fatih/vim-go', { ['tag'] = '*' }) -- Using a non-default branch Plug('neoclide/coc.nvim', { ['branch'] = 'release' }) -- Use 'dir' option to install plugin in a non-default directory Plug('junegunn/fzf', { ['dir'] = '~/.fzf' }) -- Post-update hook: run a shell command after installing or updating the plugin Plug('junegunn/fzf', { ['dir'] = '~/.fzf', ['do'] = './install --all' }) -- Post-update hook can be a lambda expression Plug('junegunn/fzf', { ['do'] = function() vim.fn['fzf#install']() end }) -- If the vim plugin is in a subdirectory, use 'rtp' option to specify its path Plug('nsf/gocode', { ['rtp'] = 'vim' }) -- On-demand loading: loaded when the specified command is executed Plug('preservim/nerdtree', { ['on'] = 'NERDTreeToggle' }) -- On-demand loading: loaded when a file with a specific file type is opened Plug('tpope/vim-fireplace', { ['for'] = 'clojure' }) -- Unmanaged plugin (manually installed and updated) Plug('~/my-prototype-plugin') vim.call('plug#end') -- Color schemes should be loaded after plug#end(). -- We prepend it with 'silent!' to ignore errors when it's not yet installed. vim.cmd('silent! colorscheme seoul256')
Commands
Command | Description |
---|---|
PlugInstall [name ...] [#threads] |
Install plugins |
PlugUpdate [name ...] [#threads] |
Install or update plugins |
PlugClean[!] |
Remove unlisted plugins (bang version will clean without prompt) |
PlugUpgrade |
Upgrade vim-plug itself |
PlugStatus |
Check the status of plugins |
PlugDiff |
Examine changes from the previous update and the pending changes |
PlugSnapshot[!] [output path] |
Generate script for restoring the current snapshot of the plugins |
Plug
options
Option | Description |
---|---|
branch /tag /commit |
Branch/tag/commit of the repository to use |
rtp |
Subdirectory that contains Vim plugin |
dir |
Custom directory for the plugin |
as |
Use different name for the plugin |
do |
Post-update hook (string or funcref) |
on |
On-demand loading: Commands or <Plug> -mappings |
for |
On-demand loading: File types |
frozen |
Do not remove and do not update unless explicitly specified |
Global options
Flag | Default | Description |
---|---|---|
g:plug_threads |
16 | Default number of threads to use |
g:plug_timeout |
60 | Time limit of each task in seconds (Ruby & Python) |
g:plug_retries |
2 | Number of retries in case of timeout (Ruby & Python) |
g:plug_shallow |
1 | Use shallow clone |
g:plug_window |
-tabnew |
Command to open plug window |
g:plug_pwindow |
vertical rightbelow new |
Command to open preview window in PlugDiff |
g:plug_url_format |
https://git::@github.com/%s.git |
printf format to build repo URL (Only applies to the subsequent Plug commands) |
Keybindings
D
—PlugDiff
S
—PlugStatus
R
— Retry failed update or installation tasksU
— Update plugins in the selected rangeq
— Abort the running tasks or close the window:PlugStatus
L
— Load plugin
:PlugDiff
X
— Revert the update
Post-update hooks
There are some plugins that require extra steps after installation or update.
In that case, use the do
option to describe the task to be performed.
Plug 'Shougo/vimproc.vim', { 'do': 'make' } Plug 'ycm-core/YouCompleteMe', { 'do': './install.py' }
If the value starts with :
, it will be recognized as a Vim command.
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
To call a Vim function, you can pass a lambda expression like so:
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
If you need more control, you can pass a reference to a Vim function that
takes a dictionary argument.
function! BuildYCM(info) " info is a dictionary with 3 fields " - name: name of the plugin " - status: 'installed', 'updated', or 'unchanged' " - force: set on PlugInstall! or PlugUpdate! if a:info.status == 'installed' || a:info.force !./install.py endif endfunction Plug 'ycm-core/YouCompleteMe', { 'do': function('BuildYCM') }
A post-update hook is executed inside the directory of the plugin and only run
when the repository has changed, but you can force it to run unconditionally
with the bang-versions of the commands: PlugInstall!
and PlugUpdate!
.
Tip
Make sure to escape BARs and double-quotes when you write the do
option
inline as they are mistakenly recognized as command separator or the start of
the trailing comment.
Plug 'junegunn/fzf', { 'do': 'yes \| ./install' }
But you can avoid the escaping if you extract the inline specification using a
variable (or any Vim script expression) as follows:
let g:fzf_install = 'yes | ./install' Plug 'junegunn/fzf', { 'do': g:fzf_install }
PlugInstall!
and PlugUpdate!
The installer takes the following steps when installing/updating a plugin:
git clone
orgit fetch
from its origin- Check out branch, tag, or commit and optionally
git merge
remote branch - If the plugin was updated (or installed for the first time)
- Update submodules
- Execute post-update hooks
The commands with the !
suffix ensure that all steps are run unconditionally.
On-demand loading of plugins
" NERD tree will be loaded on the first invocation of NERDTreeToggle command Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } " Multiple commands Plug 'junegunn/vim-github-dashboard', { 'on': ['GHDashboard', 'GHActivity'] } " Loaded when clojure file is opened Plug 'tpope/vim-fireplace', { 'for': 'clojure' } " Multiple file types Plug 'kovisoft/paredit', { 'for': ['clojure', 'scheme'] } " On-demand loading on both conditions Plug 'junegunn/vader.vim', { 'on': 'Vader', 'for': 'vader' } " Code to execute when the plugin is lazily loaded on demand Plug 'junegunn/goyo.vim', { 'for': 'markdown' } autocmd! User goyo.vim echom 'Goyo is now loaded!'
Note
Should I set up on-demand loading?
You probably don’t need to.
A properly implemented Vim plugin should already load lazily without any
help from a plugin manager (:help autoload
). So there are few cases where
these options actually make much sense. Making a plugin load faster is
the responsibility of the plugin developer, not the user. If you find
a plugin that takes too long to load, consider opening an issue on the
plugin’s issue tracker.
Let me give you a perspective. The time it takes to load a plugin is usually
less than 2 or 3ms on modern computers. So unless you use a very large
number of plugins, you are unlikely to save more than 50ms. If you have
spent an hour carefully setting up the options to shave off 50ms, you
will have to start Vim 72,000 times just to break even. You should ask
yourself if that’s a good investment of your time.
Make sure that you’re tackling the right problem by breaking down the
startup time of Vim using --startuptime
.
vim --startuptime /tmp/log
On-demand loading should only be used as a last resort. It is basically
a hacky workaround and is not always guaranteed to work.
Collaborators
- Jan Edmund Lazo — Windows support
- Jeremy Pallats — Python installer
License
MIT
vim-plug is distributed as a single Vim script file, so that it’s super easy
to get started. Just download the file and put it in the “autoload” directory.
Or you can simply run one of the following commands depending on your
environment.
Vim
#
Unix
#
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)
#
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni $HOME/vimfiles/autoload/plug.vim -Force
Neovim
#
Unix
#
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Windows (PowerShell)
#
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
Vim Plug is a popular plugin manager for Vim, simplifying the process of installing, managing, and updating plugins within Vim.
Plugins in Vim are used to add new features, enhance existing functionality, and customize the editor to suit specific needs and workflows. Vim Plug provides an efficient and straightforward way to handle plugins, making it easier for users to discover, install, and maintain plugins without compromising Vim’s performance or introducing unnecessary complexity.
In this blog post, I will discuss how to install Vim Plug and how to manage plugins using the Vim Plug plugin manager.
Table of Contents
Installation of Vim Plug
Installing Vim Plug is a straightforward process. You just need to execute a simple command on your terminal.
macOS and Linux
To install Vim Plug on macOS and Linux, open your terminal and enter the following command:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
After installing Vim Plug, restart Vim, or enter the following command to apply the changes:
:source $MYVIMRC
Windows
For windows users to install vim-plugin for using vim in powershell, first open powershell and enter the following command
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | `
ni $HOME/vimfiles/autoload/plug.vim -Force
After installing Vim Plug, restart Vim, or enter the following command to apply the changes:
:source $MYVIMRC
Verifying the Installation
To verify that Vim Plug has been installed correctly, open Vim and run the command:
:PlugStatus
If Vim Plug is functioning correctly, it will display a list of plugins (which should be empty at this point) in the Vim Plug window.
Adding Plugins using Vim-Plug
Once you have Vim Plug installed, you can start adding plugins to enhance Vim’s functionality.
Updating Your Vim Configuration
To add a plugin using Vim Plug, open your Vim configuration file. The file is typically located at ~/.vimrc
. If the file doesn’t exist, Vim will create one for you. Enter the following command to open your Vim configuration file:
vim ~/.vimrc
Add the following line to initialize Vim Plug:
call plug#begin('~/.vim/plugged')
"" Install your plugin here
call plug#end()
This line sets the directory where Vim Plug will manage your plugins. By default, plugins will be installed in the ~/.vim/plugged
directory.
Here is a sample .vimrc
file with some useful settings and plugins that you can copy and paste into your ~/.vimrc
configuration:
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugins area "
" "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
call plug#begin('~/.vim/plugged')
""""""" Vim appearance """""""
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
""""""" Search """""""
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } " File fuzzy search
Plug 'junegunn/fzf.vim'
Plug 'mhinz/vim-grepper' " AMAZING plugin for searching text inside project
call plug#end()
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Settings area "
" "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syntax on " enable syntax highlighting
set background=dark
set termguicolors " to enable true colors
set t_Co=256 " needed to work in Ubuntu terminal
set nocompatible " make Vim behave in a more useful way
set mouse=a " enable mouse in all modes (normal, visual, etc)
set nu " line number
Installing Plugins
To install a plugin with Vim Plug, you need to locate the plugin. You can directly install Vim plugins hosted on GitHub repositories using the username and repo name in the following manner:
Plug 'username/plugin-name'
For example, if you want to install the popular airline status line plugin in Vim, you should use the following command within your Vim plugin configuration:
call plug#begin('~/.vim/plugged')
"" Install your plugin here
Plug 'vim-airline/vim-airline'
call plug#end()
Then save the file and restart Vim or run the command :source $MYVIMRC
within Vim to reload the configuration file. Run the command :PlugInstall
within Vim. This command will download and install the specified plugins.
:PlugInstall
Vim Plug will display the progress of the installation in the Vim Plug window. Once the installation is complete, the plugins will be available for use.
Updating Plugins
It is recommended to periodically update your plugins to benefit from new features. Vim Plug provides a feature to sync and update installed plugins. To update a plugin, open your .vimrc
file and enter the following command:
:PlugUpdateVim
Plug will fetch updates for each plugin and install them, if available. The progress will be displayed in the Vim Plug window.
Removing Plugins
If you have unused plugins, it’s a good idea to remove them from Vim. This will help Vim load faster. You can remove any plugin you have installed with Vim Plug. To remove a plugin, open your .vimrc
file:
vim ~/.vimrc
Then remove the corresponding entry that you used to install the plugin in the first place. After removing the plugin entry, restart Vim or use the :source $MYVIMRC
command within Vim to reload the configuration file. Then enter the following command:
:PlugClean
Vim Plug will remove any plugins that are no longer needed, freeing up space and keeping your Vim environment clean.
Listing the Installed Plugins
If you are curious about which plugins are used in your Vim editor, you can quickly check the installed plugins with Vim Plug. To see the list of installed plugins, open Vim and enter the following command:
:PlugStatus
Vim Plug will display the status of each plugin, indicating whether it is installed or not.
Conclusion
In this blog post, we explored the powerful plugin manager Vim Plug and learned how to install, use, and customize plugins in Vim. Vim Plug simplifies the process of extending Vim’s functionality, allowing you to enhance your editing experience and boost productivity.
Getting started with vim can be feeling hard if all you’ve seen of vim is a scary old terminal editor. But fear not! When setting up your vim for success with the right plugins and color theme it will become your new best friend.
A quick note I use neovim as my «vim» editor and therefore I will show you the workflow with neovim in this article.
What is VIM?
«Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as «vi» with most UNIX systems and with Apple OS X.» taken from vim.org.
Now okay, that sounds awesome but why is it very efficient? Vim can be very efficient because of its smallness and simplicity, therefore it does not consume a significant amount of system resources as opposed to other editors.
What is Neovim?
Neovim is a continuation and extension of Vim. Neovim comes with the good parts of vim and more. Neovim has some architectural changes that bring more stability, performance and make the code more maintainable.
Installing Neovim
Neovim got a great wiki section regarding installing it that you can find here
How to install and use vim-plug for neovim.
The plugin manager I use for vim is vim-plug and therefore I will show you how to install that. There are more plugin managers you could use if you want to and feel free to find the one that suits your needs best.
Installing vim-plug for macOS/Linux
Run the following command inside your terminal.
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Enter fullscreen mode
Exit fullscreen mode
Installing vim-plug for Windows
Run the following command inside PowerShell.
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
Enter fullscreen mode
Exit fullscreen mode
How to use vim-plug
If you want to learn more on how to use vim-plug you can check out their tutorial
The basics of using vim-plug are:
- Begin the section with
call plug#begin()
- List the plugins with
Plug
commands -
call plug#end()
to update&runtimepath
and initialize plugin system- Automatically executes
filetype plugin indent on
andsyntax enable
. You can revert the settings after the call. e.g.filetype indent off
,syntax off
, etc.
- Automatically executes
- Reload
~/config/nvim/init.vim
and:PlugInstall
to install plugins.
You can reload your init.vim while still editing it by running :so %
Selecting a color theme for neovim.
Now that we got vim-plug installed we can get some colors 🎨
I will show you how to install gruvbox but here you can research and find a color scheme that suits you the best. Installing will be the same for most color schemes.
Inside the vim config add Plug 'morhetz/gruvbox'
reload your config and run :PlugInstall
After that, you need to add the following to your vim config. Beware that this does not have to be inside your plug section.
syntax enable
colors gruvbox
Enter fullscreen mode
Exit fullscreen mode
An example of how it could look inside your config 👇
call plug#begin()
Plug 'morhetz/gruvbox'
call plug#end()
syntax enable
colors gruvbox
Enter fullscreen mode
Exit fullscreen mode
Plugins to improve your developer experience
Some plugins I use daily to improve my developer experience is the following:
Plug 'nvim-telescope/telescope.nvim'
Plug 'scrooloose/nerdtree'
Plug 'itchyny/lightline.vim'
Enter fullscreen mode
Exit fullscreen mode
Telescope
Telescope is a highly extendable fuzzy finder over lists.
The following let’s you use telescope with the bindings of leader key then ff, fg, fb, fh.
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
Enter fullscreen mode
Exit fullscreen mode
Nerdtree
Nerdtree is a file system explorer.
To toggle Nerdtree add the follwing to your config:
nnoremap <C-Space> :NERDTreeToggle<CR>
This lets your toggle nerdtree with CTRL + Space
Lightline
Lightline is a light and configurable statusline/tabline plugin for Vim
An example of lightline:
Plugins for web development
When working with web development it’s nice to have the correct syntax highlighting, autocompletion and linting. I will now show the plugins I use when working with web development(Typescript, Next.js, React, etc.).
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'maxmellon/vim-jsx-pretty'
Plug 'pangloss/vim-javascript'
Plug 'leafgarland/typescript-vim'
Plug 'peitalin/vim-jsx-typescript'
Plug 'styled-components/vim-styled-components', { 'branch': 'main' }
Plug 'jparise/vim-graphql'
Enter fullscreen mode
Exit fullscreen mode
The first plugin I use is coc. Coc is a intellisense engine for VIM. Now the rest plugins I use are providing me with the correct syntax highlighting and autocompletion.
Improving the power of coc
Some extra small tips I have inside my config for coc is the following:
let g:coc_global_extensions = [
\ 'coc-tsserver'
\ ]
if isdirectory('./node_modules') && isdirectory('./node_modules/prettier')
let g:coc_global_extensions += ['coc-prettier']
endif
if isdirectory('./node_modules') && isdirectory('./node_modules/eslint')
let g:coc_global_extensions += ['coc-eslint']
endif
Enter fullscreen mode
Exit fullscreen mode
These make sure that coc with typescript is up to date and installed. Also, since I often use eslint and prettier in my projects I have configured coc to install the relevant coc extension for them if they’re being used.
Thank you for reading this blog post! You can find more posts like this on my website: pluppen.com
And at last, don’t forget to share your VIM config with me and show off your awesome vim environment.
package
script version
date
Vim version
user
release notes
plug.vim
0.8.0
2015-12-24
7.0
Junegunn Choi
New features:
— Added `commit` option for fine-grained version control
— Fixed issues with parallel installer on Windows and enabled it by default
Improvements:
— Changed `PlugSnapshot` to create Vim script using the new commit hash support
— `PlugDiff` shows pending updates for plugins locked on `commit` or `tag`
— Enhanced output format of post-update hooks
Issues resolved:
— Fixed Ruby installer to unshallowed tagged plugin on update (#350)
— Fixed output format of Neovim installer (#340)
— Remapped `q` in plug window to `bd` (#336)
— Fixed freeze in Python installer (#318)
— Case-sensitive validation of `on` arguments (#314)
— Fixed post-update hook not to run on error
— Fixed `for` option to load syntax files (#272)
— Fixed UnicodeDecodeError from Python installer (#262)
— `set nomodifiable` on commit preview window (#255)
plug.vim
0.7.2
2015-05-30
7.0
Junegunn Choi
— Parallel installer for Python 2.6+ and 3.0+
— Added support for Neovim Python
— Shallow clone by default
— PlugUpgrade using git
— Trigger User autocmd when plugin is loaded on-demand
— Do not add `git::@` to URI if git 2.3.0 or above is found
— Bug fixes and improvements
plug.vim
0.6.2
2014-12-12
7.0
Junegunn Choi
— Fixed issues with NeoVim (#118, #127)
— Fixed to remove any existing ODL triggers (#130, #132)
— Fixed to check for full match of command name when setting ODL triggers (#135)
— Minor improvements and fixes (#123, #131, #135)
plug.vim
0.6.1
2014-10-27
7.0
Junegunn Choi
0.6.1:
— Fixed PlugUpgrade on Neovim (#111)
— Changed not to suppress messages from ftplugin when loaded on-demand (#112)
— PlugInstall or PlugUpdate will now install frozen plugins as well (#113)
— Fixed not to yield empty path elements in &rtp (#114)
0.6.0:
— Asynchronous parallel installer for Neovim
— Added PlugSnapshot command
— Fixed PlugClean not to remove unmanaged plugins inside g:plug_home
plug.vim
0.5.7
2014-09-25
7.0
Junegunn Choi
Minor bug fixes and improvements
— Resolve symlinks in path to plug.vim (#67)
— `syntax enable` instead of `syntax on`
— Refactor PlugUpgrade (#72)
— Remove plugin directory on failure during installation (#75)
— Add `U` keybinding for updating plugins (#79)
— Use blackhole register when deleting lines
— Expand argument to plug#begin (#82)
— Suppress error messages from `which` command
— Improve &runtimepath mgmt (#85, #88)
— Enable syntax only during startup
plug.vim
0.5.6
2014-09-04
7.0
Junegunn Choi
— Added `g:plug_window` (#57)
— Changed URL for `PlugUpgrade` (#58)
— Added `g:plug_url_format` (#62)
— Fixed PlugDiff with git config `pull.rebase=true` (#64)
— Fixed commit review of `PlugDiff` when directory changed on BufEnter/BufLeave (#65)
— Changed not to print message after PlugUpdate when there was no update (#66)
plug.vim
0.5.5
2014-08-16
7.0
Junegunn Choi
0.5.2:
— Added `PlugInstall!` and `PlugUpdate!` for forced-run of post-update hooks
0.5.3:
— Added `-bar` option to the commands so that they can be written one line
with BARs. e.g. `PlugClean! | PlugInstall`
— Fixed `PlugUpgrade` so that a restart (or reload of .vimrc) is not required
even when a very old version of vim-plug is upgraded
— Removed redundant code for creating of `g:plug_home` directory
0.5.4:
— Added plug#helptags()
— Added plug#load(name…)
— Updated `:PlugStatus` to show which plugins are not yet loaded
— You load them with `L` key (visual range allowed)
— Updated `:PlugDiff` to allow reverting the update with `X` key
0.5.5:
— Use `git::` prefix to avoid password prompt on git 1.7 (#56)
— Allow Plug command even when git executable is not found (#52)
plug.vim
0.5.1
2014-07-31
7.0
Junegunn Choi
— Bug fixes and performance optimization.
— Removed support for Plugfile
plug.vim
0.4.0
2014-07-23
7.0
Junegunn Choi
— Added support for locally-managed plugins
— Plug expression should start with either `/`, `~`, or `$`
— Added `frozen` option for not updating/installing unless explicitly specifed
— Errors during help tag generation will be ignored
— Automatic retrial on timeout
— Added `R` keybinding for retrying failed update/installation
— Workaround for screen freeze problem on GUI MacVim
plug.vim
0.3.5
2014-07-09
7.0
Junegunn Choi
— Implemented <Plug>-based on-demand loading
— Fixed `after` directory and `Plugfile` on Windows
— Removed extraneous FileType events on filetype-based on-demand loading
plug.vim
0.3.4
2014-06-24
7.0
Junegunn Choi
Bug fixes and improvements
plug.vim
0.3.3
2014-06-22
7.0
Junegunn Choi
Bug fix in FT-based ODL
plug.vim
0.3.2
2014-06-21
7.0
Junegunn Choi
0.3.2
— Clear #filetypeplugin for filetype-based ODL (#24)
— Allow updating subset of plugins
— Allow -range in on-demand loading commands
— Allow trailing comment after Plug declaration (#23)
plug.vim
0.3.1
2014-06-17
7.0
Junegunn Choi
— Initialize git submodule
— Filetype-based on-demand loading
plug.vim
0.3.0
2014-04-23
7.0
Junegunn Choi
Bug fixes and improvements
plug.vim
0.2.0
2014-02-12
7.0
Junegunn Choi
Added support for on-demand loading of plugins
plug.vim
0.1.0
2014-01-12
7.3
Junegunn Choi
Initial upload