QUICKREF
*quickref.txt* For IdeaVIM version 0.12.0. Last change: 2006 Dec 31
IdeaVIM REFERENCE MANUAL by Rick Maddy
Quick reference guide
*quickref* *Contents*
tag subject tag subject
|Q_ct| list of help files |Q_re| Repeating commands
|Q_lr| motion: Left-right |Q_km| Key mapping
|Q_ud| motion: Up-down |Q_ab| Abbreviations
|Q_tm| motion: Text object |Q_op| Options
|Q_pa| motion: Pattern searches |Q_ur| Undo/Redo commands
|Q_ma| motion: Marks |Q_et| External commands
|Q_vm| motion: Various |Q_qf| Quickfix commands
|Q_ta| motion: Using tags |Q_vc| Various commands
|Q_sc| Scrolling |Q_ce| Ex: Command-line editing
|Q_in| insert: Inserting text |Q_ra| Ex: Ranges
|Q_ai| insert: Keys |Q_ex| Ex: Special characters
|Q_ss| insert: Special keys |Q_ed| Editing a file
|Q_di| insert: Digraphs |Q_fl| Using the argument list
|Q_si| insert: Special inserts |Q_wq| Writing and quitting
|Q_de| change: Deleting text |Q_st| Starting VIM
|Q_cm| change: Copying and moving |Q_ac| Automatic commands
|Q_ch| change: Changing text |Q_wi| Multi-window commands
|Q_co| change: Complex |Q_bu| Buffer list commands
|Q_vi| Visual mode |Q_sy| Syntax highlighting
|Q_to| Text objects |Q_gu| GUI commands
|Q_fo| Folding
N is used to indicate an optional count that can be given before the command.
*Q_lr* Left-right motions
|h| N h left (also: CTRL-H
, <BS>
, or <Left>
key)
|l| N l right (also: <Space>
or <Right>
key)
|0| 0 to first character in the line (also: <Home>
key)
|^| ^ to first non-blank character in the line
|$| N $ to the last character in the line (N-1 lines lower)
(also: <End>
key)
|g0| N g0 to first character in screen line (differs from "0"
when lines wrap)
|g^| N g^ to first non-blank character in screen line (differs
from "^" when lines wrap)
|g$| N g$ to last character in screen line (differs from "$"
when lines wrap)
|gm| N gm to middle of the screen line
|bar| N | to column N (default: 1)
|f| N f{char}
to the Nth occurrence of {char}
to the right
|F| N F{char}
to the Nth occurrence of {char}
to the left
|t| N t{char}
till before the Nth occurrence of {char}
to the right
|T| N T{char}
till before the Nth occurrence of {char}
to the left
|;| N ; repeat the last "f", "F", "t", or "T" N times
|,| N , repeat the last "f", "F", "t", or "T" N times in
opposite direction
*Q_ud* Up-down motions
|k| N k up N lines (also: CTRL-P
and <Up>
)
|j| N j down N lines (also: CTRL-J
, CTRL-N
, <NL>
, and <Down>
)
|-| N - up N lines, on the first non-blank character
|+| N + down N lines, on the first non-blank character (also:
CTRL-M
and <CR>
)
|_| N _ down N-1 lines, on the first non-blank character
|G| N G goto line N (default: last line), on the first
non-blank character
|gg| N gg goto line N (default: first line), on the first
non-blank character
|N%| N % goto line N percentage down in the file. N must be
given, otherwise it is the |%| command.
|gk| N gk up N screen lines (differs from "k" when line wraps)
|gj| N gj down N screen lines (differs from "j" when line wraps)
*Q_tm* Text object motions
|w| N w N words forward
|W| N W N blank-separated |WORD|s forward
|e| N e forward to the end of the Nth word
|E| N E forward to the end of the Nth blank-separated |WORD|
|b| N b N words backward
|B| N B N blank-separated |WORD|s backward
|ge| N ge backward to the end of the Nth word
|gE| N gE backward to the end of the Nth blank-separated |WORD|
|)| N ) N sentences forward
|(| N ( N sentences backward
|}| N } N paragraphs forward
|{| N { N paragraphs backward
|[b| N [b N camel words backward
|[w| N [w N camel words forward
|]b| N ]b backward to the end of the Nth camel word
|]w| N ]w forward to the end of the Nth camel word
|]]| N ]] N sections forward, at start of section
|[[| N [[ N sections backward, at start of section
|][| N ][ N sections forward, at end of section
|[]| N [] N sections backward, at end of section
|[(| N [( N times back to unclosed '('
|[{| N [{ N times back to unclosed '{'
|[m| N [m N times back to start of method (for Java)
|[M| N [M N times back to end of method (for Java)
|])| N ]) N times forward to unclosed ')'
|]}| N ]} N times forward to unclosed '}'
|]m| N ]m N times forward to start of method (for Java)
|]M| N ]M N times forward to end of method (for Java)
*Q_pa* Pattern searches
|/| N /{pattern}
[/[offset]
]<CR>
search forward for the Nth occurrence of {pattern}
|?| N ?{pattern}
[?[offset]
]<CR>
search backward for the Nth occurrence of {pattern}
|/<CR>| N /<CR>
repeat last search, in the forward direction
|?<CR>| N ?<CR>
repeat last search, in the backward direction
|n| N n repeat last search
|N| N N repeat last search, in opposite direction
|star| N * search forward for the identifier under the cursor
|#| N # search backward for the identifier under the cursor
|gstar| N g* like "*", but also find partial matches
|g#| N g# like "#", but also find partial matches
|gd| gd goto local declaration of identifier under the cursor
|gD| gD goto global declaration of identifier under the cursor
|pattern| Special characters in search patterns
meaning magic nomagic
matches any single character . \.
matches start of line ^ ^
matches <EOL>
$ $
matches start of word \< \<
matches end of word \> \>
matches a single char from the range [a-z] \[a-z]
matches a single char not in the range [^a-z] \[^a-z]
matches an identifier char \i \i
idem but excluding digits \I \I
matches a keyword character \k \k
idem but excluding digits \K \K
matches a file name character \f \f
idem but excluding digits \F \F
matches a printable character \p \p
idem but excluding digits \P \P
matches a white space character \s \s
matches a non-white space character \S \S
matches <Esc>
\e \e
matches <Tab>
\t \t
matches <CR>
\r \r
matches <BS>
\b \b
matches 0 or more of the preceding atom * \*
matches 1 or more of the preceding atom \+ \+
matches 0 or 1 of the preceding atom \= \=
matches 2 to 5 of the preceding atom \{2,5}
\{2,5}
separates two alternatives \| \
|
group a pattern into an atom \(\) \(\)
|search-offset| Offsets allowed after search command
[num]
[num]
lines downwards, in column 1
+[num]
[num]
lines downwards, in column 1
-[num]
[num]
lines upwards, in column 1
e[+num]
[num]
characters to the right of the end of the match
e[-num]
[num]
characters to the left of the end of the match
s[+num]
[num]
characters to the right of the start of the match
s[-num]
[num]
characters to the left of the start of the match
b[+num]
[num]
characters to the right of the start (begin) of the match
b[-num]
[num]
characters to the left of the start (begin) of the match
;{search-command}
execute {search-command}
next
*Q_ma* Marks and motions
|m| m{a-zA-Z}
mark current position with mark {a-zA-Z}
|`a| `{a-z}
go to mark {a-z}
within current file
|`A| `{A-Z}
go to mark {A-Z}
in any file
|`0| `{0-9}
go to the position where Vim was previously exited
|``| `` go to the position before the last jump
|`quote| `" go to the position when last editing this file
|`[| `[ go to the start of the previously operated or put text
|`]| `] go to the end of the previously operated or put text
|`<| `< go to the start of the (previous) Visual area
|`>| `> go to the end of the (previous) Visual area
|`.| `. go to the position of the last change in this file
|'| '{a-zA-Z0-9[]'"<>
.}
same as `, but on the first non-blank in the line
|:marks| :marks print the active marks
|CTRL-O| N CTRL-O
go to Nth older position in jump list
|CTRL-I| N CTRL-I
go to Nth newer position in jump list
|:ju| :ju[mps] print the jump list
*Q_vm* Various motions
|%| % find the next brace, bracket, comment, or "#if"/
"#else"/"#endif" in this line and go to its match
|H| N H go to the Nth line in the window, on the first
non-blank
|M| M go to the middle line in the window, on the first
non-blank
|L| N L go to the Nth line from the bottom, on the first
non-blank
|go| N go go to Nth byte in the buffer
|:go| :[range]
go[to] [off] go to [off] byte in the buffer
*Q_ta* Using tags
*Q_sc* Scrolling
|CTRL-E| N CTRL-E
window N lines downwards (default: 1)
|CTRL-D| N CTRL-D
window N lines Downwards (default: 1/2 window)
|CTRL-F| N CTRL-F
window N pages Forwards (downwards)
|CTRL-Y| N CTRL-Y
window N lines upwards (default: 1)
|CTRL-U| N CTRL-U
window N lines Upwards (default: 1/2 window)
|CTRL-B| N CTRL-B
window N pages Backwards (upwards)
|z<CR>| z<CR>
or zt redraw, current line at top of window
|z.| z. or zz redraw, current line at center of window
|z-| z- or zb redraw, current line at bottom of window
|zh| N zh scroll screen N characters to the right
|zl| N zl scroll screen N characters to the left
|zH| N zH scroll screen half a screenwidth to the right
|zL| N zL scroll screen half a screenwidth to the left
*Q_in* Inserting text
|a| N a append text after the cursor (N times)
|A| N A append text at the end of the line (N times)
|i| N i insert text before the cursor (N times) (also: <Insert>
)
|I| N I insert text before the first non-blank in the line (N times)
|gI| N gI insert text in column 1 (N times)
|o| N o open a new line below the current line, append text (N times)
|O| N O open a new line above the current line, append text (N times)
in Visual block mode:
|v_b_I| I insert the same text in front of all the selected lines
|v_b_A| A append the same text after all the selected lines
*Q_ai* Insert mode keys
|insert-index| alphabetical index of Insert mode commands
leaving Insert mode:
|i_<Esc>| <Esc>
end Insert mode, back to Normal mode
|i_CTRL-C| CTRL-C
like <Esc>
, but do not use an abbreviation
|i_CTRL-O| CTRL-O
{command}
execute {command}
and return to Insert mode
moving around:
|i_<Up>| cursor keys move cursor left/right/up/down
|i_<S-Left>| shift-left/right one word left/right
|i_<S-Up>| shift-up/down one screenful backward/forward
|i_<End>| <End>
cursor after last character in the line
|i_<Home>| <Home>
cursor to first character in the line
*Q_ss* Special keys in Insert mode
|i_<NL>| <NL>
or <CR>
or CTRL-M
or CTRL-J
begin new line
|i_CTRL-E| CTRL-E
insert the character from below the cursor
|i_CTRL-Y| CTRL-Y
insert the character from above the cursor
|i_CTRL-A| CTRL-A
insert previously inserted text
|i_CTRL-@| CTRL-@ insert previously inserted text and stop
Insert mode
|i_CTRL-R| CTRL-R
{0-9a-z%#:.-="}
insert the contents of a register
|i_<BS>| <BS>
or CTRL-H
delete the character before the cursor
|i_<Del>| <Del>
delete the character under the cursor
|i_CTRL-W| CTRL-W
delete word before the cursor
|i_CTRL-U| CTRL-U
delete all entered characters in the current
line
|i_CTRL-T| CTRL-T
insert one shiftwidth of indent in front of
the current line
|i_CTRL-D| CTRL-D
delete one shiftwidth of indent in front of
the current line
|i_0_CTRL-D| 0 CTRL-D
delete all indent in the current line
*Q_di* Digraphs
|:dig| :dig[raphs] show current list of digraphs
In Insert or Command-line mode:
|i_CTRL-K| CTRL-K
{char1}
{char2}
enter digraph
|i_digraph| {char1}
<BS>
{char2}
enter digraph if 'digraph' option set
*Q_si* Special inserts
*Q_de* Deleting text
|x| N x delete N characters under and after the cursor
|<Del>| N <Del>
delete N characters under and after the cursor
|X| N X delete N characters before the cursor
|d| N d{motion}
delete the text that is moved over with {motion}
|v_d| {visual}
d delete the highlighted text
|dd| N dd delete N lines
|D| N D delete to the end of the line (and N-1 more lines)
|J| N J join N-1 lines (delete <EOL>
s)
|v_J| {visual}
J join the highlighted lines
|gJ| N gJ like "J", but without inserting spaces
|v_gJ| {visual}
gJ like "{visual}
J", but without inserting spaces
|:d| :[range]
d [x] delete [range]
lines [into register x]
*Q_cm* Copying and moving text
|quote| "{char}
use register {char}
for the next delete, yank, or put
|:reg| :reg show the contents of all registers
|:reg| :reg {arg}
show the contents of registers mentioned in {arg}
|y| N y{motion}
yank the text moved over with {motion}
into a register
|v_y| {visual}
y yank the highlighted text into a register
|yy| N yy yank N lines into a register
|Y| N Y yank N lines into a register
|p| N p put a register after the cursor position (N times)
|P| N P put a register before the cursor position (N times)
|]p| N ]p like p, but adjust indent to current line
|[p| N [p like P, but adjust indent to current line
|gp| N gp like p, but leave cursor after the new text
|gP| N gP like P, but leave cursor after the new text
*Q_ch* Changing text
|r| N r{char}
replace N characters with {char}
|R| N R enter Replace mode (repeat the entered text N times)
|v_b_r| {visual}
r{char}
in Visual block mode: Replace each char of the
selected text with {char}
(change = delete text and enter Insert mode)
|c| N c{motion}
change the text that is moved over with {motion}
|v_c| {visual}
c change the highlighted text
|cc| N cc change N lines
|S| N S change N lines
|C| N C change to the end of the line (and N-1 more lines)
|s| N s change N characters
|v_b_c| {visual}
c in Visual block mode: Change each of the selected
lines with the entered text
|v_b_C| {visual}
C in Visual block mode: Change each of the selected
lines until end-of-line with the entered text
|~| N ~ switch case for N characters and advance cursor
|v_~| {visual}
~ switch case for highlighted text
|v_u| {visual}
u make highlighted text lowercase
|v_U| {visual}
U make highlighted text uppercase
|g~| g~{motion}
switch case for the text that is moved over with
{motion}
|gu| gu{motion}
make the text that is moved over with {motion}
lowercase
|gU| gU{motion}
make the text that is moved over with {motion}
uppercase
|CTRL-A| N CTRL-A
add N to the number at or after the cursor
|CTRL-X| N CTRL-X
subtract N from the number at or after the cursor
|<| N <{motion}
move the lines that are moved over with {motion}
one
shiftwidth left
|<<| N << move N lines one shiftwidth left
|>| N >{motion}
move the lines that are moved over with {motion}
one
shiftwidth right
|>>| N >> move N lines one shiftwidth right
*Q_co* Complex changes
|!!| N !!{command}
<CR>
filter N lines through {command}
|v_!| {visual}
!{command}
<CR>
filter the highlighted lines through {command}
|:range!| :[range]
! {command}
<CR>
filter [range]
lines through {command}
|==| N == filter N lines through 'equalprg'
|v_=| {visual}
=
filter the highlighted lines through 'equalprg'
|:s| :[range]
s[ubstitute]/{pattern}
/{string}
/[g][c]
substitute {pattern}
by {string}
in [range]
lines;
with [g], replace all occurrences of {pattern}
;
with [c], confirm each replacement
|:s| :[range]
s[ubstitute] [g][c]
repeat previous ":s" with new range and options
|&| & Repeat previous ":s" on current line without options
*Q_vi* Visual mode
|visual-index| list of Visual mode commands.
|v| v start highlighting characters } move cursor and use
|V| V start highlighting linewise } operator to affect
|CTRL-V| CTRL-V
start highlighting blockwise } highlighted text
|v_o| o exchange cursor position with start of highlighting
|gv| gv start highlighting on previous visual area
|v_v| v highlight characters or stop highlighting
|v_V| V highlight linewise or stop highlighting
|v_CTRL-V| CTRL-V
highlight blockwise or stop highlighting
*Q_to* Text objects (only in Visual mode or after an operator)
|v_aw| N aw Select "a word"
|v_iw| N iw Select "inner word"
|v_aW| N aW Select "a |WORD|"
|v_iW| N iW Select "inner |WORD|"
|v_as| N as Select "a sentence"
|v_is| N is Select "inner sentence"
|v_ap| N ap Select "a paragraph"
|v_ip| N ip Select "inner paragraph"
|v_ab| N ab Select "a block" (from "[(" to "])")
|v_ib| N ib Select "inner block" (from "[(" to "])")
|v_aB| N aB Select "a Block" (from "[{" to "]}
")
|v_iB| N iB Select "inner Block" (from "[{" to "]}
")
*Q_re* Repeating commands
|.| N . repeat last change (with count replaced with N)
|q| q{a-z}
record typed characters into register {a-z}
|q| q{A-Z}
record typed characters, appended to register {a-z}
|q| q stop recording
|@| N @{a-z}
execute the contents of register {a-z}
(N times)
|@@| N @@ repeat previous @{a-z}
(N times)
|:@| :@{a-z}
execute the contents of register {a-z}
as an Ex
command
|:@@| :@@ repeat previous :@{a-z}
*Q_km* Key mapping
*Q_ab* Abbreviations
*Q_op* Options
|:set| :se[t] Show all modified options.
|:set| :se[t] all Show all non-termcap options.
|:set| :se[t] {option}
Set boolean option (switch it on),
show string or number option.
|:set| :se[t] no{option}
Reset boolean option (switch it off).
|:set| :se[t] inv{option}
invert boolean option.
|:set| :se[t] {option}
={value}
Set string/number option to {value}
.
|:set| :se[t] {option}
+={value}
append {value}
to string option, add
{value}
to number option
|:set| :se[t] {option}
-={value}
remove {value}
to string option,
subtract {value}
from number option
|:set| :se[t] {option}
? Show value of {option}
.
|:set| :se[t] {option}
& Reset {option}
to its default value.
Short explanation of each option: *option-list*
|'digraph'| |'dg'| enable the entering of digraphs in Insert mode
|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on
|'hlsearch'| |'hls'| highlight matches with last search pattern
|'history'| |'hi'| number of command-lines that are remembered
|'ignorecase'| |'ic'| ignore case in search patterns
|'matchpairs'| |'mps'| pairs of characters that "%" can match
|'more'| pause listings when the whole screen is filled
|'nrformats'| |'nf'| number formats recognized for CTRL-A
command
|'scroll'| |'scr'| lines to scroll with CTRL-U
and CTRL-D
|'scrolljump'| |'sj'| minimum number of lines to scroll
|'scrolloff'| |'so'| minimum nr. of lines above and below cursor
|'selection'| |'sel'| what type of selection to use
|'showmode'| |'smd'| message on status line to show current mode
|'sidescroll'| |'ss'| minimum number of columns to scroll horizontal
|'sidescrolloff'| |'siso'| min. nr. of columns to left and right of cursor
|'smartcase'| |'scs'| no ignore case when pattern has uppercase
|'undolevels'| |'ul'| maximum number of changes that can be undone
|'visualbell'| |'vb'| use visual bell instead of beeping
|'wrapscan'| |'ws'| searches wrap around the end of the file
*Q_ur* Undo/Redo commands
|u| N u undo last N changes
|CTRL-R| N CTRL-R
redo last N undone changes
*Q_et* External commands
|:!| :!{command}
execute {command}
with a shell
|K| K lookup keyword under the cursor with
'keywordprg' program (default: "man")
*Q_qf* Quickfix commands
*Q_vc* Various commands
|CTRL-G| CTRL-G
show current file name (with path) and cursor
position
|ga| ga show ascii value of character under cursor in
decimal, hex, and octal
|g_CTRL-G| g CTRL-G
show cursor column, line, and character
position
|<Del>| <Del>
while entering a count: delete last character
|:browse| :browse {command}
open/read/write file, using a
file selection dialog
*Q_ce* Command-line editing
|:history| :his[tory] show older command-lines
*Q_ra* Ex ranges
|:range| , separates two line numbers
|:range| ; idem, set cursor to the first line number
before interpreting the second one
|:range| {number}
an absolute line number
|:range| . the current line
|:range| $ the last line in the file
|:range| % equal to 1,$ (the entire file)
|:range| * equal to '<,'>
(visual area)
|:range| 't position of mark t
|:range| /{pattern}
[/] the next line where {pattern}
matches
|:range| ?{pattern}
[?] the previous line where {pattern}
matches
|:range| +[num]
add [num]
to the preceding line number
(default: 1)
|:range| -[num]
subtract [num]
from the preceding line
number (default: 1)
*Q_ex* Special Ex characters
*Q_ed* Editing a file
|:find| :fin[d][!] {file}
Find {file}
in 'path' and edit it.
|CTRL-^| N CTRL-^ Edit alternate file N (equivalent to ":e #N").
*Q_fl* Using the argument list |argument-list|
|:wn| :wn[ext][!] Write file and edit next file.
|:wn| :wn[ext][!] {file}
Write to {file}
and edit next file, unless
{file}
exists. With !, overwrite existing
file.
|:wN| :wN[ext][!] [file] Write file and edit previous file.
in current window in new window
|:next| :n[ext] :sn[ext] Edit next file
|:Next| :N[ext] :sN[ext] Edit previous file
|:first| :fir[st] :sfir[st] Edit first file
|:last| :la[st] :sla[st] Edit last file
*Q_wq* Writing and quitting
|:w| :[range]
w[rite][!] Write to the current file.
|:wall| :wa[ll][!] write all changed buffers
|:q| :q[uit] Quit current buffer, unless changes have been
made. Exit Vim when there are no other
non-help buffers
|:q| :q[uit]! Quit current buffer always, discard any
changes. Exit Vim when there are no other
non-help buffers
|:qa| :qa[ll] Exit Vim, unless changes have been made.
|:qa| :qa[ll]! Exit Vim always, discard any changes.
|:wq| :wq[!] Write the current file and exit.
|:wq| :wq[!] {file}
Write to {file}
and exit.
|:xit| :x[it][!] [file] Like ":wq" but write only when changes have
been made
|ZZ| ZZ Same as ":x".
|ZQ| ZQ Same as ":q!".
|:xall| :xa[ll][!] or :wqall[!]
Write all changed buffers and exit
*Q_st* Starting VIM
*Q_ac* Automatic Commands
*Q_wi* Multi-window commands
*Q_bu* Buffer list commands
*Q_sy* Syntax Highlighting
*Q_gu* GUI commands
*Q_fo* Folding
|zc| zc close one fold under the cursor
|zM| zM close all folds: make 'foldlevel' zero
|zR| zR open all folds: make 'foldlevel' max.