Vim Cheat Sheet

Overview

Vim is a powerful, lightweight text editor which is primarily keyboard driven. Because it is keyboard-driven its power is often not fully realized. This cheat sheet will explore some of vim's features as well as serve as a quick reference.

Vim has three main modes.

  • Navigation mode - The default mode is a navigation mode used to move around the document.
  • Edit mode - Using an editing command puts vim into an edit mode where everything typed is either inserted or overwritten into the document. ESC will exit edit mode.
  • Highlight mode - This similar to navigation mode but everything from the first position of the cursor to the current position is selected.

In navigation mode, the following can be used to move around

  • ← h ↓ j k ↑ l → - Move by one letter - : h-left, l-right, j-down, k-up
  • w b e - Move by words - w - next word, b - prev word, e - end of word
  • W B E Move by sequences of non-blanks (Words) - W - next Word, B - prev Word, E - end of Word
  • f F - find character, Find character backwards
  • t T - stop before next/last instance of character
  • ; , - repeat or reverse last t/T/f/F
  • () - goto start or end of sentence
  • {} - goto start or end of pargraph
  • % jump to matching brace
  • gg/G - goto start or end of buffer
  • 0 ^ $ - goto start, first non-blank, end of line
  • nG - goto line n
  • +/- - goto next/previous line
  • H M L - goto top / middle / bottom of screen

Basic Editing

  • i I - insert / insert at start of line
  • a A - append, append to end of line
  • R - overwrite
  • dd cc - delete or change line (enter insert mode)
  • D C - delete or change to end of line
  • d c [n] X - delete or change where X is a navigation command eg d2w. Change enters insert mode.
  • o O - open new line for inserting below or above
  • x s - delete character, delete character and start inserting
  • S - delete line and start inserting
  • r - replace single character
  • J - join line with next one

Copying & Pasting

  • d|y [n] X - delete or yank text into buffer
  • dd yy - delete or yank line into buffer
  • p P - paste after or before
  • ctrl-R - paste while in edit mode
  • “[a-z] - used before delete/yank/paste to specify a register
  • ”[A-Z] - used before delete/yank to append to previous contents of register
  • “* ”+ - Use system clipboard as register
  • v V ctrl-V - enter select mode (character, line or block)

Searching & Bookmarks

  • / ? - Start incremental search forwards or backwards
  • n N - next match forwards or backwards
  • * # - Search for next/previous instance of word under cursor
  • m[a-z] - set a bookmark
  • `[a-z] - jump to bookmark
  • '[a-z] - jump to first non-blank on bookmarked line
  • [A-Z] - global bookmarks (not buffer-specific)
  • . - bookmark of last modification

Folding

  • Folding allows temporarily hiding blocks of text. Folding commands start with z.
  • zR zr - opens all folds / one level of folds
  • zM zm - closes all folds / one level of folds
  • zO zo - opens all folds at the cursor / one level of folds at the cursor
  • zC zc - closes all folds at the cursor / one level of folds at the cursor
  • [z ]z - jump to start/end of fold
  • zj zk - jump to previous / next fold
  • zE zd - delete all folds / fold at cursor

Assorted

  • q[a-z] - start recording macro
  • qq - stop recording macro
  • @[a-z] - play macro
  • @@ - play last played macro
  • > <[n]X - indent / unindent
  • i a - after d/c/y/</> inner block or inner block including delimiters. e.g. di( deletes current bracketed block
  • u / U - undo , undo change to entire line
  • ctrl-r - redo
  • ZZ - save and quit
  • ZQ - quit without saving
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki