Vim


Introduction


Vim is a very efficient text editor. This reference was made for Vim 8.0.

For shortcut notation, see :help key-notation.

Exiting


Shortcut Description
:q Close file
:qa Close all files
:w Save
:wq / :x Save and close file
ZZ Save and quit
:q! / ZQ Quit without checking changes


Exiting insert mode


Shortcut Description
Esc / <C-[> Exit insert mode
<C-C> Exit insert mode, and abort current command


Editing


Shortcut Description
a Append
A Append from end of line
i Insert
o Next line
O Previous line
s Delete char and insert
S Delete line and insert
C Delete until end of line and insert
r Replace one character
R Enter Replace mode
u Undo changes
<C-R> Redo changes


Clipboard


Shortcut Description
x Delete character
dd Delete line (Cut)
yy Yank line (Copy)
p Paste
P Paste before
"*p / "+p Paste from system clipboard
"*y / "+y Paste to system clipboard


Visual mode


Shortcut Description
v Enter visual mode
V Enter visual line mode
<C-V> Enter visual block mode


In visual mode


Shortcut Description
d / x Delete selection
s Replace selection
y Yank selection (Copy)

See Operators for other things you can do.

Find & Replace


Shortcut Description
:%s/foo/bar/g Replace foo with bar in whole document




Directions


Shortcut Description
h j k l Arrow keys
<C-U> / <C-D> Half-page up/down
<C-B> / <C-F> Page up/down


Words


Shortcut Description
b / w Previous/next word
ge / e Previous/next end of word


Line


Shortcut Description
0 (zero) Start of line
^ Start of line (after whitespace)
$ End of line


Character


fc Go forward to character c
Fc Go backward to character c


Document


Shortcut Description
gg First line
G Last line
:{number} Go to line {number}
{number}G Go to line {number}
{number}j Go down {number} lines
{number}k Go up {number} lines


Window


Shortcut Description
zz Center this line
zt Top this line
zb Bottom this line
H Move to top of screen
M Move to middle of screen
L Move to bottom of screen



Shortcut Description
n Next matching search pattern
N Previous match
* Next whole word under cursor
# Previous whole word under cursor

Operators


Usage


Operators let you operate in a range of text (defined by motion). These are performed in normal mode.

d w
Operator Motion


Operators list


Shortcut Description
d Delete
y Yank (copy)
c Change (delete then insert)
> Indent right
< Indent left
= Autoindent
g~ Swap case
gU Uppercase
gu Lowercase
! Filter through external program

See :help operator

Examples


Combine operators with motions to use them.

Shortcut Description
dd (repeat the letter) Delete current line
dw Delete to next word
db Delete to beginning of word
2dd Delete 2 lines
dip Delete a text object (inside paragraph)
(in visual mode) d Delete selection

See: :help motion.txt

Text objects


Usage


Text objects let you operate (with an operator) in or around text blocks (objects).

v i p
Operator [i]nside or [a]round Text object


Text objects


Shortcut Description
p Paragraph
w Word
s Sentence
[ ( { < A [], (), or {} block
' " ` A quoted string
b A block [(
B A block in [{
t A XML tag block


Examples


Shortcut Description
vip Select paragraph
vipipipip Select more
yip Yank inner paragraph
yap Yank paragraph (including newline)
dip Delete inner paragraph
cip Change inner paragraph

See Operators for other things you can do.

Diff


Shortcut Description
gvimdiff file1 file2 [file3] See differences between files, in HMI

Misc


Tab pages


Shortcut Description
:tabedit [file] Edit file in a new tab
:tabfind [file] Open file if exists in new tab
:tabclose Close current tab
:tabs List all tabs
:tabfirst Go to first tab
:tablast Go to last tab
:tabn Go to next tab
:tabp Go to previous tab


Folds


Shortcut Description
zo / zO Open
zc / zC Close
za / zA Toggle
zv Open folds for this line
zM Close all
zR Open all
zm Fold more (foldlevel += 1)
zr Fold less (foldlevel -= 1)
zx Update folds

Uppercase ones are recursive (eg, zO is open recursively).


Shortcut Description
% Nearest/matching {[()]}
[( [{ [< Previous ( or { or <
]) Next
[m Previous method start
[M Previous method end


Jumping


Shortcut Description
<C-O> Go back to previous location
<C-I> Go forward
gf Go to file in cursor


Counters


Shortcut Description
<C-A> Increment number
<C-X> Decrement


Windows


| z{height}<Cr> | Resize pane to {height} lines tall |

Tags


Shortcut Description
:tag Classname Jump to first definition of Classname
<C-]> Jump to definition
g] See all definitions
<C-T> Go back to last tag
<C-O> <C-I> Back/forward
:tselect Classname Find definitions of Classname
:tjump Classname Find definitions of Classname (auto-select 1st)


Case


Shortcut Description
~ Toggle case (Case => cASE)
gU Uppercase
gu Lowercase
gUU Uppercase current line (also gUgU)
guu Lowercase current line (also gugu)

Do these in visual or normal mode.

Marks


Shortcut Description
`^ Last position of cursor in insert mode
`. Last change in current buffer
`" Last exited current buffer
`0 In last file edited
'' Back to line in current buffer where jumped from
`` Back to position in current buffer where jumped from
`[ To beginning of previously changed or yanked text
`] To end of previously changed or yanked text
`< To beginning of last visual selection
`> To end of last visual selection
ma Mark this cursor position as a
`a Jump to the cursor position a
'a Jump to the beginning of the line with position a
d'a Delete from current line to line of mark a
d`a Delete from current position to position of mark a
c'a Change text from current line to line of a
y`a Yank text from current position to position of a
:marks List all current marks
:delm a Delete mark a
:delm a-d Delete marks a, b, c, d
:delm abc Delete marks a, b, c


Misc


Shortcut Description
. Repeat last command
]p Paste under the current indentation level
:set ff=unix Convert Windows line endings to Unix line endings


Command line


Shortcut Description
<C-R><C-W> Insert current word into the command line
<C-R>" Paste from “ register
<C-X><C-F> Auto-completion of path in insert mode


Text alignment


:center [width]
:right [width]
:left

See :help formatting

Calculator


Shortcut Description
<C-R>=128/2 Shows the result of the division : ‘64’

Do this in insert mode.

Exiting with an error


:cq
:cquit

Works like :qa, but throws an error. Great for aborting Git commands.


Spell checking


Shortcut Description
:set spell spelllang=en_us Turn on US English spell checking
]s Move to next misspelled word after the cursor
[s Move to previous misspelled word before the cursor
z= Suggest spellings for the word under/after the cursor
zg Add word to spell list
zw Mark word as bad/misspelling
zu / C-X (Insert Mode) Suggest words for bad word under cursor from spellfile

See :help spell

Also see