

If you have failed to grok vim, ditch the arrow keys - bw2
http://h6o6.com/2013/03/start-groking-vim-ditch-the-arrow-keys/

======
ominous_prime
I always liked the way this answer was presented as vim via vi.

> Your problem with Vim is that you don't grok vi.

[http://stackoverflow.com/questions/1218390/what-is-your-
most...](http://stackoverflow.com/questions/1218390/what-is-your-most-
productive-shortcut-with-vim/1220118#1220118)

------
kps
If you have failed to grok vi[m], you need two things. First, to understand
just a little of two other editors, ed and TECO. Second, to know that vi's
_real_ modes are not what the naïve user, and sadly most documentation, call
‘modes’; they are line mode (ed mode) and visual mode (TECO mode).

ed is a line editor based on search-and-replace using regular expressions. To
edit existing text, you typically locate it with a search and change it with a
replace. Sometimes you refer to nearby lines with .±n addressing, and
sometimes by absolute line number (having printed a few lines with the ‘n’
command); and sometimes you change entire lines (with ‘c') rather than doing a
replacement; but really, search-and-replace is where it's at. vi's line mode,
which you enter with ‘Q’ or more commonly one-off with ‘:', is just ed on
steroids.

TECO is a character stream oriented editor, or, if you prefer, a programming
language for manipulating streams of text.
[http://scientopia.org/blogs/goodmath/2010/11/30/the-
glorious...](http://scientopia.org/blogs/goodmath/2010/11/30/the-glorious-
horror-of-teco/) is a decent short introduction. TECO text manipulation
functions have an optional count, a function name (one or two characters), and
an optional argument terminated by ESC. That should already look familiar;
vi's visual mode is watered-down TECO. Sure, many of the functions have
different names — vim's ‘h’ and ‘l’ are TECO's ‘r’ and ‘c’ — but some are the
same: ‘i’ followed by an argument (i.e. some text) terminated by ESC is the
function that inserts its argument before the current editing point. It's
counterproductive to think of vi as having an ‘insert mode’ and ‘append mode’
and ‘replace mode’ and ‘substitute mode’ and whatnot, just as it would be
conterproductive to think of the _x_ in _sin(x)² + cos(x)²_ as being in ‘sine
mode’ or ‘cosine mode’.

Spend an hour with ed and an hour with TECO, and you'll begin to grok vi.

------
cdash
Why not just use jikl instead if you don't want to lift your hand to move to
the arrow keys. I am kind of tired of seeing this obsession with trying to get
everyone to use hjkl which just doesn't make any actual sense. I totally get
the point about the arrow keys requiring you to lift your hand but you can
accomplish the same arrow key logic while keeping your hand in the same place.

~~~
vacri
'i' already has a function in vim - one of the most frequently used ones.

~~~
arthulia
He makes a good point though. You could switch insert to the h key and do it
this way.

Upsides: \- ijkl is easier for users learning vim. \- don't have to shift your
fingers over to h key

Downsides \- rebind insert to h (not really a big deal) \- middle finger is
now responsible for up and down (I honestly don't see this having much effect
on efficiency)

I'm tempted to try this, but I hate the feeling of not being familiar with a
vanilla config. What if I have to use somebody else's machine?

~~~
vacri
The issue with rebinding is that you'll only encounter your bindings on your
machine. If you're frequently on machines that don't have your custom profile,
that's an issue.

I'm having trouble getting off the arrow keys myself - because they work
regardless of whether you're in insert mode or not...

~~~
arthulia
> The issue with rebinding is that you'll only encounter your bindings on your
> machine. If you're frequently on machines that don't have your custom
> profile, that's an issue.

I mentioned that at the end of my post.

~~~
vacri
Weird, not sure how I missed it. Sorry.

------
snarfy
My #1 trick/recommendation? Use Control-[ instead of the Esc key. It's less
hand travel and keeps your fingers on the home keys. It's all about minimizing
your arm movements.

The same goes for hkjl. The arrow keys are too far away, that's why you use
hkjl. Embrace the lazy and you'll grok vim.

~~~
nnnnni
False!

The #1 trick is to swap control and caps lock. The #2 trick is to use
control-[

~~~
raylu
Have you considered swapping Esc and Caps Lock instead? Caps Lock is not very
useful so tossing it into the corner makes sense to me.

~~~
Kluny
You can do both, actually. Using KeyRemap4Macbook, my esc is now capslock, and
my capslock is ctrl if I use it with another key, such as ctrl-s, and esc when
I use it on its own.

------
a_p
As someone who uses a custom variant of the Dvorak layout, one thing about Vim
that I find annoying is the that the navigation keys only make sense for a
Qwerty keyboard. I know that it is easy to do a custom remap but nevertheless
I find that it is harder to learn the commands when the keyboard shortcuts are
no longer intuitive (e.g not using d for delete, etc.)

~~~
beatgammit
I'm in the same boat. I don't use hjkl for this very reason. I haven't
remapped my keyboard because I'm constantly having to use a coworker's
keyboard (most of which use Qwerty), and it's just easier to remember keys
instead of positions on the keyboard. Everything works except HJKL...

------
whatshisface
Google's cache: (the site is down as I am typing this.)

[http://webcache.googleusercontent.com/search?q=cache:h6o6.co...](http://webcache.googleusercontent.com/search?q=cache:h6o6.com/2013/03/start-
groking-vim-ditch-the-arrow-keys/)

~~~
bw2
Hey guys, I got an unexpected amount of traffic from this one and I am trying
to fix it, thanks for the cache link!

------
mortehu
If you're spending a significant amount of time navigating with with arrows
keys or hjkl, maybe you should switch on incremental search and start using
/[FOO], ?[FOO], t[FOO], b, w, %, ^ and $ more. It's highly unlikely that
character-by-character movement will be the fastest way to navigate.

Alt+character is the same as Esc followed by character if you want to speed up
your escaping without using a non-standard keyboard layout.

<http://i.stack.imgur.com/uq2M1.jpg>

------
armored_mammal
I can't use vim effectively because I constantly try to navigate using WASD.

I know I can bind it, but the thought of rebinding every command and then
being dependent on towing the configuration to every computer I'd ever use
scares me.

So I use it on occasion with the same artfulness as someone on crutches trying
to dance.

Maybe someday someone will default an 'FPS' control layout.

~~~
gnosis
The best way to learn to use vim's hjkl movement keys it to play nethack.

------
CoffeeDregs
I have probably tried 3 times to ditch the arrows and use hjkl and I've failed
each time. What is the trick to overcoming this? Perhaps it's that I've done
it while at work that has caused the issue (ie. I need to be productive now!).
Pick a weekend and force the switch?

~~~
jfabre
www.vim-adventures.com :)

~~~
nnnnni
Or play nethack!

~~~
CoffeeDregs
Dude, that's a fantastic suggestion!

------
bcl
Go one step further. Try to stop using hjkl

I am not even close to being able to do this yet, but I keep reminding myself
to use other movement commands and search instead. Eventually it will be
faster.

