vi editor Quick Reference

vi  pronounced as ” vee eye ” is a unix editor available on almost all the unix  operating systems , solaris , bsd ,aix , hpux etc.
This document is a quick reference to vi editor and will be of help if your are new to unix , learning unix  or just refreshing your vi knowledge after a few years.

In order to work correctly the vi need  correct terminal type (TERM) setting  .The TERM setting depends on the   type of terminal you have . Commonly used TERM types are vt100 , vt220 and ansi .  In most cases vt100 will  work  fine . In case  vi is not able to understand the TERM you have given, it starts in open mode   giving you a line by line display .
Generally TERM is taken from .profile or  /etc/profile  but can be set at the command line as :
$export TERM

echo $TERM will display the current TERM set.

Create new file or  Open existing file in vi
vi without any file name will open a   new file where you can enter the text and edit but while coming out you will  be asked to enter a valid file name to save the text.  vi with a  file name as argument will  open that file for editing  if the file already exists it opens it  otherwise it creates a new file by the argument.
Example :  $vi  testfile
Creates or opens the existing file called testfile

Modes in vi

vi operates in following  two modes :
i. ) Command Mode : After a file is opened it is opened  in command
mode ,that is , input from the keyboard will be treated as vi commands
and you will not see the words you are typing on the screen .

ii.) Insert Mode: To enter the text you have to put vi in insert  by pressing ‘i’ or ‘a’  after  which you can add the text and whatever is being type will be seen on the  screen. . To switch between these mode Esc key is used .   Esc i
(text mode)  Esc (command mode)

Saving  & Exiting  vi editor
You can exit vi in different ways :

1.) Quit without saving : If you don’t  want to save the work :q  will take you out without saving  your editing in vi.
2.) Write & quit : . Simple :w saves the current file but don’t exit. For save and quit  :wq is  used in vi.
3.) Forced Quite : An ! (Exclamation  sign at the end of  exit commands ( :q! , :wq! )  causes a forced  quit from vi  after ignoring editing (for :q!)  or writing (for :wq!)  all the change

Vi Commands – Reference
Moving Cursor in File
Left h
Right l
Up k
Down j
Beginning ^ or B
end $
Next sentance )
Previous sentance (
Next }
Previous {
Go to end of file :$
on chacter forword :w
One word forword :W
go to a line number :line_number
display file info . ^g
Inserting and appending text
inserts text to the left of cursor i
nserts in the beginning of line I
appends text to right of cursor a
appends to the end of line A
Adding new line
add a new line below the current line o
adds a new line above the current line. O
Deleting the text :
deletes text above the text x
deletes text character on right of cursor X
deletes line 20 20d
deletes current line dd
delete till end of current line. D
Replacing a character & word
replace the character above the cursor. r
replces characters until Esc is pressed. R
replaces the word from cursor to the end indicated by $ sign . cw
replaces till end of line. C
subistutes current charcater. s
substitutes entire line. S
Undo last changes
undo last change. u
undo changes to the current line. U
Copy and pasting lines
copys the current line into buffer. yy
copies 5 lines from the current line. 5yy
pastes the current buffer. p
Searches for the word name in the file :/name
n continues search forward. n
N searches backwards N
saves the text does not quit. :w
saves & quit the editor . :wq!
save ZZ
Quit without saving q!
Search & Replace s/<search>/<replace>/g .
Repeating last command .
Recovering a unsaved vi file.
vi -r filename

4 Responses to vi editor Quick Reference

  1. PCSH says:

    Hi, I am wondering what is the difference between normal quit (:q or :wq) and forced quit (:q! or :wq!)? What is it forcing to do? To override something? Please help. Thanks!

  2. Eric says:

    q will exit, but does not exit if there are changes.
    q! will exit with unsaved changes.
    wq will save and exit.

    Looks like a good reference, but there are a few errors:

    20d does not delete line 20, it deletes 20 lines.
    :20d deletes line 20.

    This command will replace the character 1 after the cursor with everything after the first keystroke:
    s///g .
    This command will perform a search and replace on the current line:
    This command will perform a search and replace on the entire document:

    For simplicity (when working with searches involving slashes) I use the modified syntax:

  3. Vanessa says:

    The ~, or tilde, will reverse case of your typed text. This also advances the cursor right by one space. If the character does not have a case, it will simply advance by one space. This has been remarkably useful time saver.

Leave a Reply

Your email address will not be published. Required fields are marked *