I’ve been deep-diving on Vim lately, as I tend to every couple of years.
Check out my Vim 2019 Update.
In this rotation I’ve gone deeper than ever before—including going back to what makes Vim, well, Vim.
So this piece will capture as succinctly as possible what makes Vim different from other editors.
Reminds me of Android actually.
Basically, the whole thing with Emacs is utter, complete, and absolute configurability. If you can think of it, you can have it.
That’s nice I guess, but as someone once said,
Thanks, I already have an operating system.
I don’t mean that in a purely dismissive way, even though it sounds like it. I get that it’s cool that Android and Emacs have ultimate configurability. I really do. I played in those worlds for some time myself, and it really can be enjoyable.
I just prefer an editor that can I don’t have to think about.
But what I came to realize is that configurability is inversely correlated with both intuitiveness and predictability, and I prefer those.
Vim’s intuitiveness and dependability comes from language legos
As it turns out, the reason Vim is so intuitive is because it works like a language. If you know English well, and you know how to say, “I want”, and you tend to like cookies, then you know how to say, “I want cookies.”
But if you later learn that you like cake as well, you don’t have to relearn a completely new phrase. Instead, you can just combine what you know, “I want”, with the new thing—“cake”.
That makes it so that you don’t actually have to remember that much once you know the keywords, which are:
There are others as well.
So those are basically verbs, and the nouns are equally intuitive:
And then you have modifiers, like to
t, and find
f, which move up to and on top of the next instance of whatever you type next. So this would delete everything up to the next period (.).
Delete. To. Period.
That’s so easy to remember because we already know English, and Vim works in the same way! And the universal format looks like so:
<number> <command> <text object or motion>
Other editors—for whatever reason—don’t have this. They actually come up with largely independent commands for each thing, and they claim this is a strength because it’s infinitely configurable.
That’s cool. I get that. But the brain doesn’t have infinite recall, and you want your mind focused on your content—not on recalling a massive list of custom commands.
Bottom line here: Once you learn Vim you actually have far less to remember because you’re just connecting lego blocks that you already know from regular language.