Revision as of 23:44, March 19, 2013

This tip presents suggestions for useful mappings. To qualify, each mapping should be short and should be useful for a common task. Other mappings belong in another tip.

This is a collection of unrelated mappings. You probably can't use all of them "as-is" at the same time. Assign your own left-hand-side as you see fit.

Visual mode blockwise indent

This keeps the current visual block selection active after changing indent with '<' or '>'. Usually the visual block selection is lost after you shift it, which is incredibly annoying.

vmap > >gv
vmap < <gv

Record into register 'q', playback with 'Q'

Set this map:

nnoremap Q @q

For quick recordings just type qq to start recording, then q to stop. You don't have to worry about the name this way (you just named the recording 'q'). Now, to play back the recording you just type Q. This will redefine the standard meaning of 'Q', but all that does is enter "Ex" mode which I can live without.

Copy

To copy text to the end-of-line, you can press y$ or you can use the following and press Y instead. This mapping sets up Y to be consistent with the C and D operators, which act from the cursor to the end of the line. The default behavior of Y is to yank the whole line.

nnoremap Y y$

To copy an entire line, and paste it before the current line:

nnoremap _ ggY``P

Use a count to specify the line number (default is line 1). For example, 12_ would copy line 12 to before the current line.

Delete

In normal mode, you can press D to delete all characters from the cursor to end-of-line. The following mapping allows Ctrl-Delete to do the same, in insert mode: :help i_CTRL-\_CTRL-O

inoremap <C-Del> <C-\><C-O>D

Search

It's easier to press Space than / for searching:

nmap <Space> /
nmap <C-Space> ?

Highlight text on the screen matching that under the cursor: Press Ctrl-k to start; each subsequent Ctrl-l matches one more character. Uses marks "x" and "y", and register "z".