Vim: Move cursor to its last position

The quickest way is to hit either:

''

(two apostrophes) or:

``

(two backticks). Note that the difference is that the backtick goes to the same location on the line, whereas the apostrophe goes to the start of the line. On a UK keyboard, the apostrophe is more accessible, so I tend to use that one. There are loads of useful marks like this, see :help mark-motions.

For some other motions (not 2j I think), there's also the jump-list that lets you navigate back and forth among a number of motions. CtrlO and CtrlI do this navigation, but see :help jump-motions for more information.


You can also use g; and g, to move back- and forward in the list of your previous edit locations.

On Non-US Keyboards

On my Swiss and German keyboard layouts, typing ; inconveniently requires using the Shift key. Hence, I defined g- as a more convenient alias for g; in $MYVIMRC:

" Map g- as an alias for g;
nnoremap g- g;

Why no one figured out the problem with DrAl's answer? The '' or `` will not solve the original problem of this post! These two command will not work for some cursor movement like 2j, at least for me. It will make newbie to vim more confused.

The behavior of '' or ``, and CtrlI or CtrlO are based on jump list. The 2j will not save the position changes into the jump list so these command will not work for 2j.

'' or `` switch between the last position and the current position. CtrlI and CtrlO work through the jump list history.

g; and g, move through edit positions, which are also very frequently used.