To leave the Insert mode, press 'Esc'
| a | Append after cursor |
| A | Append after end of current line |
| i | Insert before cursor |
| I | Insert before beginning of current line |
| o | Open new line below current line and insert |
| O | Open new line above current line and insert |
| CTRL-vchar | While inserting, ignore special meaning of char (e.g., for inserting characters like Esc and control characters) |
| :r file | Read file, and insert after current line |
| J | Join next line to end of current line |
| CTRL-h or Backspace | While in Input Mode delete previous character |
Typing a number before these commands will delete that amount of characters, words, or lines.
| x | Deletes current character |
| dw | Delete current word |
| dd | Deletes current line |
| :n,md | Deletes lines n through m |
| D or d$ | Delete from cursor to end of current line |
| dcursor_cmd | Delete text to cursor to cursor_cmd(e.g.,dG deletes from current line to end of file) |
| u | Undo last command |
| U | Restore current line to original state |
| "np | Retrieve last nth delete(last 9 deletes are in a buffer)" |
| n | Repeat last / or ? search command |
| N | Repeat, in reverse direction, last / or ? search command |
| ; (semi-colon) | Repeat last f, F, t or T search command |
| , (comma) | Repeat, in reverse direction, last f, F, t or T search command |
| . (period) | Repeat last text change command |
MOVING THE CURSOR
k or CTRL-p Up j or CTRL-j or CTRL-n Down h or CTRL-h or Backspace Left l (lower case L) or Spacebar Right w or W Start of next word; W ignores punctuation b or B Start of previous word; B ignores punctuation e or E End of next word; E ignores punctuation 0 (zero) or | (pipe) First column in current line n| Column n in current line ^ (caret) First non-blank character in current line $ Last character in current line + or Return First character in next line - First non-blank character in previous line 1G First line in file G Last line in file G$ Last character in file nG Line n in file ( Back to beginning of sentence ) Forward to beginning of next sentence \{ Back to beginning of paragraph \} Forward to beginning of next paragraph
PATTERN MATCHING
Pattern matching characters help find strings with similar char- acteristics.
:set magic Allow pattern matching with special characters
(default)
:set nomagic Allow only ^ and $ as special characters ^ (caret) Match beginning of line $ Match end of line . (period) Match any single character \< Match beginning of word \> Match end of word [str] Match any single character in str [^str] Match any character not in str [a-n] Match any character between a and n
in expression
\ Escape meaning of next character(e.g. \$ lets you
search for $)
\\ Escape the \ character
SAVE TEXT AND EXIT VI
ZZ or :wq or :x Save file and exit vi :w file Save file but do not exit. Omitting file saves current
file
:w! file Save file overriding normal checking :n,mw file Write lines n through m to file :n,mw>>file Append lines n through m to end of file :q Leave vi, saving changes before last write
(you may be prompted to save first)
:q! Leave vi without saving any changes since last write Q Escape vi into ex editor with same file; :vi returns :e! File-edit current file, disregarding changes since last
write.
| f<char> | Search forward in current line to <char> |
| F<char> | Search backwards in curretn line to <char> |
| /<string> | Find next occurence of <string> |
| ?<string> | Find previous occurence of <string> |
| :set ic | Ingnore case while searching |
| :set noic | Case sensitive while searching (default) |
| :n,m s/<str1>/<str2>/<opt> | Search from n to m for <str1> and replace it with <str2> with option <opt>. <opt> can be c - confirm changes g - global replace p - to print changed lines |
| (Ex- :1,$ s/foo/bar/g | Replaces every occurence of "foo" with the string "bar".) |
| :g/<str>/<cmd> | Run <cmd> on all lines that contain <str> |
| :g/<str1>/s/<str2>/<str3>/ | Find line containing <str1>, replace <str2> with <str3> |
| :v/<str>/<cmd> | Execute <cmd> on all lines that do not match <str> |
( These commands may be preceded by a number to multiply commands )
| yy or Y | Yank current line into the buffer ( copy ) |
| nyy or nY | Yank n amount of line into buffer |
| p | Insert line(s) in buffer after cursor; also prints last deleted text |
| P | Insert line(s) in buffer before cursor |
| :set all | Displays all options you may "set" |
| :set showmode | Displays "INPUT MODE" while in input mode |
| :set tabstop=n | Sets the tabwidth of the tab key to n spaces; 8 is default, but 4 may be preferable |
| :set list | Displays all control characters in document; |