◐ Shell
clean mode source ↗

Great VIM Plugins in 2026

This list contains all VIM plugins that I’ve used at some time in the past and found potentially helpful and of sufficient quality.

Nowadays I only load a small set of plugins at startup and add whatever I need on demand with VIM 8's :packadd. I think that a lot of VIM plugins out there aren't very useful anyways. They either replicate features that are already available in vanilla VIM or try to do things in a very un-vimmy way.

  • create a folder named pack inside your .vim (vimfiles on Windows) configuration folder
  • direct subfolders of pack can be used to organize packages/plugins into collections (e.g., text editing, file management, …)
  • put plugins that should be loaded at startup into

    .vim/pack/<collection>/start/<plugin>

  • put plugins that should be added on demand with :packadd into

    .vim/pack/<collection>/opt/<plugin>

See here for more.

Pathogen
Very simple: can be used to add a bunch of plugin folders to VIM's runtimepath. Does neither download nor update plugins.
Vim-Plug
can download and update plugins
Vundle
can download and update plugins
vim-clap

Generic fuzzy finder and dispatcher. A more modern and faster alternative to vim-fzf). Lets you find files, commands, help topics, …

You should use it together with the insanely fast ripgrep (instead of grep) as file system crawler.

I've whipped up a few additional clap providers for args, changes, chistory, lhistory, options, packages, spellfix, tabs, undo, tasks lsp_symbols, unicode, thesauraus. Not super-well tested.

vim-fzf

VIM integration of the FZF fuzzy selection command line tool. Lets you fuzzy find files, commands, help topics, …

You should use it together with the insanely fast ripgrep (instead of grep) as file system crawler.

Quickfix Reflector

Super intuitive mass-editing within hundreds of files using VIM's quickfix list.

  • use grep or any other method to populate the quickfix list with file locations
  • edit quickfix entries with all VIM tools (change, substitute, ...)
  • or remove quickfix lines of files that you don't want to be affected by changes
  • apply all changes to the actual target locations by saving the quickfist lit
yeggapan-LSP

Language Server Protocol Client

  • written in fast Vim9 script (requires Vim v9)
  • supports more LSP features than most other LSP plugins and ALE
  • code completion (auto or manual)
  • semantic highlighting
  • live highlighting of variable occurrences, read/write access
  • popup 'peek' at definition/declararion/etc.
  • inline annotations (virtual text)
  • inlay hints, like type annotations for auto variables
  • fuzzy code symbol search
  • snippet completion (supports vsnip/ultisnips plugins)
  • works well with clangd and various other language servers
  • highly customizable
  • also supports integration with ALE (if you really want to use both)
ALE

Great integration of linters, compilers as linters, fixers/formatting tools and LSP language servers (as linters and for completion and code navigation). Requires VIM 8 or NeoVim.

Not really necessary (any more) if you use a fully featured LSP client.

  • pure VimScript
  • works well with clangd or gcc
  • highly customizable
  • can also be used alongside yeggapan-LSP
TComment

(un-)commenting commands and text objects for selecting comments

asynctasks.vim

manage and excute tasks asynchronously (build, clean, run, …) based on simple tasks files; different profiles for release, build, Linux, Windows, etc. possible; easy to integrate with vim-clap or vim-fzf

Vista

Provides a window for viewing and searching LSP symbols and/or tags. Similar, but faster and more feature rich than the classic tagbar plugin.

works well with LSP clients like yeggapan-LSP or ALE

vim-CMake

CMake integration

  • adds CMake build window
  • populates quickfix list with build errors
  • enables easy switching between CMake build configurations
  • autocompletion for build targets, build configurations and tests
  • statusline information
vim-cmake-help

View CMake documentation inside Vim (>= 8.2.4980).

SHSwitch

Switch between header and source file. Much better and more lightweight than the old 'a.vim' plugin but not needed if you use a good LSP client.

braceless

commands, text objects and visual aides for coding in whitespace-aware languages like Python

vim-cpp-modern

enhances the built-in filetype plugin; adds additional modern C++ keywords and language constructs

NeoDebug

Debug with gdb/pdb/lldb in VIM. Shows current instruction and breakpoints in code; windows for debugger console, locals, registers, stacks, threads, breakpoints, disassembly, watch expressions.

Similar to, but more user friendly and feature-rich than VIM's termdebug package. I found that it just works without any setup hassle.

vim-textobj-ifdef

Text objects i#/a# (alternative i3/a3) for C preprocessor regions delimited by #ifdef, #ifndef, #else, #elif, #endif, etc.

unfortunately not well documented, but it works flawlessly

vim-vsnip

Code Snippets

  • nested placeholders
  • nested snippet expansion
  • supports the VSCode snippet format and SnipMate-like syntax
  • can load snippets from VSCode extensions
  • works together with many completion/LSP plugins (also needs vim-vsnip-integ )
Qt

C++ (additional keywords), qmake, qml, qbs, qrc xml, ui xml, ts xml

Doxygen Toolkit

Fugitive

A suite of git wrapper commands. Also a great tool for crafting git commits. Probably the best feature is a git status-like overview of all changes that allows staging/unstaging on file-level, hunk-level or line-level. Also allows calling of arbitrary git commands from VIM (with completion of commands, tags, etc.).

Can be augmented with "Rhubarb" which allows browsing files/commits/etc. on GitHub directly from VIM.

Git Gutter

Shows a git-based quick diff (working dir vs. HEAD) in the sign column. Also comes with a lot of useful commands for hunk-wise staging, undoing etc. Could be a bit faster, but you can turn it on and off as you see fit.

ConflictMotions

Motions for navigating version control merge conflicts.

Git-Lens

A vim9 plugin inspired by VCCode's GitLens. Auto-displays time of change, author and commit message on any line of code.

Repeat

Repeat more actions with the . command.

Should be built-in.

Surround

Commands & text objects for surrounding selections with parentheses, braces, quotes, XML tags, …

A must have for coding; should be built-in.

Exchange

Exchange the contents of selections/text objects.

Should be built-in.

Pencil

Makes writing prose in VIM a lot less painful.

CleverF

Improves the f/t commands in a very intuitive way and also frees up the , and ; keys.

vim-visual-multi

Multiple Cursors for VIM. For the occasions when VIM's gn motion isn't powerful enough or you need more visual feedback.

Very nice plugin! Substantially faster, less buggy, better visual feedback and a lot more features than the old Multiple Cursors plugin. Actually the first incarnation of multiple cursors in VIM that I really like.

As an alternative to multiple cursor editing you can put a mapping like nnoremap <silent> M *``cgn in your vimrc to quickly replace the word under the cursor by pressing M. This can be repeated with ., so one can jump to and replace the next occurrence or use n to skip to the next occurrence without replacing.

EasyAlign

Align text into columns; lots of neat options.

Textmanip

Move or duplicate selections/lines around.

Argument Text Object

Text objects for comma-separated regions; e.g., in function parameter lists.

CamelCaseMotion

Motions based on sub-words in CamelCase, snake_case, dash-case, etc.

Variable Segment Text Object

Text objects that select sub-words in CamelCase, snake_case, dash-case, etc.

Pairs Text Object

Adds several text objects for regions that are delimited by quotes, points, etc.

Niceblock

Makes block-wise prepending/appending with I and A available in all visual modes (not just block-wise mode). Should probably also be built-in functionality.

Indent Text Object

Text objects based on the current indent level. Great for indentation-based languages or markup (Python, HAML, etc.)

Surround-Funk

Commands & text objects for changing/deleting/yanking surrounding function names or function calls (name + arguments in parentheses).

You should make sure that the mappings don't interfere with the classic Surround plugin (esp. ys). You can simply deactivate the defaults and define mappings in the vimrc (just copy them from the readme and adapt them to your liking).

Replace With Register

Replace a motion/text object with the contents of the default register without changing the register content.

Tip: In Vim 9 you can use upper case P in visual mode to paste without affecting registers.

IndentWise

Motions based on indent levels. Lets you jump to prev/next block with same/less/more indent.

Endwise

Automatically insert end-of-block delimiters in languages that don't use braces (fi, endfunction, etc.)

abolish

Easily search for, substitute, and abbreviate multiple variants of a word.

Has a nice coerce feature that let's you transform between case styles (snake_case, CamelCase, Title Case).

SpellCheck

Collects all spelling errors in the quickfix list.

Cycle

A vim plugin to toggle words between pairs or lists of related words.

TableMode

Useful if you have to work with a lot of Markdown tables.

Whitespace Text Object

Let's you quickly delete/select contiguous regions of whitespace.

Word Column Text Object

Text object for selecting whitespace-separated columns. Useful for working with tab-separated data.

LaTeX Text Object

Text objects for various LaTeX regions (math, environments,…).

LaTeX Unicoder

A plugin to type Unicode chars in Vim, using their LaTeX names.

Line Text Object

Adds a text object for selecting the content of the current line (without the whitespace before and after).

After Text Object

Adds text object to select text after designated characters.

Titlecase

Teach Vim about Title Case, with support for motions and text objects.

Vinarise

Hex editing for VIM.

Traces

Live highlight of patterns and range commands (substitute, global, …). Super useful when crafting complex regex searches and/or replacements. Should be built-in functionality.

Poppy

Highlights different levels of matching delimiters (parentheses, braces, …) in different colors.

Cursorword

Underlines all occurrences of the word under the cursor. Fast; useful for spotting spelling errors in code and redundancy in prose.

CssColor

Live preview of colors for constants like red, #ffa, rgb(0,0,255), …

KiTTY Navigator

Seamless window/split navigation between KiTTY windows and VIM windows.

TMUX Navigator

Seamless window/split navigation between TMUX windows and VIM windows.

Highlighted Yank

Flashes the text range that is selected by a yank command like yip. Speed and color can be configured.

Matchup

Highlight/navigate to/delete/change matching delimiters including if/else/endif/#ifdef/#endif pairs. More reliable and feature rich replacement for VIM's standard plugins matchit and matchparen. Provides i%/a% text objects for any delimiter, ds% and cs% mappings for deleting and changing delimiters (compatible with the Surround plugin) and more. Can display off-screen matches in the status line. Supports many different languages.

BufExplorer

Shows a list of all open,unlisted,etc. buffers and provides commands for managing them.

Signature

Shows marks in the sign column. Lets you also define additional markers with m1, m2, etc. that can be on multiple lines at the same time (great for tagging lines that belong to one topic).

UndoTree

Show the undo tree and let's you navigate it (switch between revisions).

PopupScrollbar

Displays a scrollbar on the right side of the current window based on the popup window feature of newer VIM versions. Nice UI enhancement, especially if you are using VIM in the terminal.

There's also an alternative for NeoVIM .

vim-cpp-modern

enhances the built-in filetype plugin; adds additional modern C++ keywords and language constructs

Qt

C++ (additional keywords), qmake, qml, qbs, qrc xml, ui xml, ts xml

CSV

GCOV

HTML5

Bio Sequences

Supports FASTA, FASTQ, SAM, BAM, PAF; also gives information on SAM/BAM flags, scores, etc.

DXF

Highlighting for non-binary DXF Files

Believe it or not, VIM already has a built-in file manager called netrw. However some people (including me) feel that it is too clumsy to use.

I mostly use a fuzzy finder like vim-clap (nowadays) or vim-fzf (in the past) for file opening, buffer switching, etc. and EasyTree as tree viewer when exploring new and large projects.

EasyTree

Simple tree viewer that is faster than NERDTree in my experience.

  • view and browse the file tree (same as NERDTree)
  • create, delete, copy, move files and directories in usual VIM fashion (yank/paste)
  • displays git status (untracked, modified, staged, etc.)
nnn.vim

Integration of the excellent command line file explorer nnn into vim. Offers commands for file picking and a file explorer window. Substantially faster than NERD Tree and a no-brainer if you already use nnn (which you probably should).

File Renamer

Lets you (mass) rename files in a directory using vim editing commands. Can be quite useful and way faster and a lot more usable than other renaming tools or shell scripts.

dirdiff

vim-diff two directories

Vimcolorschemes

An aggregator site that lists colorschemes from GitHub. Shows preview images and let's you browse schemes by category (light, dark), recently updated, trending, top, etc.

Gruvbox8

An improved version of the original Gruvbox scheme . In comes in a light and a dark version each having 3 contrast modes.

The improved version loads faster, has better documentation and the 256 color version is a better approximation of the true color version than in the original Gruvbox scheme.

PaperColor

Light & dark color schemes.

Vim|One

Light and dark schemes based on the "One" color scheme for the Atom editor.

onedark

Dark color scheme based on the "One" color scheme for the Atom editor.

Solarized8

Improved version of the classic solarized scheme that loads faster. Comes in light and dark versions.

Nightfox

3 dark and 2 light schemes

vim-space-theme

dark and light schemes similar to solarized

Nord

dark blueish color scheme

Everforest

greenish color schemes; light & dark in three contrast levels

Tempus

collection of themes for Vim, text editors, and terminal emulators that are compliant at the very least with the WCAG AA accessibility standard for colour contrast

AM Colors

My personal color scheme(s). Dark scheme, light scheme and hight-contrast light scheme for presentations.

Websites



fzf
sudo apt install -y fzf
ripgrep
sudo apt install -y ripgrep
tig
sudo apt install -y tig
git clone https://github.com/AndrewRadev/popup_scrollbar.vim.git
git clone https://github.com/BurntSushi/ripgrep.git
git clone https://github.com/EdenEast/nightfox.nvim.git
git clone https://github.com/Eliot00/git-lens.vim.git
git clone https://github.com/Julian/vim-textobj-variable-segment.git
git clone https://github.com/Matt-A-Bennett/vim-surround-funk.git
git clone https://github.com/NLKNguyen/papercolor-theme.git.git
git clone https://github.com/PhilRunninger/nerdtree-visual-selection.git
git clone https://github.com/Shougo/vinarise.vim.git
git clone https://github.com/VundleVim/Vundle.vim.git
git clone https://github.com/Xuyuanp/nerdtree-git-plugin.git
git clone https://github.com/Xuyuanp/scrollbar.nvim.git
git clone https://github.com/airblade/vim-gitgutter.git
git clone https://github.com/andymass/vim-matchup.git
git clone https://github.com/anyakichi/vim-textobj-ifdef.git.git
git clone https://github.com/ap/vim-css-color.git
git clone https://github.com/arcticicestudio/nord-vim.git
git clone https://github.com/b4winckler/vim-angry.git
git clone https://github.com/bfrg/vim-cmake-help
git clone https://github.com/bfrg/vim-cpp-modern.git
git clone https://github.com/bkad/CamelCaseMotion.git
git clone https://github.com/bounceme/poppy.vim.git
git clone https://github.com/cdelledonne/vim-cmake.git
git clone https://github.com/chrisbra/csv.vim.git
git clone https://github.com/christoomey/vim-titlecase.git
git clone https://github.com/christoomey/vim-tmux-navigator.git
git clone https://github.com/coderifous/textobj-word-column.vim.git
git clone https://github.com/cpiger/NeoDebug.git
git clone https://github.com/dhruvasagar/vim-table-mode.git
git clone https://github.com/fedorenchik/qt-support.vim.git
git clone https://github.com/hrsh7th/vim-vsnip-integ.git
git clone https://github.com/hrsh7th/vim-vsnip.git
git clone https://github.com/inkarkat/vim-SpellCheck.git
git clone https://github.com/itchyny/vim-cursorword.git
git clone https://github.com/jarun/nnn.git
git clone https://github.com/jeetsukumaran/vim-indentwise.git
git clone https://github.com/jlanzarotta/bufexplorer.git
git clone https://github.com/joom/latex-unicoder.vim.git
git clone https://github.com/joshdick/onedark.vim.git
git clone https://github.com/junegunn/fzf.git
git clone https://github.com/junegunn/fzf.vim.git
git clone https://github.com/junegunn/vim-after-object.git
git clone https://github.com/junegunn/vim-easy-align.git
git clone https://github.com/junegunn/vim-plug.git
git clone https://github.com/kana/vim-niceblock.git
git clone https://github.com/kana/vim-textobj-line.git
git clone https://github.com/knubie/vim-kitty-navigator.git
git clone https://github.com/kshenoy/vim-signature.git
git clone https://github.com/kurkale6ka/vim-pairs.git
git clone https://github.com/kuznetsss/shswitch.git
git clone https://github.com/lifepillar/vim-gruvbox8.git
git clone https://github.com/lifepillar/vim-solarized8.git
git clone https://github.com/liuchengxu/space-vim-theme.git.git
git clone https://github.com/liuchengxu/vim-clap.git
git clone https://github.com/liuchengxu/vista.vim.git
git clone https://github.com/machakann/vim-highlightedyank.git
git clone https://github.com/markonm/traces.vim.git
git clone https://github.com/mbbill/undotree.git
git clone https://github.com/mcchrish/nnn.vim.git
git clone https://github.com/mg979/vim-visual-multi.git
git clone https://github.com/michaeljsmith/vim-indent-object.git
git clone https://github.com/mktle/dna.vim.git
git clone https://github.com/morhetz/gruvbox.git
git clone https://github.com/muellan/am-colors.git
git clone https://github.com/muellan/vim-clap-more.git
git clone https://github.com/muellan/vim-filetype-dxf.git
git clone https://github.com/othree/html5.vim.git
git clone https://github.com/qpkorr/vim-renamer.git
git clone https://github.com/rakr/vim-one.git
git clone https://github.com/rbonvall/vim-textobj-latex.git
git clone https://github.com/reedes/vim-pencil.git
git clone https://github.com/rhysd/clever-f.vim.git
git clone https://github.com/sainnhe/everforest.git
git clone https://github.com/scrooloose/nerdtree.git
git clone https://github.com/skywind3000/asynctasks.vim.git
git clone https://github.com/stefandtw/quickfix-reflector.vim.git
git clone https://github.com/t9md/vim-textmanip.git
git clone https://github.com/terryma/vim-multiple-cursors.git
git clone https://github.com/tommcdo/vim-exchange.git
git clone https://github.com/tomtom/tcomment_vim.git
git clone https://github.com/tpope/vim-abolish.git
git clone https://github.com/tpope/vim-endwise.git
git clone https://github.com/tpope/vim-fugitive.git
git clone https://github.com/tpope/vim-pathogen.git
git clone https://github.com/tpope/vim-repeat.git
git clone https://github.com/tpope/vim-rhubarb.git.git
git clone https://github.com/tpope/vim-surround.git
git clone https://github.com/troydm/easytree.vim.git
git clone https://github.com/tweekmonster/braceless.vim.git
git clone https://github.com/vim-scripts/ConflictMotions.git
git clone https://github.com/vim-scripts/DoxygenToolkit.vim.git
git clone https://github.com/vim-scripts/GCov-plugin.git
git clone https://github.com/vim-scripts/ReplaceWithRegister.git
git clone https://github.com/vim-utils/vim-space.git
git clone https://github.com/w0rp/ale.git
git clone https://github.com/will133/vim-dirdiff.git
git clone https://github.com/yegappan/lsp.git
git clone https://github.com/zef/vim-cycle.git

Last updated: 2026-06-01

Found this useful? Share it: