35,779
stars
+1
1,929
forks
359
watchers
273
prs
1,046
issues
9
releases
0
discussions
README
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][40/4] parallel installation/update
- Creates shallow clones to minimize disk space usage and download time
- On-demand loading for [faster startup time][startup-time]
- Can review and rollback updates
- Branch/tag/commit support
- Post-update hooks
- Support for externally managed plugins
[40/4]: https://raw.githubusercontent.com/junegunn/i/master/vim-plug/40-in-4.gif
[startup-time]: https://github.com/junegunn/vim-startuptime-benchmarkresult
Installation
Download plug.vim
and put it in the "autoload" directory.
Click to see the instructions
Vim
Unix
sh
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][auto].
[auto]: https://github.com/junegunn/vim-plug/wiki/tipsautomatic-installation
Windows (PowerShell)
powershell
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |
ni $HOME/vimfiles/autoload/plug.vim -Force
Neovim
Unix, Linux
sh
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)
sh
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)
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)
1. Begin the section with call plugbegin()
1. List the plugins with Plug commands
1. End the section with call plugend()
For example,
vim
call plugbegin()
" List your plugins here
Plug 'tpope/vim-sensible'
call plugend()
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]
plugend() 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 reveTop issues
#852Error when I try to install plugins on Windows15 comments · 2019-06-25#1270Make automatic installation script in wiki tips compatible with Neovim9 comments · 2024-03-05#1093PlugUpdate fails sometimes over SSH: "Could not read from remote repository"9 comments · 2021-05-13#998Invalid URI : ^A9 comments · 2020-07-22#1088unable to run vim-plug on WSL28 comments · 2021-04-19#1301vim-plug fails when running :PlugInstall citing git version requirement; git for windows 2.47.1.windows.1 is installed7 comments · 2025-01-02#1216PlugInstall threw "not an editor command" on Windows7 comments · 2022-10-11#1192[help] Vim-plug canot be loaded 7 comments · 2022-07-23
Latest release
0.15.0 0.15.0 2026-11-07- Added g:plug_disable_credential_helper (default: 1). Set it to 0 to keep the git credential helper enabled (1047)
- Allowed command modifiers for on-demand-loading commands, e.g. :tab Git diff (1110) (@subnut)
- Used the job API for system() calls in GUI Vim to reduce overhead (1325) (@jgb)
- Made on-demand loading faster
- Used isdirectory() to check plugin directories (1340) (@mattn)
- Skipped BufRead for an unnamed empty buffer (1341) (@mattn)
- Stopped loading Python and Ruby libraries when they are not needed (1344) (@Coacher)
- Fixed PlugStatus reporting divergence when