Never assume the usefulness of a tool by its age. After all, they still use hammers in spaceship construction. This is also true for Vim, a text editor with its roots deep in UNIX. Though it was released back in 1991, it maintains an avid community of developers and users. Not only because so many are still trying to figure out how to exit it.

why do you use vim?

Much like Notepad++ and Sublime, Vim is a text editor rather than full-fledged IDE. This means that almost all functionality is added via plugins. From language-specific syntax checking to handy UI additions and code snippet libraries – there’s something for everyone. At the time of writing, there are 18,959 plugins listed on VimAwesome alone

While this does indicate that there’s an active community of Vim plugin developers out there, it also creates quite a challenge. How in the world is a dev to pick? 

Let us help.

Our list of 15 essential VIM plugins includes the best and most reliable plugins out there that are bound to streamline and improve your work in Vim.

15 Essential Plugins for VIM

1. The NERD Tree

nerdtree

The NERDTree is a file system explorer for the Vim editor. It lets you visually explore complex directory hierarchies in the form of a tree (as the name suggests). With The NERDTree, you can quickly open files for reading or editing and perform basic file system operations using your keyboard and mouse. The plugin can be extended with custom mappings using a special API that you can read more about in the plugins’ documentation.

2. TabNine

You will probably forgive us for the shameless plug(in) as soon as you install our TabNine plugin and use our free multi-language predictive code autocomplete tool. TabNine Indexes your whole project, reading your .gitignore to determine which files to index. It leverages a mnemonic completion engine to save you having to type out long file names and paths. With zero configuration needed and high responsiveness (get suggestions in less than 10 milliseconds!), TabNine is worth trying out.

3. Syntastic

syntastic

Syntastic is a syntax checking plugin for Vim that runs files through external syntax checkers then displays any resulting errors to the user. This can be done on demand, or automatically as files are saved. Syntastic has checking plugins for most development languages out there, so it’s worth checking out no matter what language (or languages) you code in.

4. ack.vim 

Many developers opt for ack over grep as the search function for enhanced results. For Vim users, this plugin allows searching with ack from within Vim and shows the results in a split window.

5. ALE – Asynchronous Lint Engine

ALE (Asynchronous Lint Engine) is a plugin providing linting (syntax checking and semantic errors) in NeoVim 0.2.0+ and Vim 8. It acts as a Vim Language Server Protocol client, and aims to “lint as you type”.

6. fzf ❤️ vim – fzf.vim

fzf is a general-purpose command-line fuzzy finder, but in itself is not a Vim plugin. The official repository only provides the basic wrapper function for Vim, leaving it up to the users to write their own Vim commands with it. Since this can be a drag, June Gunn created this repository with a bundle of fzf-based commands and mappings extracted from their own .vimrc . These include the “default” implementation of the features users can find in the alternative Vim plugins.

7. Rainbow brackets for Vim

rainbow brackets for vim

Rainbow brackets / parentheses are not only a colorful addition to your code editor of choice, but a necessary tool to help to discern nested code. This plugin adds Rainbow brackets to Vim while using the default rainbow colors copied from gruvbox color scheme.

8. vim-colors-solarized

solarized-vim

There are numerous color schemes out there for Vim. However, Solarized tends to stay popular with users across IDEs and code editing tools. If you’re one of the fans of Solarized, it’s available as a plugin.

9. lightline

lightline

Lightline is a light and configurable statusline/tabline plugin for Vim. Forked from the deprecated vim-powerline, lightline is a minimalistic plugin that does not depend on other plugins for functionality. At the same time, it lets users configure and customize it to their needs.

10. The NERD Commenter

It is very hard to understate the importance of comments in efficient and maintainable code. The NERD Commented plugin defines itself as “a Vim plugin for intensely nerdy commenting powers”. The plugin can digest a great variety of different file types and properly comment  each. It can handle single line, multi line, partial line commenting as well as nesting.

11. vim-commentary

This plugin is one of several developed by Tim Pope that have made it into our list. vim-commentary is extremely simple to use: Use gcc to comment out a line (takes a count), gc to comment out the target of a motion (for example, gcap to comment out a paragraph), and gc in visual mode to comment out the selection. That’s it.

12. vim-surround: surround.vim: quoting/parenthesizing made simple

The second in our Tim Pope collection is vim-surround. No, it won’t make you able to hear Vim in stereo surround, but will help you manage your parentheses, brackets, quotes, XML tags, and more. The plugin provides mappings to easily delete, change and add such “surroundings” in pairs.

13. vim-fugitive: fugitive.vim

This plugin by Tim Pope shamelessly dubs itself “A Git wrapper so awesome, it should be illegal”. Hence the name – Fugitive. The main feature of Fugitive is :Git (or just :G), which calls any arbitrary Git command. As the documentation states: “If you know how to use Git at the command line, you know how to use :Git.”

14. vim-gitgutter

gitgutter

If you’re making use of git repositories in your development process, this well-maintained plugin is a must have. Vim-gutter shows a git diff in the sign column, including which lines have been added, modified, or removed.

15. vim-plug: Minimalist Vim Plugin Manager

That’s a lot of plugins to install and manage! So last but not least on our list is another plugin by June Gunn that will help you keep the rest of your VIM plugins organized – vim-plug. This simple and lightweight plugin manager requires no boilerplate code and also supports externally managed plugins.

It’s worth remembering that while they do add functionality, old and unused plugins are best removed from your code editor of choice, be in VIM or another. Even when they don’t break things or create potential security issues, they still waste precious system resources when they are loaded on startup.

About the author

Eyal heads the growth team at Codota and is also an avid uphill skier. While not a coder Eyal likes trying to answer difficult Java coding questions only using Google search. Ask him in the comments and see what comes out.