Vi

vi is a command line text editor available on nearly all Unix based computers by default. It has a GUI equivalent called vim.

Contents

[edit] 1 Quick Guide

You can create a new text file or open an existing one by typing:

vi FILENAME

[edit] 1.1 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)
  • Ctrl-d - Scroll down
  • Ctrl-u - Scroll up
  • Ctrl-f - Scroll forward a page
  • Ctrl-b - Scroll back a page

Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.

[edit] 1.2 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

[edit] 1.3 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

[edit] 1.4 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

[edit] 1.5 Visual commands

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

[edit] 1.6 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

[edit] 1.7 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

[edit] 1.8 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

[edit] 1.9 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

[edit] 2 Settings

[edit] 2.1 Tabs

:set tabstop=4

[edit] 2.2 Syntax

:set syntax=on

[edit] 2.3 Line numbers

On:

:set number

Off:

:set nonnumber

[edit] 2.4 Pasting

vi has a nasty tendency to mess up the autoindenting when you are pasting text into it. Before the pasting, use:

:set paste

And afterwards, use:

:set nopaste

[edit] 3 References and Guides

Facts about ViRDF feed
XHTML 1.1 CSS 2 Sec 508