Normal Mode
Vim Text Editor Quick Reference
1 min read
Published Jul 6 2025
Guide Sections
Guide Comments
Normal mode is the initial, main mode thats available in Vim. You can usually get back to normal mode, from other modes, by pressing the Esc
key.
Making changes in normal mode
Key | Description |
---|---|
r | Replace 1 character |
R | Change to replace mode which will over type whatever you type until you press Esc to return to normal mode |
u | Undo the last change |
numberu | Undo the last number changes |
J | Join the line underneath on to the current line |
Ctrl+r | Redo the last change |
numberCtrl+r | Redo the number of last changes |
Cut, copy and paste
Key | Description |
---|---|
x | Cut a character out |
p | Paste after the cursor |
P | Paste before the cursor |
xp | swap 2 characters around |
D | Cut to the end of the line |
dw | Cut the current word |
dd | Cut the current line |
ddp | Swap 2 lines around |
yy | Yank (copy) a line |
"+y | Copy to the operating system clipboard |
"+yy | Copy a whole line to the operating system clipboard |
"+p | Paste from the operating system clipboard |
Change text case
Key | Description |
---|---|
vU | Make the character under the cursor uppercase |
vu | Make the character under the cursor lowercase |
~ | Toggle the case of the character under the cursor and move the cursor forwards to the next character |
viwU | Make the word under the cursor all upercase and move the cursor to the start of the word |
viwu | Make the word under the cursor all lowercase and move the cursor to the start of the word |
viw~ | Toggle the case of the word under the cursor and move the cursor to the start of the word |
VU | Make the line all uppercase and move the cursor to the start of the line |
gUU | Make the line all uppercase and move the cursor to the start of the line alternative |
Vu | Make the line all lowercase and move the cursor to the start of the line |
guu | Make the line all lowercase and move the cursor to the start of the line alternative |
V~ | Toggle the case of the current line and move the cursor to the start of the line |
g~~ | Toggle the case of the current line and move the cursor to the start of the line alternative |
gggUG | Make all the text uppercase and move the cursor to the start of the file |
ggguG | Make all the text lowercase and move the cursor to the start of the file |
ggg~G | Toggle the text of all the text and move the cursor to the start of the file |
Counters
Key | Description |
---|---|
Ctrl+a | Increase the value of a number under the cursor by 1, this works for decimals, hex or octal numbers |
numberCtrl+a | Increase the value of a number under the cursor by number, this works for decimals, hex or octal numbers |
Ctrl+x | Decrease the value of a number under the cursor by 1, this works for decimals, hex or octal numbers |
numberCtrl+x | Decrease the value of a number under the cursor by number, this works for decimals, hex or octal numbers |