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 openviwith the filea.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 leftjmoves one line downkmoves one line uplmoves 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 tol
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 becauseeis the character just beforeHbackwards.
Hello! I like Vi. ^
