Caveat, this post is going to be a rant; a rant about my learning Vim.
Here’s what I found. Two people, with the same mindset, and the same willpower, can take to Vim in a completely different manner. Why? Your typing style.
I think by now it’s fairly obvious that I like Vim. It doesn’t have to be ugly, too. In fact, it can be beautiful.
And, when switching to Vim, a lot of people suggest going cold turkey. This means various things, on various levels.
At the simple end of the spectrum, it can mean using Vim exclusively as your text editor, and completely removing the presence of any other editor, especially your favorite which you’ve come to rely on. It can also mean that if you’re very comfortable with the arrow keys, you completely disable them by nop’ping them out in your .vimrc file. It can also mean disabling the home, end, and delete keys as well, in the same way. By the way, I did all that.
All that’s well and good, but I find that given two people, with the same mindset, and the same willpower, can take to Vim in a completely different manner. One person can “get” Vim’s modal editing in a couple of days, while another can take a much, much longer time. I’m not talking about how fast you pick up the advanced stuff, or how good your memory is to remember the many, many commands and variations that Vim has. I’m talking about the basic “i”, “a”, “A”, “V”, “v”, “ctrl-v” and similar movements.
As you can probably guess, I’m the latter – the one that didn’t get it in a couple of days. Truth be told, this completely baffled me. So, I went on a rigorous examination of myself, and what exactly is causing me so much challenge in handling this very awesome editor.
Your typing style matters
I think I’ve figured it out. Well, for me at least – It’s how you type.
It wouldn’t be a stretch to realize that not everybody types the same way, and certainly, not everybody types according to the standard typing methodology. In fact, most of us would abuse our fingers to type in whatever way is most comfortable, and possibly the fastest, if you care about speed. Now, I don’t think that I’m a slow typist by any means. On a pure English text (my master language), I can hit 130wpm on a bad day, and 160wpm on a good day. I’m not sure about you, but I think that’s reasonable?
However, the key thing about the way I type is that I have kind of my own “technique”. What I have been subconsciously doing, and what I’ve only realized over the last week while literally scrutinizing how my fingers do their little dance over the keyboard, are three things:
- I don’t type in a manner close to the “standard” typing method at all
- I don’t use all ten of my fingers (I use seven, and the occasional eight)
- I don’t use the same finger for the same key, across different words
The key point is the last one. Again, subconsciously, over the past 20 years, I’ve essentially built up a corpus of words, to which I attach a particular muscle-memory to execute the typing of that word. Every word is different, and I’ll type each word in the using the same fingering. However, it does not mean that I use a particular finger for a particular key. For instance, when I type the word “please”, I hit “p” with my third finger (rolling down to the “l” with my index finger). But when I type the word “pay”, I hit the “p” with my fourth finger.
Put simply, I unknowingly optimized (or tried to) for the strongest fingers to hit the keys, and to roll fingers as much as possible instead of using a single finger to hit two different (nearby) keys. This goes on for every word that I know. That corpus of words extends not just to English, but even code, and their related symbols like “;” and “:“.
And in case you’re wondering, no, I don’t look at the keyboard with this typing style. In fact, here’s my daily war horse:
So what’s the issue?
For a new Vim user, this is bad. Terribly bad. Vim’s language of movement/editing commands are built upon (largely) single letter keystrokes that perform an action. “d” deletes, “c” changes, “u” does undo, “i” goes into insert, and so on. There are hundreds of them. And they all rely on exactly one thing – your being able to hit that key, on it’s own, by touch, with total accuracy.
And here’s the catch: I don’t have a corpus of how to type the 26 letters individually. Well, I should, but I don’t, because I’ve hardly needed that. This means that when I need to hit a particular key, because I cannot rely on muscle memory to hit that key without thinking (I use different fingers depending on the context), it becomes a conscious effort, sometimes even a struggle, to perform what I want in Vim.
An obvious example. The “u” (undo) and “i” (insert) keys are right beside each other. I don’t make mistakes between typing the words “instance” and “ugly”, ever. But when I want to go into insert mode, more than half the time I end up undo-ing some action, which is very frustrating. Similarly, when I want to hit “j” to move down, I end up hitting “k” and moving upwards. But “joking” and “killing” are two very different words that I hardly mistype.
All in all, what it takes would be to develop accurate muscle memory for the 26 English alphabets, and I would be at the same starting point as a person who does not use my quirky manner of typing. Well, that, or relearn typing. It’s not anywhere near insurmountable, but it’s something that made me realize that even hitting individual letters matters.
I also know that after a while, if I keep at it, my corpus of words would extend to Vim’s internal language, such as “caw”, “ci(”, and so on.
In short, I’m writing this really as a point in time realization of what is frustrating me, and also out of curiosity about whether anybody else is facing the same problem. I’m also believe that this is something that people may not realize is itself a hindrance against an editor that makes so much use of individual keys, especially so during the learning phase, before keystroke combinations such as ggVg= becomes second-nature.
I believe I’m on my way there, but I also believe that it’s a little harder (and more annoying) for me as compared to someone who is lucky, in a sense, to use the same finger for the same key, every time.