Vim Plugins Without a Plugin Manager
Vim and Neovim are incredibly extensible. New features can be implemented in Vimscript, packaged as a plugin, and published on Github. Vim users customize the editor to their liking by installing a set of plugins, sometimes so many that it becomes hard to keep an overview.
Do You Need a Plugin Manager?
Most Vim users rely on a 3rd party plugin manager such as vim-plug, pathogen, Vundle, or NeoBundle. The plugin manager facilitates, to a certain extent, the tasks of installing, updating, and loading plugins.
It seems to be little known, though, that Vim and Neovim have builtin support for that.
In fact, support for packages has been around for several years now.
To find out more, type
:help packages in an editor session.
Unless you have a particular reason to run a specific 3rd party plugin manager, the answer is “no, you don't need one”. Consider switching to the builtin solution and removing the legacy plugin manager.
This is what I have done recently. Read on for a brief overview.
Initially, create a
This is where the plugins will be located.
mkdir -p ~/.vim/pack/default/start
mkdir -p ~/.local/share/nvim/site/pack/default/start
default is just an arbitary name. You can choose something else if you prefer.
To install a plugin, find out the URL of its repository.
Most are on Github.
Clone the repository into the
start directory created above.
cd ~/.local/share/nvim/site/pack/default/start git clone https://github.com/tpope/vim-sensible.git git clone https://github.com/vim-airline/vim-airline.git git clone https://github.com/morhetz/gruvbox.git
You may want to add the
--depth option in the
git clone command in order to truncate the history to a reasonable number of commits.
To get the latest update foe a plugin, run
git pull from within the respective repository. For instance:
cd ~/.local/share/nvim/site/pack/default/start/vim-sensible git pull
To update all plugins, execute something like this:
for p in ~/.local/share/nvim/site/pack/default/start/* do (echo $(basename "$p"); cd "$p"; git pull) done
This is the easiest part: plugins in the
start directory are loaded automatically.
There is no need to load anything explicitly in
Be sure to remove any
Plug statements or similar artifacts that refer to the legacy plugin manager.