Vim Shortcuts

My Commonly-Used Shortcuts

Folding in Vim

Shortcut Description
zf#j creates a fold from the cursor down # lines
zf/string creates a fold from the cursor to string
zj moves the cursor to the next fold
zk moves the cursor to the previous fold
zo opens a fold at the cursor
zO opens all folds at the cursor
zm increases the foldlevel by one
zM closes all open folds
zr decreases the foldlevel by one
zR decreases the foldlevel to zero – all folds will be open
zd deletes the fold at the cursor
zE deletes all folds
[z move to start of open fold
]z move to end of open fold
zO opens all folds at the cursor

Configuration

Shortcut Description
:vimfiles Show the loaded vim files (vimrc, etc.).
:so $MYVIMRC Reload the vimrc
Shortcut Description
[{ Jump to beginning of code block
gm Jump to middle of the screen
w N words foward
W N words forward (blank-separated)
{/} N paragraphs forward/backward
% Goto matching brace
g Move across displayed lines when wrapped
CTRL+^ Edit alternate file
e End of word
0 First character of line
^ First non-blank character of line
0 Last character of line
gm Middle of line
g0/^/$ Beginning/non-blank beginning/end of a wrapped line
f/FX Jump to next, previous character X in a line
; Repeat last jump
, Repeat reverse of last jump
M/H/L Jump to middle/top/bottom of the screen
CTRL+f/b Jump forward/backward one screen
CTRL+u/d Jump forward/backward 1/4 screen
CTRL+e/y Scroll up/down one line
zt Scroll line to top of screen
Ng/G Go to line N
gg/G First/last line of file
m/M Make a file or global mark
‘X Go to beginning of line with mark X
`X Go to line and column of mark X
d’X Delete to mark X
‘0 Go to the line you were at when you last exited vim
‘1-9 Go to the line you were at when you exited vim the Nth time before
‘'`` Go to the beginning/column of the line where you last jumped from
‘.`. Go to the beginning/column of the last change
CTRL+o/i Go back/forward in the jump list

Windows

Shortcut Description
CTRL-w + s/v Horizontal/Vertical split
CTRL-w + j/k Focus up/down to different windows
CTRL-w + J/K Move buffer up/down to different windows
CTRL-w + w Cycle to a window counter-clockwise
CTRL-w + p Focus previous window
CTRL-w + o Make the current window the only one
CTRL-w + r Rotate windows clockwise
CTRL-w + x Exchange window with the next one
CTRL-w + t Move window to new tab
CTRL-w + c Close window
CTRL-w + < Increase vertical window size
CTRL-w + > Decrease vertical window size
CTRL-w + - Decrease horizontal window size
CTRL-w + + Increase horizontal window size
CTRL-w + = Make windows equal in size
80 CTRL-w + | Make window 80 columns

Buffers

Shortcut Description
ls List buffers
b1 Goto first buffer
bn/p Goto next/previous buffer
bf/l Goto first/last buffer
bd Delete buffer
ba Open window for every buffer
CTRL+^ Goto last file you edited
\be Buffer explorer
d Delete buffer (buffer explorer)

Editing

Shortcut Description
i/I Insert mode at current position/beginning of the line
a/A Insert mode at current position+1/end of the line
o/O Open new line below/above current line
r Replace character and return to insert mode
R Replace current text, and press backspace to restore
c3w Change 3 words. Changed text is on the unnamed register
x Delete current character
dd Delete line
J Join line
gJ Join line without adding space
«/» Indent/outdent
Ctrl+t/d Indent/outdent in insert mode
(/)/{/} Move back/forward one sentence/paragraph
% Go to matching brace or control structure depending on the language
vit Visually select the contents of a tag. ‘o’ will switch the insertion point from the beginning/end
s/./&-/g Add a dash after every character in the line
@: Execute last command
; Execute last movement (some, like fc)
; Repeat latest f, t, F or T [count] times. See
Ctrl+r/Ctrl+u Delete to start of previous word/beginning of the line (insert mode)
Shortcut Description
g#/#/N/n//g Matches: prev. partial/prev./next/next current word/next partial match
y?X Yank text until previous occurence of subject X
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] Search over range: c (confirm or skip each match), i/I (ignore case, case sensitive), n (show number of matches), p (print matching lines)
:[range]g[lobal]/{pattern}/cmd Execute command over range: # (show matches), d (delete lines), y (yank lines)
.,10g/{pattern}/d Delete matches from cursor and next 10 lines
.,‘a+10g/{pattern}/d Delete matches from mark [a} and next 10 lines
.,‘a+10g/{pattern}/# Show line numbers from mark [a} and next 10 lines
g/X/p Print all lines matching {X}
v/X/# Show lines and numbers not matching {X}
:.,‘a s/{pattern}/{string} Search until mark {a}
:g/{subject}/normal O{string} Add a line containing {string} above each occurrence of {subject}
:noh Turn off highlighting until the next search
d/{search}/e Delete until next occurence of {search} inclusive
:g/^$/d Delete all blank lines
:g/{search}/+ y Yank line after {search}
Ctrl+r+\ Paste search pattern in command mode

Visual Mode

Shortcut Description
o Move the other end of the selection

Command-line Mode

Shortcut Description
Ctrl+d Autocomplete
Ctrl+r, Ctrl+w\Ctrl+a Insert the word\WORD that is under the cursor
q: or q/ Open command-line window with Ex commands or search history
Ctrl+f Switch to command-line window when in command-line mode