Vim keystrokes cheatsheet
The time has come for me to list few of the commands and keystrokes that I use (and the ones that I don’t but would like to start) in Vim.
I am actually running a Vim plugin for Visual Studio Code (this and the previous blogs are actually written with this plugin ON) at this very moment.
Bear 🐻 in mind: this blog is aboout keystrokes only, it is not about plugins or configuration I use - I shall cover that one day.
Things I know by heart
- h, j, k, l for slow but precise character-wise movement
- w, b for faster forward (and, correspondingly) backward word-by-word movement
- $ and ^ to go to the last and first word character of the line
- gg and G to go to the beginning and the end of the file
- O (capital
o
) to create a blank line and go to INSERT mode above and below (lower-caseo
) the cursor - f, F and t and T for single character lookup within the current line
- / and ? to search forwards and backwards
- c (followed by the object) to change the object; this expands to the following few commands:
- cw to change the current word under cursor
- cit to change the text within the current XML tag
- ca' to change the text surrounded by single quote
- ci< to change the text surrounded with
<
and>
- ci{symbol} to change the text surrounded by symbol, which could be
'
,"
,`
; you can also use b( for block of text, surrounded by braces, B{ for block of text surrounded by curly braces or p for paragraph, all instead of symbol
- v to enter the VISUAL mode, followed by the command:
- v{select}c immediately change the selection
- v{select}d cut the selected text
- y and p copy and paste the selected text (lower-case
p
pastes above the current line, capital-caseP
pastes below; capital-caseY
copies the entire line, so the duplicate line command in Vim is Y, P) - {number}{command} repeat the command number times
- . (the period or dot symbol) repeats the last command
- x to remove the character under cursor
- r{char} to replace the character under cursor with char
- A to go to the end of the line and enter INSERT mode (“append”)
- u and Ctrl+r to undo and redo actions
- > and < adds or removes the indentation
Things that I am still getting used to
- {number}{motion} instead of h, j, k, l
- a instead of i to enter INSERT mode after the cursor (as opposed to i which enters INSERT mode before the cursor)
- H, M and L to go to the top, middle and the bottom of the screen (High, Mid and Low)
- * and # to search for the word under cursor forwards and backwards
- {count}/{query}⏎ to go to the count-th occurrence of query; it is same as searching with / and then hitting n count times
- gd navigates to a definition of an entity under the cursor
- gf navigates to the path under cursor
- % moves the cursor to the matching brace, bracket or curly brace
- g~ toggle the case
- = format the selection
- gU makes the selection uppercase