When you know one or two languages like C or Java, learning another is a piece of cake. Browse documentation about syntax, get to know some basic quirks and that is everything you need to start writing much more complicated programs than hello world.
Problems start when you try to learn a fundamentally different language than the ones you already know. For example, if you work only with OO languages then switching to functional paradigm can be painful. If you know just the class-based object paradigm then picking-up prototype-based may be hard. Learning another solution is sometimes even harder than the first choice. This is because while you are learning your brain confine its perspective to a single path for specific problems. When you try to meet another path you struggle not only with new things but also with the things which you used to know – you have to beat the temptation to follow the easy way, the one you already know with all its traps, problems and strengths.
Finally, when you overcome such problems, you realize that you are better programmer, with broadened view, and even if you are still programming in the “old way” your code is much better.
Wasn’t it about Vim?
The same problem concerns your editor. Unless you are vim or emacs user, when you hear “editor” you think about textarea with a bunch of tools around. Like Visual Studio, Eclipse, RubyMine or Sublime. So, when you try to use Vim, you struggle not just with learning a new tool, but most of all with a new way of thinking. And that’s hard.
The Vim way of thinking
The key to understand vim is what we call a vim grok. When using it you are actually talking to your editor what to do. Use u for Undo, r for Replace, ctrl-r for Redo, c for Change, i for Insert, a for Append, d for Delete etc. But that is still not sexy. Use vit for Visualize In Tag. Or, with some help, use dar for Delete Around Ruby block. Isn’t that beautiful? To have a pleasure experience with Vim you have to speak the same language. Otherwise it’s like communicating with a foreign using an ad-hoc sign language.
Of course, not every vim command can be expressed in that way. For example, to yank into global, system register, you have to use “+y (or “+p to paste from it), which you cannot easily translate into human language. But you don’t have to understand everything from the first sight, right? There are others really powerful forces in Vim grok, like dot command, macros, regexes, registers… And I have not mentioned tons of plugins yet.
The final question, why?
Ask yourself if you can find anything new for you in your current editor, something that would improve your performance. I bet that is false if you are using it longer than couple of months. It was probably false after couple of weeks… if not days.
In vim it is always true – and I treat that as a biggest advantage of this editor. Vim has so many features and it could be extended in so many ways, that even after years you will still be exploring new things and asking yourself “why I didn’t know that earlier?” But do not be afraid – you can successfully run with Vim after much shorter time. Just give it a try and resist the urge to turn back to the easy path, the one you already know well.
Extend your view, improve your skills. You have nothing to loose, you can only gain.