Vi Introduction
Vi is the free and open-source editor that is present on most UNIX systems. Vi is a modal editor. It has three main modes (ways to interact with the editor). https://en.m.wikibooks.org/wiki/Learning_the_vi_Editor is a good resource for an introduction.
Starting Vi
vi [[files to edit]]
Examples:
- Without any arguments, viwill just start a blank new file.
- vi a.txtwill open- viwith the file- a.txt
Insertion Mode
In insert mode, you can type in text
 i  switches to insert mode and  a  switches to insert mode moving the
cursor one character forward.
 <Escape>  can be used to exit insert mode.
Command Mode
Command mode is used to send commands to the text editor. User  :  to enter command mode.
Saving and Opening Files
 :w  saves a files
 :w [filename]  Saves the file as  filename 
 :q  exits the editor
 :wq  saves and exits
 :q!  exits without saving
 :e [filename]  opens file  filename  for editing
 :e! [filename]  discards changes in current buffer and opens file  filename  for editing
Normal Mode
By default  vi , opens in Normal Mode.
Normal Mode allows you to cut, copy, paste, etc.
To come back to Normal Mode from any mode, press  Escape .
 [num]command  will execute  command   num  times.
Movement
Vi uses  h, j, k, l  for movement.
It allows for faster editing as the keys are present in the home row.
- hmoves one character left
- jmoves one line down
- kmoves one line up
- lmoves one character right
             k (up)
 h (left)            l (right)
             j (down)
 w  moves to the beginning of the next word while
 b  moves to beginning of the previous word.
 e  moves to the end of the next word.
 0  moves to the beginning of the sentence while  $  moves to the end
of the sentence.
 G  moves to the end of the file
 [num]G  moves to the line number  num 
Examples:
- Initial
Hello! I like Vi. ^
- wwill move one word forward to- !
Hello! I like Vi.
     ^
- 2wwill move two words forward to- l
Hello! I like Vi.
         ^
- ewill move to the end of the word
Hello! I like Vi.
            ^
- $will move to the end of the line.
Hello! I like Vi.
                ^
- 3bwill move three words back
Hello! I like Vi.
       ^
- 0will move to the beginning of the line
Hello! I like Vi. ^
Cutting and Pasting
 yw  copies a word,  yy  or  Y  copies a line.
 dw  cuts/deletes a word,  dd  cuts a line,  D  cuts a line from the cursor till the end (same as  d$ ).
 cw  changes a word,  cc  changes a line,  C  changes a line from the cursor till the end (same as  c$ ).
 y, d and c  can be combined with $0, $, f, t, etc.$
 p  is used to paste after the cursor while  P  is used to paste before
the cursor.
Searching
 /  is used to search forwards.
 ?  is used to search backwards.
 n  goes to the next occurrence while  N  goes to the previous occurrence.
 f[char]  goes to the first occurrence (after the cursor) of char.  F[char]  does the same thing but backwards.
 t[char]  goes to the position just before the first occurrence (after the cursor) of char.  T[char]  does the same thing but backwards.
Examples:
- Initial
Hello! I like Vi. ^
- flgoes to the third character in the line
Hello! I like Vi. ^
- tIgoes to the seventh character in the line
Hello! I like Vi.
      ^
- Flgoes to the fourth character in the line
Hello! I like Vi. ^
- THgoes to the second character in the line because- eis the character just before- Hbackwards.
Hello! I like Vi. ^
