Quick links: help overview · quick reference · reference manual toc · command index

quickref.txt  For Vim version 7.0.  Last change: 2006 Apr 30


                  VIM REFERENCE MANUAL    by Bram Moolenaar

                            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_st  Starting VIM
Q_di  insert: Digraphs                Q_ed  Editing a file
Q_si  insert: Special inserts         Q_fl  Using the argument list
Q_de  change: Deleting text           Q_wq  Writing and quitting
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 WORDs 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 WORDs 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
]]    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)
[#    N  [#           N times back to unclosed "#if" or "#else"
]#    N  ]#           N times forward to unclosed "#else" or "#endif"
[star N  [*           N times back to start of comment "/*"
]star N  ]*           N times forward to end of comment "*/"
------------------------------------------------------------------------------
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

pattern               Special characters in search patterns
See: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
------------------------------------------------------------------------------
Q_ma          Marks and motions

m        m{a-zA-Z}    mark current position with mark {a-zA-Z}
m.       m.           toggle anonymous mark on the current line
`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
m>       m>           go to the next anonymous mark
m<       m<           go to the previous anonymous mark
: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

------------------------------------------------------------------------------
Q_ta          Using tags

:ta      :ta[g][!] {tag}      Jump to tag {tag}
:ta      :[count]ta[g][!]     Jump to [count]'th newer tag in tag list
CTRL-]      CTRL-]            Jump to the tag under cursor, unless changes
                                   have been made
:ts      :ts[elect][!] [tag]  List matching tags and select one to jump to
:tjump   :tj[ump][!] [tag]    Jump to tag [tag] or select from list when
                                   there are multiple matches
:ltag    :lt[ag][!] [tag]     Jump to tag [tag] and add matching tags to the
                                   location list.

:tags    :tags                Print tag list
CTRL-T   N  CTRL-T            Jump back from Nth older tag in tag list
:po      :[count]po[p][!]     Jump back from [count]'th older tag in tag list
:tnext   :[count]tn[ext][!]   Jump to [count]'th next matching tag
:tp      :[count]tp[revious][!] Jump to [count]'th previous matching tag
:tr      :[count]tr[ewind][!] Jump to [count]'th matching tag
:tl      :tl[ast][!]          Jump to last matching tag

:ptag    :pt[ag] {tag}        open a preview window to show tag {tag}
CTRL-W_}     CTRL-W }         like CTRL-] but show tag in preview window
:pts     :pts[elect]          like ":tselect" but show tag in preview window
:ptjump  :ptj[ump]            like ":tjump" but show tag in preview window
:pclose  :pc[lose]            close tag preview window
CTRL-W_z     CTRL-W z         close tag preview window
------------------------------------------------------------------------------
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

These only work when 'wrap' is off:
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)
:startinsert  :star[tinsert][!]  start Insert mode, append when [!] used
:startreplace :startr[eplace][!]  start Replace mode, at EOL when [!] used

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_CTRL-V      CTRL-V {char}..   insert character literally, or enter decimal
                                     byte value
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_CTRL-N      CTRL-N            insert next match of identifier before the
                                     cursor
i_CTRL-P      CTRL-P            insert previous match of identifier before
                                     the cursor
i_CTRL-X      CTRL-X ...        complete the word before the cursor in
                                     various ways

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
i_^_CTRL-D    ^ CTRL-D          delete all indent in the current line,
                                     restore indent in next line
------------------------------------------------------------------------------
Q_di          Digraphs

:dig     :dig[raphs]          show current list of digraphs
:dig     :dig[raphs] {char1}{char2} {number} ...
                                add digraph(s) to the list

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

:r       :r [file]       insert the contents of [file] below the cursor
:r!      :r! {command}   insert the standard output of {command} below the
                              cursor
------------------------------------------------------------------------------
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}
gr      N  gr{char}   replace N characters without affecting layout
R       N  R          enter Replace mode (repeat the entered text N times)
gR      N  gR         enter virtual Replace mode: Like Replace mode but
                           without affecting layout
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
v_g?       {visual}g? perform rot13 encoding on highlighted text
g?         g?{motion} perform rot13 encoding on the text that is moved over
                           with {motion}

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
gq      N  gq{motion} format the lines that are moved over with {motion} to
                           'textwidth' length
:ce     :[range]ce[nter] [width]
                        center the lines in [range]
:le     :[range]le[ft] [indent]
                        left-align the lines in [range] (with [indent])
:ri     :[range]ri[ght] [width]
                        right-align the lines in [range]
------------------------------------------------------------------------------
Q_co          Complex changes

!        N  !{motion}{command}<CR>
                        filter the lines that are moved over through {command}
!!       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  ={motion}
                        filter the lines that are moved over through 'equalprg'
==       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
:ret     :[range]ret[ab][!] [tabstop]
                        set 'tabstop' to new value and adjust white space
                           accordingly
------------------------------------------------------------------------------
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}
:g       :[range]g[lobal]/{pattern}/[cmd]
                        Execute Ex command [cmd] (default: ":p") on the lines
                           within [range] where {pattern} matches.
:g       :[range]g[lobal]!/{pattern}/[cmd]
                        Execute Ex command [cmd] (default: ":p") on the lines
                           within [range] where {pattern} does NOT match.
:so      :so[urce] {file}
                        Read Ex commands from {file}.
:so      :so[urce]! {file}
                        Read Vim commands from {file}.
:sl      :sl[eep] [sec]
                        don't do anything for [sec] seconds
gs       N  gs        Goto Sleep for N seconds
------------------------------------------------------------------------------
Q_km          Key mapping

:map       :ma[p] {lhs} {rhs}   Map {lhs} to {rhs} in Normal and Visual
                                     mode.
:map!      :ma[p]! {lhs} {rhs}  Map {lhs} to {rhs} in Insert and Command-line
                                     mode.
:noremap   :no[remap][!] {lhs} {rhs}
                                  Same as ":map", no remapping for this {rhs}
:unmap     :unm[ap] {lhs}       Remove the mapping of {lhs} for Normal and
                                     Visual mode.
:unmap!    :unm[ap]! {lhs}      Remove the mapping of {lhs} for Insert and
                                     Command-line mode.
:map_l     :ma[p] [lhs]         List mappings (starting with [lhs]) for
                                     Normal and Visual mode.
:map_l!    :ma[p]! [lhs]        List mappings (starting with [lhs]) for
                                     Insert and Command-line mode.
:cmap      :cmap/:cunmap/:cnoremap
                                  like ":map!"/":unmap!"/":noremap!" but for
                                     Command-line mode only
:imap      :imap/:iunmap/:inoremap
                                  like ":map!"/":unmap!"/":noremap!" but for
                                     Insert mode only
:nmap      :nmap/:nunmap/:nnoremap
                                  like ":map"/":unmap"/":noremap" but for
                                     Normal mode only
:vmap      :vmap/:vunmap/:vnoremap
                                  like ":map"/":unmap"/":noremap" but for
                                     Visual mode only
:omap      :omap/:ounmap/:onoremap
                                  like ":map"/":unmap"/":noremap" but only for
                                     when an operator is pending
:mapc      :mapc[lear]          remove mappings for Normal and Visual mode
:mapc      :mapc[lear]!         remove mappings for Insert and Cmdline mode
:imapc     :imapc[lear]         remove mappings for Insert mode
:vmapc     :vmapc[lear]         remove mappings for Visual mode
:omapc     :omapc[lear]         remove mappings for Operator-pending mode
:nmapc     :nmapc[lear]         remove mappings for Normal mode
:cmapc     :cmapc[lear]         remove mappings for Cmdline mode
:mkexrc    :mk[exrc][!] [file]  write current mappings, abbreviations, and
                                     settings to [file] (default: ".exrc";
                                     use ! to overwrite)
:mkvimrc   :mkv[imrc][!] [file]
                                  same as ":mkexrc", but with default ".vimrc"
:mksession :mks[ession][!] [file]
                                  like ":mkvimrc", but store current files,
                                     windows, etc. too, to be able to continue
                                     this session later.
------------------------------------------------------------------------------
Q_ab          Abbreviations

:abbreviate   :ab[breviate] {lhs} {rhs}  add abbreviation for {lhs} to {rhs}
:abbreviate   :ab[breviate] {lhs}        show abbr's that start with {lhs}
:abbreviate   :ab[breviate]              show all abbreviations
:unabbreviate :una[bbreviate] {lhs}      remove abbreviation for {lhs}
:noreabbrev   :norea[bbrev] [lhs] [rhs]  like ":ab", but don't remap [rhs]
:iabbrev      :iab/:iunab/:inoreab       like ":ab", but only for Insert mode
:cabbrev      :cab/:cunab/:cnoreab       like ":ab", but only for
                                                Command-line mode
:abclear      :abc[lear]                 remove all abbreviations
:cabclear     :cabc[lear]                remove all abbr's for Cmdline mode
:iabclear     :iabc[lear]                remove all abbr's for Insert mode
------------------------------------------------------------------------------
Q_op          Options

:set          :se[t]                    Show all modified options.
:set          :se[t] all                Show all non-termcap options.
:set          :se[t] termcap            Show all 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.

:setlocal     :setl[ocal]               like ":set" but set the local value
                                          for options that have one
:setglobal    :setg[lobal]              like ":set" but set the global value
                                          of a local option

:fix          :fix[del]                 Set value of 't_kD' according to
                                          value of 't_kb'.
:options      :opt[ions]                Open a new window to view and set
                                          options, grouped by functionality,
                                          a one line explanation and links to
                                          the help.

Short explanation of each option:               option-list
'backspace'       'bs'      how backspace works at start of line
'clipboard'       'cb'      use the clipboard as the unnamed register
'cpoptions'       'cpo'     flags for Vi-compatible behavior
'eadirection'     'ead'     in which direction 'equalalways' works
'equalalways'     'ea'      windows are automatically made the same size
'equalprg'        'ep'      external program to use for "=" command
'expandtab'       'et'      use spaces when <Tab> is inserted
'foldopen'        'fdo'     for which commands a fold will be opened
'formatprg'       'fp'      name of external program used with "gq" command
'hlsearch'        'hls'     highlight matches with last search pattern
'history'         'hi'      number of command-lines that are remembered
'ignorecase'      'ic'      ignore case in search patterns
'incsearch'       'is'      highlight match while typing search pattern
'iskeyword'       'isk'     characters included in keywords
'joinspaces'      'js'      two spaces after a period with a join command
'linebreak'       'lbr'     wrap long lines at a blank
'modeline'        'ml'      recognize modelines at start or end of file
'modelines'       'mls'     number of lines checked for modelines
'nrformats'       'nf'      number formats recognized for CTRL-A command
'number'          'nu'      print the line number in front of each line
'report'                    threshold for reporting nr. of lines changed
'scroll'          'scr'     lines to scroll with CTRL-U and CTRL-D
'scrolloff'       'so'      minimum nr. of lines above and below cursor
'selection'       'sel'     what type of selection to use
'shell'           'sh'      name of shell to use for external commands
'shellcmdflag'    'shcf'    flag to shell to execute one command
'shellslash'      'ssl'     use forward slash for shell file names
'shellxquote'     'sxq'     like 'shellquote', but include redirection
'shiftround'      'sr'      round indent to multiple of shiftwidth
'shiftwidth'      'sw'      number of spaces to use for (auto)indent step
'showcmd'         'sc'      show (partial) command in status line
'showmode'        'smd'     message on status line to show current mode
'smartcase'       'scs'     no ignore case when pattern has uppercase
'smarttab'        'sta'     use 'shiftwidth' when inserting <Tab>
'softtabstop'     'sts'     number of spaces that <Tab> uses while editing
'splitbelow'      'sb'      new window from split is below the current one
'splitright'      'spr'     new window is put right of the current one
'startofline'     'sol'     commands move cursor to first blank in line
'tabstop'         'ts'      number of spaces that <Tab> in file uses
'textwidth'       'tw'      maximum width of text that is being inserted
'tildeop'         'top'     tilde command "~" behaves like an operator
'timeout'         'to'      time out on mappings and key codes
'timeoutlen'      'tm'      time out time in milliseconds
'visualbell'      'vb'      use visual bell instead of beeping
'visualbelltime'  'vbt'     msec timer for bell duration
'visualbellcolor' 'vbc'     color of visual bell, null means invert background
'whichwrap'       'ww'      allow specified keys to cross line boundaries
'wrap'                      long lines wrap and continue on the next line
'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
U          U          restore last changed line
------------------------------------------------------------------------------
Q_et          External commands

:shell        :sh[ell]        start a shell
:!            :!{command}     execute {command} with a shell
K                K            lookup keyword under the cursor with
                                   'keywordprg' program (default: "man")
------------------------------------------------------------------------------
Q_qf          Quickfix commands

:cc           :cc [nr]        display error [nr] (default is the same again)
:cnext        :cn             display the next error
:cprevious    :cp             display the previous error
:clist        :cl             list all errors
:cfile        :cf             read errors from the file 'errorfile'
:cgetbuffer   :cgetb          like :cbuffer but don't jump to the first error
:cgetfile     :cg             like :cfile but don't jump to the first error
:cgetexpr     :cgete          like :cexpr but don't jump to the first error
:caddfile     :caddf          add errors from the error file to the current
                                   quickfix list
:caddexpr     :cad            add errors from an expression to the current
                                   quickfix list
:cbuffer      :cb             read errors from text in a buffer
:cexpr        :cex            read errors from an expression
:cquit        :cq             quit without writing and return error code (to
                                   the compiler)
:make         :make [args]    start make, read errors, and jump to first
                                   error
:grep         :gr[ep] [args]  execute 'grepprg' to find matches and jump to
                                   the first one.
------------------------------------------------------------------------------
Q_vc          Various commands

CTRL-L           CTRL-L       Clear and redraw the screen.
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
g8               g8           for utf-8 encoding: show byte sequence for
                                   character under cursor in hex.
g_CTRL-G         g CTRL-G     show cursor column, line, and character
                                   position
CTRL-C           CTRL-C       during searches: Interrupt the search
dos-CTRL-Break   CTRL-Break   MS-DOS: during searches: Interrupt the search
<Del>            <Del>        while entering a count: delete last character
:version      :ve[rsion]      show version information
:mode         :mode N         MS-DOS: set screen mode to N (number, C80,
                                   C4350, etc.)
:normal       :norm[al][!] {commands}
                                Execute Normal mode commands.
Q             Q               switch to "Ex" mode

:redir        :redir >{file}          redirect messages to {file}
:silent       :silent[!] {command}    execute {command} silently
:confirm      :confirm {command}      quit, write, etc., asking about
                                        unsaved changes or read-only files.
:browse       :browse {command}       open/read/write file, using a
                                        file selection dialog
------------------------------------------------------------------------------
Q_ce          Command-line editing

c_<Esc>       <Esc>              abandon command-line (if 'wildchar' is
                                      <Esc>, type it twice)

c_CTRL-V      CTRL-V {char}      insert {char} literally
c_CTRL-V      CTRL-V {number}    enter decimal value of character (up to
                                      three digits)
c_CTRL-K      CTRL-K {char1} {char2}
                                   enter digraph (See Q_di)
c_CTRL-R      CTRL-R {0-9a-z"%#:-=}
                                   insert the contents of a register

c_<Left>      <Left>/<Right>     cursor left/right
c_<S-Left>    <S-Left>/<S-Right> cursor one word left/right
c_CTRL-B      CTRL-B/CTRL-E      cursor to beginning/end of command-line

c_<BS>        <BS>               delete the character in front of the cursor
c_<Del>       <Del>              delete the character under the cursor
c_CTRL-W      CTRL-W             delete the word in front of the cursor
c_CTRL-U      CTRL-U             remove all characters

c_<Up>        <Up>/<Down>        recall older/newer command-line that starts
                                      with current command
c_<S-Up>      <S-Up>/<S-Down>    recall older/newer command-line from history
:history      :his[tory]         show older command-lines

Context-sensitive completion on the command-line:

c_wildchar    'wildchar'  (default: <Tab>)
                                do completion on the pattern in front of the
                                   cursor.  If there are multiple matches,
                                   beep and show the first one; further
                                   'wildchar' will show the next ones.
c_CTRL-D      CTRL-D          list all names that match the pattern in
                                   front of the cursor
c_CTRL-A      CTRL-A          insert all names that match pattern in front
                                   of cursor
c_CTRL-L      CTRL-L          insert longest common part of names that
                                   match pattern
c_CTRL-N      CTRL-N          after 'wildchar' with multiple matches: go
                                   to next match
c_CTRL-P      CTRL-P          after 'wildchar' with multiple matches: go
                                   to previous match
------------------------------------------------------------------------------
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

:bar      |           separates two commands (not for ":global" and ":!")
:quote    "           begins comment

:_%       %           current file name (only where a file name is expected)
:_#       #[num]      alternate file name [num] (only where a file name is
                           expected)
        Note: The next four are typed literally; these are not special keys!
:<cword>  <cword>     word under the cursor (only where a file name is
                           expected)
:<cWORD>  <cWORD>     WORD under the cursor (only where a file name is
                           expected) (see WORD)
:<cfile>  <cfile>     file name under the cursor (only where a file name is
                           expected)
:<afile>  <afile>     file name for autocommand (only where a file name is
                           expected)
:<sfile>  <sfile>     file name of a ":source"d file, within that file (only
                           where a file name is expected)

                After "%", "#", "<cfile>", "<sfile>" or "<afile>"
                ::p       :p          full path
                ::h       :h          head (file name removed)
                ::t       :t          tail (file name only)
                ::r       :r          root (extension removed)
                ::e       :e          extension
                ::s       :s/{pat}/{repl}/    substitute {pat} with {repl}
------------------------------------------------------------------------------
Q_st          Starting VIM

-vim     vim [options]                start editing with an empty buffer
-file    vim [options] {file} ..      start editing one or more files
--       vim [options] -              read file from stdin
-tag     vim [options] -t {tag}       edit the file associated with {tag}
-qf      vim [options] -q [fname]     start editing in QuickFix mode,
                                           display the first error

        Most useful Vim arguments (for full list see startup-options)

-gui  -g                  start GUI (also allows other options)

-+    +[num]              put the cursor at line [num] (default: last line)
-+c   +{command}          execute {command} after loading the file
-+/   +/{pat} {file} ..   put the cursor at the first occurrence of {pat}
-v    -v                  Vi mode, start ex in Normal mode
-e    -e                  Ex mode, start vim in Ex mode
-R    -R                  Read-only mode, implies -n
-m    -m                  modifications not allowed (resets 'write' option)
-d    -d                  diff mode diff
-b    -b                  binary mode
-l    -l                  lisp mode
-A    -A                  Arabic mode ('arabic' is set)
-F    -F                  Farsi mode ('fkmap' and 'rightleft' are set)
-H    -H                  Hebrew mode ('hkmap' and 'rightleft' are set)
-V    -V                  Verbose, give informative messages
-C    -C                  Compatible, set the 'compatible' option
-N    -N                  Nocompatible, reset the 'compatible' option
-r    -r                  give list of swap files
-r    -r {file} ..        recover aborted edit session
-n    -n                  do not create a swap file
-o    -o [num]            open [num] windows (default: one for each file)
-f    -f                  GUI: foreground process, don't fork
                            Amiga: do not restart VIM to open a window (for
                                e.g., mail)
-s    -s {scriptin}       first read commands from the file {scriptin}
-w    -w {scriptout}      write typed chars to file {scriptout} (append)
-W    -W {scriptout}      write typed chars to file {scriptout} (overwrite)
-T    -T {terminal}       set terminal name
-d    -d {device}         Amiga: open {device} to be used as a console
-u    -u {vimrc}          read inits from {vimrc} instead of other inits
-U    -U {gvimrc}         idem, for when starting the GUI
-i    -i {viminfo}        read info from {viminfo} instead of other files
---   --                  end of options, other arguments are file names
--help    --help          show list of arguments and exit
--version --version       show version info and exit
--    -                   Read file from stdin.
------------------------------------------------------------------------------
Q_ed          Editing a file

           Without !: Fail if changes has been made to the current buffer.
              With !: Discard any changes to the current buffer.
:edit_f  :e[dit][!] {file}    Edit {file}.
:edit    :e[dit][!]           Reload the current file.
:enew    :ene[w][!]           Edit a new, unnamed buffer.
:find    :fin[d][!] {file}    Find {file} in 'path' and edit it.

CTRL-^   N   CTRL-^           Edit alternate file N (equivalent to ":e #N").
gf           gf  or ]f        Edit the file whose name is under the cursor
:pwd     :pwd                 Print the current directory name.
:cd      :cd [path]           Change the current directory to [path].
:cd-     :cd -                Back to previous current directory.
:file    :f[ile]              Print the current file name and the cursor
                                   position.
:file    :f[ile] {name}       Set the current file name to {name}.
:files   :files               Show alternate file names.
------------------------------------------------------------------------------
Q_fl          Using the argument list                 argument-list

:args    :ar[gs]              Print the argument list, with the current file
                                   in "[]".
:all     :all  or :sall       Open a window for every file in the arg 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 
:argument  :argu[ment] N        :sar[gument] N        Edit file N
:next      :n[ext]              :sn[ext]              Edit next file
:next_f    :n[ext] {arglist}    :sn[ext] {arglist}    define new arg list
                                                           and edit first 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.
:w_f    :[range]w[rite] {file}        Write to {file}, unless it already
                                           exists.
:w_f    :[range]w[rite]! {file}       Write to {file}.  Overwrite an existing
                                           file.
:w_a    :[range]w[rite][!] >>         Append to the current file.
:w_a    :[range]w[rite][!] >> {file}  Append to {file}.
:w_c    :[range]w[rite] !{cmd}        Execute {cmd} with [range] lines as
                                           standard input.
:up     :[range]up[date][!]           write to current file if modified
: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.
:cq     :cq                   Quit without writing and return error code.

: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

:stop   :st[op][!]            Suspend VIM or start new shell.  If 'aw' option
                                   is set and [!] not given write the buffer.
CTRL-Z     CTRL-Z             Same as ":stop"
------------------------------------------------------------------------------
Q_ac          Automatic Commands

viminfo-file  Read registers, marks, history at startup, save when exiting.

:rviminfo     :rv[iminfo] [file]      Read info from viminfo file [file]
:rviminfo     :rv[iminfo]! [file]     idem, overwrite existing info
:wviminfo     :wv[iminfo] [file]      Add info to viminfo file [file]
:wviminfo     :wv[iminfo]! [file]     Write info to viminfo file [file]

modeline      Automatic option setting when editing a file

modeline      vim:{set-arg}: ..       In the first and last lines of the
                                        file (see 'ml' option), {set-arg} is
                                        given as an argument to ":set"

autocommand   Automatic execution of commands on certain events.

:autocmd      :au                     List all autocommands
:autocmd      :au {event}             List all autocommands for {event}
:autocmd      :au {event} {pat}       List all autocommands for {event} with
                                        {pat}
:autocmd      :au {event} {pat} {cmd} Enter new autocommands for {event}
                                        with {pat}
:autocmd      :au!                    Remove all autocommands
:autocmd      :au! {event}            Remove all autocommands for {event}
:autocmd      :au! * {pat}            Remove all autocommands for {pat}
:autocmd      :au! {event} {pat}      Remove all autocommands for {event}
                                        with {pat}
:autocmd      :au! {event} {pat} {cmd}  Remove all autocommands for {event}
                                        with {pat} and enter new one
------------------------------------------------------------------------------
Q_wi          Multi-window commands

CTRL-W_s      CTRL-W s  or  :split    Split window into two parts
:split_f      :split {file}           Split window and edit {file} in one of
                                           them
:vsplit       :vsplit {file}          Same, but split vertically
:vertical     :vertical {cmd}         Make {cmd} split vertically

:sfind        :sf[ind] {file}         Split window, find {file} in 'path'
                                           and edit it.
CTRL-W_]      CTRL-W ]                Split window and jump to tag under
                                           cursor
CTRL-W_f      CTRL-W f                Split window and edit file name under
                                           the cursor
CTRL-W_^      CTRL-W ^                Split window and edit alternate file
CTRL-W_n      CTRL-W n  or  :new      Create new empty window
CTRL-W_q      CTRL-W q  or  :q[uit]   Quit editing and close window
CTRL-W_c      CTRL-W c  or  :cl[ose]  Make buffer hidden and close window
CTRL-W_o      CTRL-W o  or  :on[ly]   Make current window only one on the
                                           screen

CTRL-W_j      CTRL-W j                Move cursor to window below
CTRL-W_k      CTRL-W k                Move cursor to window above
CTRL-W_CTRL-W CTRL-W CTRL-W           Move cursor to window below (wrap)
CTRL-W_W      CTRL-W W                Move cursor to window above (wrap)
CTRL-W_t      CTRL-W t                Move cursor to top window
CTRL-W_b      CTRL-W b                Move cursor to bottom window
CTRL-W_p      CTRL-W p                Move cursor to previous active window

CTRL-W_r      CTRL-W r                Rotate windows downwards
CTRL-W_R      CTRL-W R                Rotate windows upwards
CTRL-W_x      CTRL-W x                Exchange current window with next one

CTRL-W_=      CTRL-W =                Make all windows equal height
CTRL-W_-      CTRL-W -                Decrease current window height
CTRL-W_+      CTRL-W +                Increase current window height
CTRL-W__      CTRL-W _                Set current window height (default:
                                           very high)
------------------------------------------------------------------------------
Q_bu          Buffer list commands

:buffers      :buffers  or  :files    list all known buffer and file names

:ball         :ball     or  :sball    edit all args/buffers
:unhide       :unhide   or  :sunhide  edit all loaded buffers

:badd         :badd {fname}           add file name {fname} to the list
:bunload      :bunload[!] [N]         unload buffer [N] from memory
:bdelete      :bdelete[!] [N]         unload buffer [N] and delete it from
                                           the buffer list

              in current window   in new window 
:buffer     :[N]buffer [N]      :[N]sbuffer [N]     to arg/buf N
:bnext      :[N]bnext [N]       :[N]sbnext [N]      to Nth next arg/buf
:bNext      :[N]bNext [N]       :[N]sbNext [N]      to Nth previous arg/buf
:bprevious  :[N]bprevious [N]   :[N]sbprevious [N]  to Nth previous arg/buf
:bfirst     :bfirst             :sbfirst            to first arg/buf
:blast      :blast              :sblast             to last arg/buf
:bmodified  :[N]bmod [N]        :[N]sbmod [N]       to Nth modified buf
------------------------------------------------------------------------------
Q_sy          Syntax Highlighting

:syn-on       :syntax on              start using syntax highlighting
:syn-off      :syntax off             stop using syntax highlighting

:syn-keyword  :syntax keyword {group-name} {keyword} ..
                                        add a syntax keyword item
:syn-match    :syntax match {group-name} {pattern} ...
                                        add syntax match item
:syn-region   :syntax region {group-name} {pattern} ...
                                        add syntax region item
:syn-sync     :syntax sync [ccomment | lines {N} | ...]
                                        tell syntax how to sync
:syntax       :syntax [list]          list current syntax items
:syn-clear    :syntax clear           clear all syntax info

:highlight    :highlight clear        clear all highlight info
:highlight    :highlight {group-name} {key}={arg} ..
                                        set highlighting for {group-name}

:filetype     :filetype on            switch on file type detection, without
                                        syntax highlighting
:filetype     :filetype plugin indent on
                                        switch on file type detection, with
                                        automatic indenting and settings
------------------------------------------------------------------------------
Q_gu          GUI commands

:gui          :gui                    UNIX: start the GUI
:gui          :gui {fname} ..         idem, and edit {fname} ..

:menu         :menu                   list all menus
:menu         :menu {mpath}           list menus starting with {mpath}
:menu         :menu {mpath} {rhs}     add menu {mpath}, giving {lhs}
:menu         :menu {pri} {mpath} {rhs}
                                        idem, with priorities {pri}
:menu         :menu ToolBar.{name} {rhs}
                                        add toolbar item, giving {lhs}
:tmenu        :tmenu {mpath} {text}   add tooltip to menu {mpath}
:unmenu       :unmenu {mpath}         remove menu {mpath}
------------------------------------------------------------------------------
Q_fo          Folding

'foldmethod'  set foldmethod=manual   manual folding
                set foldmethod=indent   folding by indent
                set foldmethod=expr     folding by 'foldexpr'
                set foldmethod=syntax   folding by syntax regions
                set foldmethod=marker   folding by 'foldmarkers'

zf            zf{motion}              operator: Define a fold manually
:fold         :{range}fold            define a fold for {range} lines
zd            zd                      delete one fold under the cursor
zD            zD                      delete all folds under the cursor

zo            zo                      open one fold under the cursor
zO            zO                      open all folds under the cursor
zc            zc                      close one fold under the cursor
zC            zC                      close all folds under the cursor

za            za                      toggle open/close fold
zA            zA                      toggle open/close fold recursively
zv            zv                      view cursor line

zm            zm                      fold more: decrease 'foldlevel'
zM            zM                      close all folds: make 'foldlevel' zero
zr            zr                      reduce folding: increase 'foldlevel'
zR            zR                      open all folds: make 'foldlevel' max.

zn            zn                      fold none: reset 'foldenable'
zN            zN                      fold normal set 'foldenable'
zi            zi                      invert 'foldenable'

 vim:tw=78:ts=8:sw=8:noet:

Quick links: help overview · quick reference · reference manual toc · command index