Vim is simply an improved version of Vi. It pretty much has a ton of stuff that Vi doesn’t.


Within Vim you can see the differences between Vi and Vim by running the following command  :h vi-differences.


root@haktuts:~$ Vi <filename>
[It will create a Blank file.]

root@haktuts:~$ Vi <file1> <file2> <file3>
[It will create multiple file at once.]

root@haktuts:~$ Vi file1.txt 
[to open file1.txt using Vi]
[press i  - to insert text in file1.txt]
[press Shift+: and then type wq  to save and quit.
            : q  to exit without any changes in file
            : x  to save changes and exit.]




:x - exit, saving changes 
:wq - exit, saving changes 
:q - exit, if no changes 
:q! - exit, ignore changes 

Inserting text 


i - insert before cursor 
I - insert before line 
a - append after cursor 
A - append after line 
o - open new line after cur line 
0 - open new line before cur line 
r - replace one character 
R - replace many characters 



h - move left 
j - move down 
k - move up 
l- move right
w - move to next word
W - move to next blank delimited word 
b - move to beginning of the word 
B - move to beginning of blank delimited word 
e - move to end of word 
E - move to end of blank delimited word 
( - move a sentence back 
) - move a sentence forward 
{ - move paragraph back 
} - move paragraph forward 
0 - move to beginning of line 
$ - move to end of line 
nG - move to nth line of file 
:n - move to nth line of file 
G - move to last line of file 
fc - move forward to 'c' 
Fc - move backward to 'c' 
H - move to top of screen 
M - move to middle of screen 
L - move to bottom of screen 
% - move to associated (),{},0 

Deleting text


x - delete character to the right 
X - delete character to the left 
D - delte to the end of line 
dd - delete current line 
:d - delete current line 



/string - search forward for string 
?string - search back for string 
n - search for next instance of string 
N - for for previous instance of string 



:s/pattern/string/flags - replace pattern with string, according to flags 
g - flag, replace all occurences 
c - flag, confirm replaces 
& - repeat last :s command



:w file - write to file 
:r file - read file in after line 
:n - go to next file 
:p - go to previous file 
:e file - edit file 
!!cmd - replace line with output of cmd 



u - undo last change 
U - undo all changes to line