I’ve used vim since 2001 when I swapped over from emacs. Today the plugins I use, beside language syntax specific ones are
fzf-vim has been the most productive one for me. Mostly because it makes it so quick to change between buffers. Learning to use buffers was the biggest productivity boast for me in the last couple of years. In an elixir (with fish shell) I just open all the files and navigate using fzf.
$ vim lib/**/*.ex lib/**/*.eex
The I have the config
nmap <silent> bg :Buffers<CR> in
bg normal mode takes me to a fuzzy search for files. A simple key sequence would be:
bg page contr<CR> to open up
lib/someapp_web/controller/page_controller.ex and I am in the right buffer. So quick, so responsive. The later versions also got a preview pane of the buffer you are selecting. Pretty cool.
I do the same for massive java projects as well. Just
vim src/**/*.java and together witch
ctags and I can just fly around in the code base. No GUI editor comes even close.
Apart from that I try to use as much vanilla vim as possible.
Lately I am writing typescript for a project and I added coc and coc-tsserver to the plugins because having type hints is nice. Unfortunately the added latency to the editor makes in not worth it. I don’t want to wait for my editor.
This is why I find VSCode and Intellij almost unusable. The latency to do things is stopping me from working properly. It doesn’t give the correct feedback and sometimes misses my key strokes. Never happens with vim. Those editors are slow and temperamental. They don’t always do what I tell them to. In general I don’t like slow things and find the modern computing environment challenging with slow web pages and software. It shouldn’t have to be that way. It should be better.