A quick vim cheatsheet for those of us who enjoy using vim, but don’t use it often enough to have the command sequences committed to memory.
Starting with the simplest operations, and then moving on to a few more complex and difficult to remember ones.
Remember that you always start in normal/visual mode. To enter insert mode to start entering text, you can use i
or I
.
- Quit without saving:
:q!
- Quit and write changes:
:wq
- Enter insert mode at beginning or end of current line:
I
- Enter insert mode at the current position of the cursor:
i
- Escape current mode:
Esc
- Search forward for text pattern:
/text
- Search backward for text pattern:
?text
- Go to bottom of page:
G
- Go to top of page:
gg
Copy/paste style vim operations:
- Copy and line (yank): yy
- Paste a ‘yanked’ line:
p
(after) orP
(before) cursor. - Delete character before cursor:
X
and after cursor:x
- Delete current line:
dd
- Delete current line and start insert mode:
cc
Deleting
- Delete all lines in file:
ddgD
Sorting
- Sort all lines (no range):
:sort
- Sort all lines (no range, reversed):
:sort!
- Add options to the sort command:
i
– ignore casen
– sort based on the first decimal on the linef
– sort based on the first float on the line
Some useful, yet more arcane vim operations:
- Clear all lines in a file (1 is the first line, $ is the last line, and d is delete):
:1,$d
- Insert the result of Vimscript expressions into your file:
- Enter Vim’s command line: Enter INSERT mode, and type
CTRL + R =
- Type a Vimscript expression, for example
system("ls")
and pressENTER
- The output of the command ls will be inserted into the buffer.
- Enter Vim’s command line: Enter INSERT mode, and type
Example of the above vimscript expression register result insert:
This of course only scratches the surface of the surface of what can be done. It’s just a quick little vim cheatsheet that I’ll refer back to when I get a little rusty.
The advanced or more arcane commands are the useful ones that I tend to forget when I’m not using them on a daily basis. I’ll certainly be recalling this post and updating those with new ones that I find useful in the future.