Repo, .vimrc
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
voodoo command
- 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 2 i
s? You got
it!
- You want only some things to auto-reindent? You got it!
- 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 neutered
useless 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
is yy
, not
Y$
? 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 of
set
and let
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.
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.