Find file Copy path
154 lines (119 sloc) 5.24 KB
*unimpaired.txt* Pairs of handy bracket mappings
Author: Tim Pope <>
License: Same terms as Vim itself (see |license|)
This plugin is only available if 'compatible' is not set.
INTRODUCTION *unimpaired*
This plugin provides several pairs of bracket maps.
NEXT AND PREVIOUS *unimpaired-next*
The following maps all correspond to normal mode commands. If a count is
given, it becomes an argument to the command. A mnemonic for the "a" commands
is "args" and for the "q" commands is "quickfix".
*[a* |:previous|
*]a* |:next|
*[A* |:first|
*]A* |:last|
*[b* |:bprevious|
*]b* |:bnext|
*[B* |:bfirst|
*]B* |:blast|
*[l* |:lprevious|
*]l* |:lnext|
*[L* |:lfirst|
*]L* |:llast|
*[<C-L>* |:lpfile|
*]<C-L>* |:lnfile|
*[q* |:cprevious|
*]q* |:cnext|
*[Q* |:cfirst|
*]Q* |:clast|
*[<C-Q>* |:cpfile| (Note that <C-Q> only works in a terminal if you disable
*]<C-Q>* |:cnfile| flow control: stty -ixon)
*[t* |:tprevious|
*]t* |:tnext|
*[T* |:tfirst|
*]T* |:tlast|
*[<C-T>* |:ptprevious|
*]<C-T>* |:ptnext|
[f Go to the file preceding the current one
alphabetically in the current file's directory.
]f Go to the file succeeding the current one
alphabetically in the current file's directory.
[n Go to the previous SCM conflict marker or diff/patch
hunk. Try d[n inside a conflict.
]n Go to the next SCM conflict marker or diff/patch hunk.
Try d]n inside a conflict.
LINE OPERATIONS *unimpaired-lines*
[<Space> Add [count] blank lines above the cursor.
]<Space> Add [count] blank lines below the cursor.
*[e* *v_[e*
[e Exchange the current line with [count] lines above it.
*]e* *v_]e*
]e Exchange the current line with [count] lines below it.
OPTION TOGGLING *unimpaired-toggling*
On Off Toggle Option
*[ob* *]ob* *yob* 'background' (dark is off, light is on)
*[oc* *]oc* *yoc* 'cursorline'
*[od* *]od* *yod* 'diff' (actually |:diffthis| / |:diffoff|)
*[oh* *]oh* *yoh* 'hlsearch'
*[oi* *]oi* *yoi* 'ignorecase'
*[ol* *]ol* *yol* 'list'
*[on* *]on* *yon* 'number'
*[or* *]or* *yor* 'relativenumber'
*[os* *]os* *yos* 'spell'
*[ou* *]ou* *you* 'cursorcolumn'
*[ov* *]ov* *yov* 'virtualedit'
*[ow* *]ow* *yow* 'wrap'
*[ox* *]ox* *yox* 'cursorline' 'cursorcolumn' (x as in crosshairs)
The mnemonic for y is that if you tilt it a bit it looks like a switch.
PASTING *unimpaired-pasting*
These are experimental:
*>p* Paste after linewise, increasing indent.
*>P* Paste before linewise, increasing indent.
*<p* Paste after linewise, decreasing indent.
*<P* Paste before linewise, decreasing indent.
*=p* Paste after linewise, reindenting.
*=P* Paste before linewise, reindenting.
|]p|, |[p|, |[P|, and |]P| have also been remapped to force linewise pasting,
while preserving their usual indent matching behavior.
*[op* *]op* *yop*
A toggle has not been provided for 'paste' because the typical use case of
wrapping of a solitary insertion is inefficient: You toggle twice, but
you only paste once (YOPO). Instead, press [op, ]op, or yop to invoke |O|,
|o|, or |0||C| with 'paste' already set. Leaving insert mode sets 'nopaste'
ENCODING AND DECODING *unimpaired-encoding*
Each of these operations has a map that takes a motion, a map that
targets [count] lines, and a visual mode map. The linewise variant integrates
with repeat.vim.
Mnemonic: encoding always comes before decoding; "[" always comes before "]".
*[x* *[xx* *v_[x*
[x{motion} XML encode.
[xx <foo bar="baz"> => &lt;foo bar=&quot;baz&quot;&gt;
*]x* *]xx* *v_]x*
]x{motion} XML decode. HTML entities are handled as well.
*[u* *[uu* *v_[u*
[u{motion} URL encode.
[uu foo bar => foo%20bar
*]u* *]uu* *v_]u*
]u{motion} URL decode.
*[y* *[yy* *v_[y*
[y{motion} C String encode. Backslash escape control
[yy characters, quotation marks, and backslashes.
*]y* *]yy* *v_]y*
]y{motion} C String decode.