I saw a post on lobsters that piqued my interest. Peter over at catonmat.net made a large list of vim plugins that they use.
It seems like a large amount of plugins - but everyone has their own set of
preferences as to how they work, and I’d wager a guess that they’re better at
vim than I’ll ever be ;) I’m the kind of guy who presses j
15 times much more
often than ctrl-f
and I don’t often use my leader key. /shrug
There’s a few in the list that I’m looking forward to trying out:
- markonm/traces.vim - visual feedback of changes via
:s/
. I often screw this up, so it sounds great. - airblade/vim-rooter - change project root to
.git
(or other “known files”) - a.vim - alternate between
.c
and.h
easily
I’m going to go from top-to-bottom of my list of plugins rather than alphabetical - primarily due to laziness.
Experience-improving plugins
The following plugins enhance the way I use vim, but are not language specific.
justinmk/vim-dirvish
vim-dirvish
is a directory browser for vim. Honestly, that’s probably ’nuff
said. I press -
and walk around the fs.
sjl/gundo.vim
gundo.vim
creates a visual tree of your undo history. Basically, git-esque
history for your in-progress changes.
vim-arline/vim-arline
vim-airline
is a simple tabline for vim. It’s not remotely as heavy as the
tablines of old. There’s a number of themes and integrations for this.
ctrlpvim/ctrlp.vim
Fuzzy path finder for files, buffers, tags, etc. I have this hooked up to ,p
(for files) and ,b
(for buffers) for ease-of-use.
talek/obvious-resize
talek/obvious-resize
makes resizing splits extremely simple. I have these
mapped to CTRL-<dir>
. Supposedly works with tmux as well, but I don’t use
that functionality.
tpope/vim-eunuch
vim-eunuch
implements UNIX helpers within vim. Generally use this for
:SudoWrite
and :SudoEdit
, but :Rename
is helpful as well.
tpope/vim-fugitive
Hands-down the best git integration with vim. I don’t want to waste words here, just check the README and enjoy.
tommcdo/vim-fugitive-blame-ext
Extremely simple extension to vim-fugitive
that shows the first line of
the commit message when exploring with :Gblame
.
gregsexton/gitv
gitk
for vim (using vim-fugitive
). No longer maintained, but works well.
Extremely helpful if you don’t want to look at git commits separately.
Shougo/deoplete.nvim
Dark powered asynchronous completion framework for neovim/Vim8
Shougo, possibly the most productive vim plugin developer ever - has quite a history with autocomplete helpers in vim. This is the one I’ve been using since switching to neovim. Works well, and that’s all I could ask for.
rhsyd/committia.vim
Great integration for writing commit messages in vim. Provides a commit message window, diff window, and git status window.
Set $EDITOR
to vim and enjoy writing commit messages in vim.
chrsm/vim-colors-paramount
My own slight tweak of owickstrom/vim-colors-paramount.
Language-specific vim plugins
autozimu/LanguageClient-neovim
The (IMO) de facto implementation of a language server client in vim. Supports anything you’d expect from such a client, including go-to-definition, rename, hover for type info, symbol query, etc.
w0rp/ale
LSP-enabled linting plugin. Pretty much every language is supported. It also supports go-to-definition and find-references.
stephpy/vim-yaml
Provides syntax highlighting for yaml. Vim has this by default but it is slow.
vim-ruby/vim-ruby
Better ruby integration with vim. I’ll probably end up removing this as I don’t have to write ruby anymore :)
posva/vim-vue
Syntax highlighting for Vue.js and integrates with ALE.
fatih/vim-go
Go support for vim. Updated frequently, provides gopls
for language client,
as well as other Go-specific utilities.
sebdah/vim-delve
Support for the (best) Go debugger, delve.
rhysd/vim-clang-format
Implements support for clang-format
in vim. I use this for C++.
rust-lang/rust.vim
Implements rust syntax highlighting and ft detection. Formats via rustfmt.