There are many options you have. One option, and IMO the sanest and easiest is to just stop disabling the arrow keys. I understand why many hardcore vimmers say things like
You should never ever use the arrow keys again! Every time you use the arrow keys, you waste 3 minutes of time, a puppy dies and somebody switches to Emacs!
(Obviously I'm kidding) However, there is a purpose for the arrow keys. They're extremely useful for navigating:
In insert mode
In the command line
Generally when people tell you not to use the arrow keys, it's because they want you to relearn navigation in a more vim-like way. If you are comfortable with hjkl
, and you mostly use the arrow keys in insert mode, there's no good reason to force yourself not to use them.
Option #2 is to remap ctrl-hjkl
to act like cursor keys. This is nice because you can stay on the homerow, and it fits well with the muscle memory you have already learned using hjkl
in normal mode. In fact, this is what I do. The major downside to this approach is that in can be a pain to setup in terminal vim because <C-j>
produces a NUL
byte. I get around this by using Gvim. I am not aware if there is an easy fix for console vim or not.
Option #3 is to use <C-o>
to make small normal mode movements. For example, if you are typing
Hello world!
cursor^
and you realize you forgot a comma, rather than doing leftleftleftleftleftleft, you could simply do <C-o>b<C-o>h
or <C-o>2Fo
, or any other combination of normal mode movements you like.
Of course, another option, and one I like very much is to just use Esc, make a few small movements before jumping back in to insert mode. You mentioned that you'd rather not do that, but sometimes this really is the most efficient way.
There are probably some other approaches too, but these are the ones I like that have worked for me.