Vim Cheat sheet
Vim, we all know it, some love it, most hate it, never be caught out by the old "go and exit vim" prank again with the below cheat sheet, you may even start to use it too... at least sometimes...
Cursor movement (Inside command/normal mode)
w- jump by start of words (punctuation considered words)W- jump by words (spaces separate words)e- jump to end of words (punctuation considered words)E- jump to end of words (no punctuation)b- jump backward by words (punctuation considered words)B- jump backward by words (no punctuation)0- (zero) start of line^- first non-blank character of line (same as 0w)$- end of line
Advanced (in order of what I find useful)
Ctrl+d- move down half a pageCtrl+u- move up half a page}- go forward by paragraph (the next blank line){- go backward by paragraph (the next blank line)gg- go to the top of the pageG- go the bottom of the page: [num] [enter]- Go To that line in the document
Searching
f [char]- Move to the next char on the current line after the cursorF [char]- Move to the next char on the current line before the cursort [char]- Move to before the next char on the current line after the cursorT [char]- Move to before the next char on the current line before the cursor- All these commands can be followed by
;(semicolon) to go to the next searched item, and,(comma) to go the the previous searched item
Insert/Appending/Editing Text
Results in insert mode
i- start insert mode at cursorI- insert at the beginning of the linea- append after the cursorA- append at the end of the lineo- open (append) blank line below current line (no need to press return)O- open blank line above current linecc- change (replace) an entire linec [movement command]- change (replace) from the cursor to the move-to point.- ex.
cechanges from the cursor to the end of the cursor word - Esc - exit insert mode
r [char]- replace a single character with the specified char (does not use insert mode)d- deleted- [movement command] deletes from the cursor to the move-to point.- ex.
dedeletes from the cursor to the end of the current word dd- delete the current line
Advanced
J- join line below to the current one
Marking text (visual mode)
v- starts visual mode
From here you can move around as in normal mode (hjkl etc.) and can then do a command (such as y, d, or c)
V- starts linewise visual modeCtrl+v- start visual block modeEsc- exit visual mode
Advanced
O- move to Other corner of blocko- move to other end of marked area
Visual commands Type any of these while some text is selected to apply the action
y- yank (copy) marked textd- delete marked textc- delete the marked text and go into insert mode (like c does above)
Cut and Paste
yy- yank (copy) a linep- put (paste) the clipboard after cursorP- put (paste) before cursordd- delete (cut) a linex- delete (cut) current characterX- delete previous character (like backspace)
Exiting
:w- write (save) the file, but don't exit:wq- write (save) and quit:q- quit (fails if anything has changed):q!- quit and throw away changes
Search/Replace
/pattern- search for pattern?pattern- search backward for patternn- repeat search in same directionN- repeat search in opposite direction:%s/old/new/g- replace all old with new throughout file (gn is better though):%s/old/new/gc- replace all old with new throughout file with confirmations
Working with multiple files
:e filename- Edit a file:tabe- make a new tabgt- go to the next tabgT- go to the previous tab
Advanced
:vsp- vertically split windowsctrl+ws- Split windows horizontallyctrl+wv- Split windows verticallyctrl+ww- switch between windowsctrl+wq- Quit a window
Marks Marks allow you to jump to designated points in your code.
m{a-z}- Set mark {a-z} at cursor position- A capital mark {A-Z} sets a global mark and will work between files
‘{a-z}- move the cursor to the start of the line where the mark was set‘’- go back to the previous jump location
General
u- undoCtrl+r- redo.- repeat last command