vi Editor Commands
Quick links...
To use vi: vi filename
To exit vi and save changes: ZZ or :wq
To exit vi without saving changes: :q!
To enter vi command mode: [esc]
A number preceding any vi command tells vi to repeat that command that many times.
| h |
move left (backspace) |
| j | move down |
| k | move up |
| l | move right (spacebar) |
| [return] | move to the beginning of the next line |
| $ | last column on the current line |
| 0 | move cursor to the first column on the current line |
| ^ | move cursor to first nonblank column on the current line |
| w | move to the beginning of the next word or punctuation mark |
| W | move past the next space |
| b | move to the beginning of the previous word or punctuation mark |
| B | move to the beginning of the previous word, ignores punctuation |
| e | end of next word or punctuation mark |
| E | end of next word, ignoring punctuation |
| H | move cursor to the top of the screen |
| M | move cursor to the middle of the screen |
| L | move cursor to the bottom of the screen |
| G | move to the last line in the file |
| xG | move to line x |
| z+ | move current line to top of screen |
| z | move current line to the middle of screen |
| z- | move current line to the bottom of screen |
| ^F | move forward one screen |
| ^B | move backward one line |
| ^D | move forward one half screen |
| ^U | move backward one half screen |
| ^R | redraw screen ( does not work with VT100 type terminals ) |
| ^L | redraw screen ( does not work with Televideo terminals ) |
| r | replace character under cursor with next character typed |
| R | keep replacing character until [esc] is hit |
| i | insert before cursor |
| a | append after cursor |
| A | append at end of line |
| O | open line above cursor and enter append mode |
| x | delete character under cursor |
| dd | delete line under cursor |
| dw | delete word under cursor |
| db | delete word before cursor |
| yy | (yank)'copies' line which may then be put by the p(put) command. Precede with a count for multiple lines. |
brings back previous deletion or yank of lines, words, or characters
| P | bring back before cursor |
| p | bring back after cursor |
| ? | finds a word going backwards |
| / | finds a word going forwards |
| f | finds a character on the line under the cursor going forward |
| F | finds a character on the line under the cursor going backwards |
| t | find a character on the current line going forward and stop one character before it |
| T | find a character on the current line going backward and stop one character before it |
| ; | repeat last f, F, t, T |
| . | repeat last command |
| u | undoes last command issued |
| U | undoes all commands on one line |
| xp | deletes first character and inserts aftersecond (swap) |
| J | join current line with the next line |
| ^G | display current line number |
| % | if at one parenthesis, will jump to its mate |
| mx | mark current line with character x |
| 'x | find line marked with character x |
| NOTE: Marks are internal and not written to the file. |
|---|
Any commands form the line editor ex can be issued upon entering line mode.
To enter: type ':'
To exit: press[return] or [esc]
For a complete list consult the UNIX Programmer's Manual
| :#,#s/old/new/g |
| # | line number range |
| old | pattern to replace |
| new | pattern to insert |
| g | optional key for global substitution |
| (multiple occurences of old on the same line will not be replace without this)
|
|---|
copies (reads) filename after cursor in file currently editing
| :w | saves the current file without quitting |
| :# | move to line # |
| :$ | move to last line of file |
| :!'cmd' | executes 'cmd' as a shell command. |