DEV Community

hacking C++
hacking C++

Posted on • Updated on

Fantastic (and lesser known) VIM Plugins in 2023

You won't find the "NERDTree", "ALE", "surround-vim" and all the other big names on this list - there's already a gazillion of VIM plugin lists with those around.
While some of the following plugins might not have thousands of stars on Github they are nevertheless absolute gems and have been reliable and invaluable daily companions of mine.

My other lists:

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 simply by saving the quickfix list
  • do more edits, saves, ... Screenshot


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


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


Underlines all occurrences of the word under the cursor. Super fast and useful for spotting variable occurrences or spelling errors in code and redundancy in prose.


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 vim-multiple-cursors plugin. Actually the first incarnation of multiple cursors in VIM that I actually like and use every day.

Highlighted Yank

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


Generic finder and dispatcher like vim-fzf. Lets you fuzzy find files, commands, help topics, etc. Still very young, but seems very promising and works smoothly. You should use it together with the insanely fast ripgrep (instead of grep) as file system crawler. I found it to be faster and more convenient than vim-fzf and also easier to extend.


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 really well with LSP clients like ALE and integrates with vim-clap.


Lets you manage and excute tasks asynchronously (build, clean, run, ...) based on simple task files. It’s also super easy to define different profiles for release, build, Linux, Windows, etc.


Switch between C or C++ header and source file. Much better and more lightweight than the old 'a.vim' plugin.


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.


Align text into columns; lots of neat options.

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.


Augments VIM’s built-in increment/decrement feature (<C-a>/<C-x>) so that you can also toggle between pairs of words or cycle through lists of related words like true/false, yes/no, weekdays, months, etc. You can also add your own word lists.


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).

Angry Text Object

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


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.

Indent Text Object

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

Word Column Text Object

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

After Text Object

Provides a text object to select text after designated characters. Example: ca= for changing after =

Line Text Object

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

Whitespace Text Object

Provides a text object for quickly deleting/selecting contiguous regions of whitespace.

#ifdef Text Object

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.


Shows a per-file undo tree and let's you navigate it (switch between revisions).


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


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").


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 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.

AM Colors


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



ampresent - High Contrast Light Scheme



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.
Image description

Top comments (0)