Using Vim is a good habit for developers of any level. Today we’re going to look through the set of basic commands that’s widely used in Vim.

Start/Quit Vim

Enter “vim” command in your terminal. This command will start vim editor in normal mode

> vim

In order to quit vim we need to activate command mode. For this you should press Shift+:(or Shift+;) . Then enter the command quit(or q) and press Enter.

Vim Modes

default: normal mode (for navigation and text manipulation)
command mode (Shift+:): to enter commands (including search and filter)
insert mode (i): to insert text
visual mode (v): to select blocks of text from the file (the only way to select a block of text)

To exit back to normal mode from any other mode press ESC.

h: left
j: down
k: up
l: right
w: one word forward
b: one word back

gg: set cursor to the beginning of file
G: set cursor into the end of file

Saving Files

:write(:w): save command for existed files
:write <filename with extension>(:w <filename with extension>): save command for new files (also can be used “vim " in terminal)

:wq(or :x): save file and quit vim

Normal mode built-in commands

dd: delete line
D: delete line, but preserve whitespace
dw: delete the word
cw: delete the word and activate insert mode

Combinations

d5w: delete 5 words
c3j: replace 3 lines and activate insert mode
C: replace the rest of line(starting cursor point) and activate insert mode

Combining commands

cit: change inside tag contents (between opening and closing tags)
ci{: change inside curly braces
ci": change inside quotes (not including quotes)
ci[: change inside square brackets
ci(: change inside parentheses

Copy and Paste

y: copy(yank) text (visual mode)
d: cut text (visual mode)
p: paste text (normal mode)
yy(or Y): yank current line, including newline character (normal mode)

Searching

/pattern: search forward for pattern
?pattern: search backward
n: repeat forward search
N: repeat backward

Buffer Usage

:e config.json: edit config.json file
:buffers (or :ls): list the current buffers (including numbers)
:b <num>: display the buffer with the given num.
:bd: delete the current buffer (will fail if unsaved)
:b#(or Ctrl+6): switching to the previously edited buffer
:set hidden: Allow switching buffers without saving.

Configure Vim

:syntax on: enables syntax highlighting
:syntax off: disables sntax highlighting
:set number: enables line numbers
:set nonumber: disables line numbers
:set relativemunber: enables relative line numbers
:set norelativenumber: disables relative line numbers
:set number relative numbers: enables both options of line numbers

help option-list: more options to set