Commands for VI editor

The vi editor comes with every version of Linux or Unix.

To Get In and Out Of vi :-

To start –

vi filename (edit filename starting at line 1)
vi -r filename (recover filename that was being edited when system crashed)

To Exit vi –

<Return> (quit vi, writing out modified file to file named in original invocation)
:wq<Return> (quit vi, writing out modified file to file named in original invocation)
:q<Return> (quit or exit vi)
:q!<Return> (quit vi even though latest changes have not been saved for this vi call)

Moving the Cursor :-

j or <Return> [or down-arrow] (move cursor down one line)

k [or up-arrow]        (move cursor up one line)

h or <Backspace> or left-arrow]        (move cursor left one character)

l or <Space> [or right-arrow] (move cursor right one character)

0 (zero) (move cursor to start of current line, the one with the cursor)

$ (move cursor to end of current line)

w (move cursor to beginning of next word)

b (move cursor back to beginning of preceding word)

:0<Return> or 1G (move cursor to first line in file)

:n<Return> or nG (move cursor to line n)

:$<Return> or G (move cursor to last line in file)

Screen Manipulation :-

^f (move forward one screen)

^b (move backward one screen)

^d (move down (forward) one half screen)

^u (move up (back) one half screen)

^l (redraws the screen)

^r (redraws the screen, removing deleted lines)

Adding, Changing, and Deleting Text :-

Adding Text –

i (insert text before cursor, until <Esc> hit)

I (insert text at beginning of current line, until <Esc> hit)

a (append text after cursor, until <Esc> hit)

A (append text to end of current line, until <Esc> hit)

o (open and put text in a new line below current line, until <Esc> hit)

Changing Text –

r (replace single character under cursor, no <Esc> needed)

R (replace characters, starting with current cursor position, until <Esc> hit)

cw (change the current word with new text, starting with the character under cursor, until <Esc> hit)

cNw (change N words beginning with character under cursor, until <Esc> hit; e.g., c5w changes 5 words)

C (change (replace) the characters in the current line, until <Esc> hit)

cc (change (replace) the entire current line, stopping when <Esc> is hit)

Ncc or cNc (change (replace) the next N lines, starting with the current line, stopping when <Esc> is hit)

Deleting Text –

x (delete single character under cursor)

Nx (delete N characters, starting with character under cursor)

dw (delete the single word beginning with character under cursor)

dNw (delete N words beginning with character under cursor; e.g., d5w deletes 5 words)

D (delete the remainder of the line, starting with current cursor position)

dd (delete entire current line)

Ndd or dNd (delete N lines, beginning with the current line; e.g., 5dd deletes 5 lines)

Cutting and Pasting Text –

yy (copy (yank, cut) the current line into the buffer)

Nyy or yNy (copy (yank, cut) the next N lines, including the current line, into the buffer)

p (put (paste) the line(s) in the buffer into the text after the current line)