Vim cheatsheet

Vim is a very efficient text editor. This reference was made for Vim 8.0.
For shortcut notation, see :help key-notation.

Exiting

:qaClose all files
:qa!Close all files, abandon changes
:wSave
:wq / :xSave and close file
:qClose file
:q!Close file, abandon changes
ZZSave and quit
ZQQuit without checking changes
h j k lArrow keys
<C-U> / <C-D>Page up/page down

Words

b / wPrevious/next word
e / gePrevious/next end of word

Line

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

Character

fcGo forward to character c
FcGo backward to character c

Document

ggFirst line
GLast line
:nGo to line n
nGGo to line n

Window

zzCenter this line
HMove to top of screen
MMove to middle of screen
LMove to bottom of screen

Tab pages

:tabedit [file]Edit file in a new tab
:tabfind [file]Open file if exists in new tab
:tabcloseClose current tab
:tabsList all tabs
:tabfirstGo to first tab
:tablastGo to last tab
:tabnGo to next tab
:tabpGo to previous tab

Editing

aAppend
iInsert
oNext line
OPrevious line
sDelete char and insert
SDelete line and insert
CDelete until end of line and insert
rReplace one character
REnter Replace mode
uUndo changes
<C-R>Redo changes

Exiting insert mode

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

Clipboard

xDelete character
ddDelete line (Cut)
yyYank line (Copy)
pPaste
PPaste before

Visual mode

vEnter visual mode
VEnter visual line mode
<C-V>Enter visual block mode

In visual mode

d / xDelete selection
sReplace selection
yYank selection (Copy)

See Operators for other things you can do.

Operators

Usage

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

dw
OperatorMotion

Operators list

dDelete
yYank (copy)
cChange (delete then insert)
>Indent right
<Indent left
g~Swap case
gUUppercase
guLowercase
!Filter through external program

See :help operator

Examples

Combine operators with motions to use them.

dd(repeat the letter) Delete current line
dwDelete to next word
dbDelete to beginning of word
2ddDelete 2 lines
dipDelete a text object (inside paragraph)
(in visual mode) dDelete selection

See: :help motion.txt

Text objects

Usage

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

vip
Operator[i]nside or [a]roundText object

Text objects

pParagraph
wWord
sSentence
[ ( { <A [], (), or {} block
' " `A quoted string
bA block [(
BA block in [{
tA XML tag block

Examples

vipSelect paragraph
vipipipipSelect more
yipYank inner paragraph
yapYank paragraph (including newline)
dipDelete inner paragraph
cipChange inner paragraph

See Operators for other things you can do.

Diff

gvimdiff file1 file2 [file3]See differencies between files, in HMI

Misc

Folds

zo / zOOpen
zc / zCClose
za / zAToggle
zvOpen folds for this line
zMClose all
zROpen all
zmFold more (foldlevel += 1)
zrFold less (foldlevel -= 1)
zxUpdate folds

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

[( [{ [<Previous ( or { or <
])Next
[mPrevious method start
[MPrevious method end

Jumping

<C-O>Go back to previous location
<C-I>Go forward
gfGo to file in cursor

Counters

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

Windows

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

Tags

:tag ClassnameJump 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 ClassnameFind definitions of Classname
:tjump ClassnameFind definitions of Classname (auto-select 1st)

Case

~Toggle case (Case => cASE)
gUUppercase
guLowercase
gUUUppercase current line (also gUgU)
guuLowercase current line (also gugu)

Do these in visual or normal mode.

Marks

`^Last position of cursor in insert mode
`.Last change
``Last jump
maMark this cursor position as a
`aJump to the cursor position a
'aJump to the beginning of the line with position a

Misc

.Repeat last command
]pPaste under the current indentation level

Command line

<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

<C-R>=128/2Shows 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

:set spell spelllang=en_usTurn on US English spell checking
]sMove to next misspelled word after the cursor
[sMove to previous misspelled word before the cursor
z=Suggest spellings for the word under/after the cursor
zgAdd word to spell list
zwMark word as bad/mispelling
zu / C-X (Insert Mode)Suggest words for bad word under cursor from spellfile

See :help spell

Also see

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *