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.