07 April 2010

Unix vi editor help

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





Another good vim commands cheatsheet and a
vi introduction using the "cheat sheet" method

No comments: