> ## Content Index
> Fetch the complete content index at: https://linuxhandbook.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Extend Vim's Functionality by Adding Plugins
- URL: https://linuxhandbook.com/install-vim-plugins/
- Published: 2022-10-06T03:59:23.000Z
- Updated: 2025-08-23T03:15:07.000Z
- Description: Vim's functionality can be extended with plugins. Here is how you can install and use plugins in Vim. Also learn about updating and removing the plugins.
- Author: Pratham Patel
- Tags: Vim Tips, Advanced Vim Concepts, #docs-col, #group-advanced-tips

Being one of the most popular text editors, Vim also influences other modern text editors. In fact, the Microsoft Visual Studio Marketplace has a Vim extension for VS Code; it has over **4 Million** installs. 

But what about improving Vim itself? Well, that is possible too! **Vim's functionality can be extended using "plugins"**. So let us see how you can add plugins to Vim.

There are two main ways you can install Vim plugins. 

- The easiest one is by using a plugin manager. This could be considered similar to a package manager, but for Vim.
- The second way is to manually clone repositories in specific directories.

I would not advise to install plugins manually. The manual method can get confusing and complicated when the number of plugins increases. It may mess up your Vim plugins if you mistakenly clone the plugin in the wrong directory.

I will thus demonstrate ***how you can add plugins to Vim using a plugin manager.***

## Vim plugin manager

As I mentioned earlier, using a plugin manager for Vim pays off in the long run when you have multiple plugins. So let's see how to install and use a Vim Plugin manager.

Several Vim plugin managers are available for you to choose from. Some of the most popular ones are:

- [vim-plug](https://github.com/junegunn/vim-plug?ref=linuxhandbook.com)
- [VAM](https://github.com/MarcWeber/vim-addon-manager?ref=linuxhandbook.com) (vim-addon-manager)
- [Vundle](https://github.com/VundleVim/Vundle.vim?ref=linuxhandbook.com)
- [vim-pathogen](https://github.com/tpope/vim-pathogen?ref=linuxhandbook.com)

Since I am using the vimplug plugin manager myself, that is what I will use in this article for demonstration too.

## Installing vim-plug plugin manager

To install vim-plug Plugin manager, all you have to do is run either one of the following commands:

```bash
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```

That's it! The vim-plug Plugin manager is now installed.

## Installing plugins using the vim-plug plugin manager

For this tutorial, I will use the vim-plug plugin manager to install the following Vim plugins:

- [fzf.vim](https://github.com/junegunn/fzf.vim?ref=linuxhandbook.com): A fuzzy finder
- [rust.vim](https://github.com/rust-lang/rust.vim?ref=linuxhandbook.com): Syntax highlighting for the Rust language
- [NERDTree](https://github.com/preservim/nerdtree?ref=linuxhandbook.com): A tree file explorer

To add a plugin, I will first add the following lines to my `.vimrc` file (or to `init.vim` for Neovim users):

```vim
call plug#begin()

Plug 'junegunn/fzf.vim'
Plug 'preservim/nerdtree'
Plug 'rust-lang/rust.vim'

call plug#end()
```

There are three distinct sections in the code snippet above.

The first section is `call plug#begin()`. This line tells Vim that we are beginning a section where we will define all the plugins that we want to install.

The second, third and fourth lines have the pattern `Plug 'user/repo'`. To understand what this means, we must go back to what plugins I said I would install. The first plugin was [fzf.vim](https://github.com/junegunn/fzf.vim?ref=linuxhandbook.com). If you go to the given hyperlink it will open the project in Github. If you are somewhat familiar with Github, you will realize that the owner/author of the `fzf.vim` plugin is 'junegunn', and the project name is 'fzf.vim'. Now, if you look back at the above code snippet, you will notice that `user` was replaced with 'junegunn' and `repo` was replaced with 'fzf.vim', the full line being `Plug 'junegunn/fzf.vim'`. This is how a plugin is specified. I did the same thing to add the rust.vim and NERDTree Vim plugin.

Finally, the last section--`call plug#end()`\--is used to tell Vim that all the plugins are defined and that the plugin section has ended.

---

Once the plugins are defined in the `.vimrc` file, they must be downloaded and installed. But do not worry; you don't need to manually download them.

To download and install the plugins, open Vim and then type the `:PlugInstall` command. Doing so will open up a pane to the left side and you will get a live view of the plugins being cloned and installed.

![Installing Vim plugins](https://linuxhandbook.com/content/images/2022/09/vim-plug-install.gif)

Once the installation is complete, you will see the line `Finishing ... Done!` in the left pane. Close Vim and re-open so that the plugins are cold-loaded.

Your plugins are installed, whoooooo!!!

## Updating installed plugins

As you saw, the `:PlugInstall` command will install all the plugins that are defined in `.vimrc` or in `init.vim`. But how do you update the plugins that are already installed?

Well, in that case, use the `:PlugUpdate` command. Using this command will update **all** the plugins.

Let's say that out of all the plugins that you have installed, you only wish to update a few, selectively. To update specific plugins, you can add the plugin names after the `:PlugUpdate` like so:

```vim
:PlugUpdate plugin0 plugin1
```

So, to update only the NERDTree plugin, I would run the following Vim command:

```vim
:PlugUpdate nerdtree
```

## Upgrading the plugin manager itself

A Vim command is provided with the vim-plug plugin manager to upgrade the plugin manager itself. To do so, run the following command:

```vim
:PlugUpgrade
```

## Removing installed plugins

To remove a plugin, remove the plugin definition line for the said plugin. 

For example, I had `fzf.vim` plugin defined in my `.vimrc` file; I will remove that line.

Once that is done, re-open Vim and run the `**:PlugClean**` command. That will remove any plugins that are installed but are not listed in the `.vimrc` file.

```vim
:PlugClean
```

## Conclusion

In this article, I demonstrate how you can extend Vim's functionality by using plugins. I also demonstrate how you can update and remove these plugins, including upgrading the plugin manager itself.

I hope you find it helpful in properly using plugins in Vim. Let me know if you have any questions.