For a long time, I ran away from Vim because it seemed very tricky and because there is a lot of simpler editors out there to work with. However, as it comes installed in most Linux distributions, I made this cheat sheet to help me understand how things work. I have discovered that is possible to be very productive with Vim 😃.
I'll try to go straight to the point. This cheat-sheet is not intended to be a complete guide but it helps to get started.
Vim have different operation modes, and I will not cover all of them in this cheat sheet. I'll stick with the basic functionality needed to open, edit and save a file.
Let's begin! To open a file with Vim just type vim filename
.
ESC
= enter "command mode"
Move the cursor
You can use the arrow keys to move the cursor around. There is also special keys to do this:
-
h
= move one character left -
j
= move one row down -
k
= move one row up -
l
= move one character right
Edition Mode
The following keys have to be typed in "Command Mode".
-
i
= insert text in the cursor position -
I
= insert text in the begin of the line -
o
= insert text in the next line -
O
= insert text in the previous line -
a
= insert a character after the current -
A
= insert text at the end of the line -
r
= replace the character at the current cursor position -
R
= enter replace mode to replace characters from the current cursor position -
u
= undo last action -
CTRL + r
= redo
Saving & Exiting
The following keys have to be typed in "Command Mode".
-
:w
= Save -
:q
= Exit -
:q!
= Force exit (exit without saving) -
:qa
= Exit from all opened files -
:wq
= Save and exit -
:x
= Save and exit -
ZZ
= Save and exit -
ZQ
= Force exit (exit without saving)
Copy, paste & cut
The following keys have to be typed in "Command Mode".
-
yy
= copy line -
p
= paste content to the below line -
P
= paste content to the above line -
yNy
= copy N lines -
cw
= cut the word starting from the current cursor position -
dd
= cut or delete a line -
D
= delete the line starting from the current cursor position -
dG
= delete the lines starting from the current cursor position to the end of the file -
dGG
= delete the lines starting from the current cursor position to the begin of the file -
dw
= delete the word starting from the current cursor position -
dNd
= cut or delete N lines -
x
= delete a character at the current cursor position (similar to "delete" key behaviour) -
X
= delete a character before the current cursor position (similar to "backspace" key behaviour) -
yw
= copy the word starting from the current cursor position
Visual Mode
The following keys have to be typed in "Command Mode".
-
v
= visual mode that allows to select a text fragment -
V
= visual mode that allows to select an entire line -
CTRL+v
= visual block that allows select a block of text
Navigation
The following keys have to be typed in "Command Mode".
-
/pattern
= search forward for a patter -
?pattern
= search backward for a pattern -
n
= pattern forward search -
N
= pattern backward search -
gg
= goes to the first line of the file -
G
= goes to the last line of the file -
H
= goes to the top of the current screen -
M
= goes to the middle of the current screen -
L
= goes to the end of the current screen
Commands
The following keys have to be typed in "Command Mode".
-
:set hlsearch
= enable search highlight -
:set number
= show line numbers -
:set tabstop=N
= set the size of TAB to N -
:set expandtab
= convert TAB in spaces -
:set bg=dark/light
= change the color scheme -
:set ignorecase
= makes the search case insensitive -
:syntax on/off
= enable/disable syntax highlighting -
:LNs/tobereplaced/replacer/g
= replaces(s) all(g) tobereplaced with replacer in the line LN -
:%s/tobereplaced/replacer/g
= replaces(s) all(g) tobereplaced with replacer in the entire file -
:e filename
= opens "filename" -
:r filename
= copy the contents of the "filename" to the current file -
:split filename
= split screen horizontally to show the current file and "filename" -
:vsplit filename
= split screen vertically to show the current file and "filename" -
:! command
= runs "command" in shell and show the STDOUT -
!! command
= runs "command" in shell and paste the STDOUT in the file
Top comments (0)