Objectively, Vim is the fastest editor. Is that what you care about?
That is, if you can use a keyboard. Even at 60 WPM; I clock 100 and using in-browser text entry feels like the stone age.
Look, if you’re not first and foremost talking about the point of Vim and whether it’s the right tradeoff for you or not, your discussion isn’t valid.
End of story.
Why, oh WHY, do those #?@! nutheads use vi? gets it. Haven’t seen any other that does yet.
What’s the point?
It’s a:
- high investment, high reward
- composable key bindings (e.g., ci“Replacement string“, cat for change the whole HTML element I’m on ATM, paragraph, sentence, whatever)
- repeatable key bindings (just press
.
) - text editing language
- closest text editor to express what you mean (e.g., change that string to this string, not ctrl-arrow-arrow-shift-…)
It’s interactive, faster, and more intuitive than just plain find-and-replace, even with regexes!
It’s like the Brainfuck of editing, except that it’s practical, mnemonic, and understandable.
- You can jump to the text to change faster than anybody else.
- You can change just that text faster on average than others.
- You can then repeat the same edit elsewhere, with just one or two keys, not retyping that for every occurence.
I really don’t care about the opinion of EMACSen (still relevant in
2021?), VSCoders, Atomists, or JetJavabrains. Objectively Vim has
lower latency and often higher throughput on the things I care
about.
I don’t care about most of the plugins… or for that terrible little terminal window that you keep insisting on only taking ⅕ of your screen space and not resizing.
I do care about PyCharm’s embedded SQL strings autocompletion.
Do you keep mashing the arrow keys 10 times? Do you have to press 30 keys to do that simple boring edit that your refactoring tools (know the exist? even work?) can’t do?
Join the cult.
Yes, we have it
- Fuzzy searching¹, EVERYTHING
- Git repo
- Method, var, class, whatever names (tags)
- Jump immediately to that one bit of source code in the entire repo of 70 000+ lines of code, because you know exactly the two words to look for?
- Fuzzy searching your search history
- Fuzzy searching the past Vim
voodoocommand
- Jump to definition, generic debugger support? Dude, we all factored
that out years ago? LSP—language server protocol and DAP—debug adaptor
protocol.
- Perhaps just use Ctrl-] for an instant, daemonless search instead.
- Syntax highlighting
- Even COBOL, SNOBOL, PostScript, Brainfuck, Dracula, RFC 822 email, you name it.
- Hyper-customization
- You want typing
i
to insert 2i
s? You got it! - You want only some things to auto-reindent? You got it!
- You want typing
- Instantly open a 2 GiB file? Yeah! ’course!
- Run a terminal inside NeoVim, so you can treat it just like another text file, with all your fancy fast key bindings, and easily copy-paste text to and from. Do that VSCode!
¹: fzf
and fzf.vim
Shitlist
The distros that call Vim, Vi, but ship you a
neutereduseless version of Vim with all the good features disabled.All this talk of NerdTree, this extension, that extension, when for the first little while, you really need to just focus on the basics of Vim.
action × motion
Making (Neo)Vim do things other than text. Seriously, just embed NeoVim in your fancy IDE or whatever then.
Embarrassing bits
All the bad defaults.
Y
isyy
, notY$
? Missing a bunch of key bindings like]q
to go to the next match from your linter? I wish there was a--no-backwards-compat
--no-insane-defaults
mode so I didn’t need two pages ofset
andlet
s in my~/.vimrc
.The regex-based syntax highlighting
- Not the only ones though.
- I hate the heredocs edge cases in shell and Ruby. It cannot recognize a pipeline after the heredoc marker.
tree-sitter
still beta in NeoVim, as of this writing.- Must look into how well Vis’ PEGs—parser expression grammars, perform.
- What the Vis FAQ points out, or its differences.
Good, but not best in class performance
- If it doesn’t work on my 2008 1-core 1.5 GHz netbook, it’s not good enough.
- Being far better than VSCode, Eclipse, and PyCharm is not an achievement.
- Why Busybox Vi, Heirloom Vi, and Vis still have a niche.
No sandboxing of plugins or even parts of the editor itself
- I would not use Vim on untrusted input.
- Some plugins can immensely reduce Vim’s main process’ responsiveness.
- Plugins really need to have version and file checksum pinning, and come from a static analysis-policed repository.
Meh list
- Old, heirloom, 1990s, Vi. So many missing features.
- Busybox Vi is OK. It’s a good backup on that 4 MiB of RAM router.
- It’s good to preserve that history, but you should not use it practically unless in the most constrained environment, in which case you’ll probably just use busybox.