vim cheatsheet

From thelinuxwiki
Jump to: navigation, search

Cursor movement

   h - move left
   j - move down
   k - move up
   l - move right
   w - jump by start of words (punctuation considered words)
   W - jump by words (spaces separate words)
   e - jump to end of words (punctuation considered words)
   E - jump to end of words (no punctuation)
   b - jump backward by words (punctuation considered words)
   B - jump backward by words (no punctuation)
   0 - (zero) start of line
   ^ - first non-blank character of line
   $ - end of line
   G - Go To command (prefix with number - 5G goes to line 5)

Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines. Insert Mode - Inserting/Appending text

   i - start insert mode at cursor
   I - insert at the beginning of the line
   a - append after the cursor
   A - append at the end of the line
   o - open (append) blank line below current line (no need to press return)
   O - open blank line above current line
   ea - append at end of word
   Esc - exit insert mode

Editing

   r - replace a single character (does not use insert mode)
   J - join line below to the current one
   cc - change (replace) an entire line
   cw - change (replace) to the end of word
   c$ - change (replace) to the end of line
   s - delete character at cursor and subsitute text
   S - delete line at cursor and substitute text (same as cc)
   xp - transpose two letters (delete and paste, technically)
   u - undo
   . - repeat last command

Marking text (visual mode)

   v - start visual mode, mark lines, then do command (such as y-yank)
   V - start Linewise visual mode
   o - move to other end of marked area
   Ctrl+v - start visual block mode
   O - move to Other corner of block
   aw - mark a word
   ab - a () block (with braces)
   aB - a {} block (with brackets)
   ib - inner () block
   iB - inner {} block
   Esc - exit visual mode

Visual commands

   > - shift right
   < - shift left
   y - yank (copy) marked text
   d - delete marked text
   ~ - switch case

Cut and Paste

   yy - yank (copy) a line
   2yy - yank 2 lines
   yw - yank word
   y$ - yank to end of line
   p - put (paste) the clipboard after cursor
   P - put (paste) before cursor
   dd - delete (cut) a line
   dw - delete (cut) the current word
   x - delete (cut) current character

Exiting

   :w - write (save) the file, but don't exit
   :wq - write (save) and quit
   :q - quit (fails if anything has changed)
   :q! - quit and throw away changes

Search/Replace

   /pattern - search for pattern
   ?pattern - search backward for pattern
   n - repeat search in same direction
   N - repeat search in opposite direction
   :%s/old/new/g - replace all old with new throughout file
   :%s/old/new/gc - replace all old with new throughout file with confirmations

Working with multiple files

   :e filename - Edit a file in a new buffer
   :bnext (or :bn) - go to next buffer
   :bprev (of :bp) - go to previous buffer
   :bd - delete a buffer (close a file)
   :sp filename - Open a file in a new buffer and split window
   ctrl+ws - Split windows
   ctrl+ww - switch between windows
   ctrl+wq - Quit a window
   ctrl+wv - Split windows vertically

take from http://www.worldtimzone.com/res/vi.html