====== Vi Commands ====== Source: https://www.cs.colostate.edu/helpdocs/vi.html
| * | vi filename | edit filename starting at line 1 |
|---|---|---|
| vi -r filename | recover filename that was being edited when system crashed | |
| * | :x<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 |
| * | 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 | |
| ^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 | |
| * | u | UNDO WHATEVER YOU JUST DID; a simple toggle |
|---|
| * | 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 |
| * | O | open and put text in a new line above current line, until <Esc> hit |
| * | 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 | |
| * | 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 | |
| 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 | |
| /string | search forward for occurrence of string in text
|
| ?string
| search backward for occurrence of string in text
|
| n
| move to next occurrence of search string
|
| N
| move to next occurrence of search string in opposite
direction
| |
|---|
| :.= | returns line number of current line at bottom of screen
|
| :=
| returns the total number of lines at bottom of screen
|
| ^g
| provides the current line number, along with the total
number of lines, | in the file at the bottom of the screen |
|---|
These commands permit you to input and output files other than the named file with which you are currently working.
| :r filename<Return> | read file named filename and insert after
current line
(the line with cursor) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| :w<Return> | write current contents to file named in original
vi call
|
| :w newfile<Return>
| write current contents to a new file named newfile
|
| :12,35w smallfile<Return>
| write the contents of the lines numbered 12 through 35
to a new file named smallfile
|
| :w! prevfile<Return>
| write current contents over a pre-existing file
named prevfile
| |