======================================================= Misc: vi cheat sheet ======================================================= :Title: Misc: vi cheat sheet :Author: Douglas O'Leary :Description: Misc: vi cheat sheet :Date created: 02/1997 :Date updated: 03/1999 :Disclaimer: Standard: Use the information that follows at your own risk. If you screw up a system, don't blame it on me... .. contents:: Edit commands ============= +----------------------------------+------------+------------+------------+ | Text Object | Change | Delete | Copy | +==================================+============+============+============+ | 1 word | cw | dw | yw | +----------------------------------+------------+------------+------------+ | 2 words not counting punctuation | 2cW or c2W | 2dW or d2W | 2yW or y2W | +----------------------------------+------------+------------+------------+ | 3 words back | 3cb or c3b | 3db or d3b | 3yb or y3b | +----------------------------------+------------+------------+------------+ | 1 line | cc | dd | yy or Y | +----------------------------------+------------+------------+------------+ | To end of line | c$ or C | d$ or D | y$ | +----------------------------------+------------+------------+------------+ | To beginning of line | c0 | d0 | y0 | +----------------------------------+------------+------------+------------+ | Single character | r | x or X | y1 or yh | +----------------------------------+------------+------------+------------+ | 5 characters | 5s | 5x | 5y1 | +----------------------------------+------------+------------+------------+ ~~~~~~~~~~~~~~~~~~~~~ +----------------------------------------------+---+ | Insert text at current position | i | +----------------------------------------------+---+ | Insert text at beginnging of line | I | +----------------------------------------------+---+ | Append text at current position | a | +----------------------------------------------+---+ | Append text at beginning of line | A | +----------------------------------------------+---+ | Open new line below cursor for new text | o | +----------------------------------------------+---+ | Open new line above cursor for new text | O | +----------------------------------------------+---+ | Delete line and substitute text | S | +----------------------------------------------+---+ | Overstrike existing characters with new text | R | +----------------------------------------------+---+ | Join current and next line | J | +----------------------------------------------+---+ | Toggle case | ~ | +----------------------------------------------+---+ | Repeat last action | . | +----------------------------------------------+---+ | Undo last change | u | +----------------------------------------------+---+ | Restore line to original state | U | +----------------------------------------------+---+ ~~~~~~~~~~~~~~~~~~~~~ Movement commands ================== +---------------------------------------------------------------+---------------+ | Movement | Commands | +===============================================================+===============+ | left, down, up, right | h, j, k, l | +---------------------------------------------------------------+---------------+ | Forward by word | w or W | +---------------------------------------------------------------+---------------+ | Backward by word | b or B | +---------------------------------------------------------------+---------------+ | To end of line | $ | +---------------------------------------------------------------+---------------+ | To beginning of line | 0 or ^ | +---------------------------------------------------------------+---------------+ | Scroll forward one screen | ^F | +---------------------------------------------------------------+---------------+ | Scroll backward one screen | ^B | +---------------------------------------------------------------+---------------+ | Scroll forward half a screen | ^D | +---------------------------------------------------------------+---------------+ | Scroll backward half a screen | ^U | +---------------------------------------------------------------+---------------+ | Scroll forward one line | ^E | +---------------------------------------------------------------+---------------+ | Scroll backward one line | ^Y | +---------------------------------------------------------------+---------------+ | Move current line to the top of the screen and scroll | z < RETURN> | +---------------------------------------------------------------+---------------+ | Move current line to the center of the screen and scroll | z. | +---------------------------------------------------------------+---------------+ | Move current line to the bottom of the screen and scroll. | z- | +---------------------------------------------------------------+---------------+ | Redraw the scren | ^L | +---------------------------------------------------------------+---------------+ | Move to the top of the screen | H | +---------------------------------------------------------------+---------------+ | Move to the middle of the screen | M | +---------------------------------------------------------------+---------------+ | Move to the bottom of the screen | L | +---------------------------------------------------------------+---------------+ | Move to the first character of the next line | + or | +---------------------------------------------------------------+---------------+ | Move to the first non-blank character of current line. | ^ | +---------------------------------------------------------------+---------------+ | Move to column n of current line | n| | +---------------------------------------------------------------+---------------+ | Move to the end of a word | e | +---------------------------------------------------------------+---------------+ | Move to the end of a word, ignoring punctuation. | E | +---------------------------------------------------------------+---------------+ | Move to the beginning of the current sentence | ( | +---------------------------------------------------------------+---------------+ | Move to the beginning of the next sentence. | ) | +---------------------------------------------------------------+---------------+ | Move to the beginning of the current paragraph | { | +---------------------------------------------------------------+---------------+ | Move to the beginning of the next paragraph | } | +---------------------------------------------------------------+---------------+ | Move to the beginning of the current section | [[ | +---------------------------------------------------------------+---------------+ | Move to the beginning of the next section | ]] | +---------------------------------------------------------------+---------------+ | Search forward for a pattern | /pattern | +---------------------------------------------------------------+---------------+ | Search backward for a pattern | ?pattern | +---------------------------------------------------------------+---------------+ | Repeat last search | n | +---------------------------------------------------------------+---------------+ | Repeat last search in opposite direction | N | +---------------------------------------------------------------+---------------+ | Repeat last search forward | / | +---------------------------------------------------------------+---------------+ | Repeat last search backward. | n | +---------------------------------------------------------------+---------------+ | Move to next occurrence of x in current line. | fx | +---------------------------------------------------------------+---------------+ | Move to previous occurrence of x in current line. | Fx | +---------------------------------------------------------------+---------------+ | Move to just before next occurrence of x in current line. | tx | +---------------------------------------------------------------+---------------+ | Move to just before previous occurrence of x in current line. | Tx | +---------------------------------------------------------------+---------------+ | Repeat previous find command in same direction | ; | +---------------------------------------------------------------+---------------+ | Repeat previous find command in opposite direction | , | +---------------------------------------------------------------+---------------+ | Go to n line | nG | +---------------------------------------------------------------+---------------+ | Go to the end of the file | G | +---------------------------------------------------------------+---------------+ | Show current line | ^G | +---------------------------------------------------------------+---------------+ ~~~~~~~~~~~~~~~~~~~~~ Buffer and marking commands ============================ +-----------+----------------------------------------------------------+ | Command | Meaning | +===========+==========================================================+ | "bcommand | Do commnad with buffer b | +-----------+----------------------------------------------------------+ | mx | Mark current position with x | +-----------+----------------------------------------------------------+ | 'x | Move cursor to the first character of line marked with x | +-----------+----------------------------------------------------------+ | \`x | Move cursor to character marked by x | +-----------+----------------------------------------------------------+ | \`\` | Return to previous mark | +-----------+----------------------------------------------------------+ | '' | Return to beginning of line containing previous mark | +-----------+----------------------------------------------------------+ ~~~~~~~~~~~~~~~~~~~~~ ex editor examples ================== +------------------------+---------------------------------------------------------------------------+ | Ex command: | Description | +========================+===========================================================================+ | :3,18d | Delete lines 3 - 18 | +------------------------+---------------------------------------------------------------------------+ | 160,224m23 | Move lines 160-224 to the line following 23. | +------------------------+---------------------------------------------------------------------------+ | 23,29co100 | Copy lines 23-29 and place them after line 100. | +------------------------+---------------------------------------------------------------------------+ | %d | Delete all lines in the file | +------------------------+---------------------------------------------------------------------------+ | :100;+5p | Sets the current line to 100 then prints the next five lines. | | | The semicolon is the important syntax. This gets around the error that | | | states First address exceeds second. | +------------------------+---------------------------------------------------------------------------+ | 340,$w >>new_file | Appends lines 340 - EOF to new_file | +------------------------+---------------------------------------------------------------------------+ | :$r | in_file Reads in_file and places contents at the end of the current file. | +------------------------+---------------------------------------------------------------------------+ | :0r | in_file Reads in_file and places contents at the top of the current file. | +------------------------+---------------------------------------------------------------------------+ | :e# or -^ | Switches to the previously edited file. | +------------------------+---------------------------------------------------------------------------+ | "f4yy | Yanks four lines into buffer f | +------------------------+---------------------------------------------------------------------------+ | "fp | Puts the contents of buffer f after the current line. | +------------------------+---------------------------------------------------------------------------+ | :200,210ya j | Yanks lines 200 - 210 into buffer j | +------------------------+---------------------------------------------------------------------------+ | :$pu j | Puts the contents of buffer j at the end of the file. | +------------------------+---------------------------------------------------------------------------+ | :%s/old/new/g | Global search of the file, replacing old w/new | +------------------------+---------------------------------------------------------------------------+ | :g/pattern/s/old/new/g | Searches the file for pattern; once found, changes old to new on | | | matching lines only. A context-sensitive search/replace, if you will. | +------------------------+---------------------------------------------------------------------------+ | :g/^$/d | Deletes any blank lines in the file | +------------------------+---------------------------------------------------------------------------+ | :%s/biteme/& harder/ | Searches globally for biteme and replaces it with biteme harder. The & | | | is shorthand for the entire original search. | +------------------------+---------------------------------------------------------------------------+ ~~~~~~~~~~~~~~~~~~~~~ UNIX cmds, macros, abbrevs & key mappings ========================================= +------------------------------------+------------------------------------------------------+ | Command | Meaning | +====================================+======================================================+ | :r !date | Results in Mon Jan 6 14:12:20 CST 2003 being put in | | | the line following the current. | +------------------------------------+------------------------------------------------------+ | :r !sort phone | Reads in the sorted file phone and places it below | | | the current line. | +------------------------------------+------------------------------------------------------+ | :%sort -r | Reverse sorts the contents of the file | +------------------------------------+------------------------------------------------------+ | :%! '[A-Z]' '[a-z]' | Converts all capitalized letters to lowercase. | +------------------------------------+------------------------------------------------------+ | :ab bm biteme harder | Creates an abbreviation such that any time you type | | | bm as a single word, vi will automatically replace | | | it with biteme harder. Must be in insert mode for | | | this to work. | +------------------------------------+------------------------------------------------------+ | :unab bm | Removes the abbreviation for bm | +------------------------------------+------------------------------------------------------+ | :map ^R o>^M^M^I | Maps -R to the keysequence that opens a line below | | | the current and adds terminating row, new row, and | | | table data html tags. The ^M and ^I key sequences | | | must be added using -V and -V | | | characters. | +------------------------------------+------------------------------------------------------+ | :unmap ^R | Removes the key mapping. | +------------------------------------+------------------------------------------------------+