VI  "CHEAT" SHEET
ACNS BULLETIN ED-03
FEBRUARY 1995

                                
                                
                     VI EDITOR "CHEAT SHEET"


Invoking vi:

     vi  filename


Format of vi commands:

     [count][command]   (count repeats the effect of the command)



COMMAND MODE VERSUS INPUT MODE
------------------------------

Vi starts in command mode. The positioning commands
operate only while vi is in command mode. You switch
vi to input mode by entering any one of several vi
input commands. (See next section.) Once in input
mode, any character you type is taken to be text and
is added to the file. You cannot execute any
commands until you exit input mode. To exit input
mode, press the escape (Esc) key.



INPUT COMMANDS (END WITH ESC)
-----------------------------

a         Append after cursor
i         Insert before cursor
o         Open line below
O         Open line above
:r file   Insert file  after current line

Any of these commands leaves vi in input mode until
you press Esc. Pressing the RETURN key will not take
you out of input mode.



CHANGE COMMANDS (INPUT MODE)
----------------------------

cw   Change word (Esc)
cc   Change line (Esc) - blanks line
c$   Change to end of line
rc   Replace character with c
R    Replace (Esc) - typeover
s     Substitute (Esc) - 1 char with string
S    Substitute (Esc) - Rest of line with text
.    Repeat last change



CHANGES DURING INSERT MODE
--------------------------

h   Back one character
w   Back one word
u   Back to beginning of insert



FILE MANAGEMENT COMMANDS
------------------------

:w name   Write edit buffer to file name
:wq       Write to file and quit
:q!       Quit without saving changes
ZZ        Same as :wq
:sh       Execute shell commands (d)



WINDOW MOTIONS
--------------

d   Scroll down  (half a screen)
u   Scroll up  (half a screen)
f   Page forward
b   Page backward
/string   Search forward
?string   Search backward
l   Redraw screen
g   Display current line number and file information
n         Repeat search
N         Repeat search reverse
G         Go to last line
nG        Go to line n
:n        Go to line n
z     Reposition window: cursor at top
z.        Reposition window: cursor in middle
z-         Reposition window: cursor at bottom



CURSOR MOTIONS
--------------

H    Upper left corner (home)
M    Middle line
L    Lower left corner
h    Back a character
j    Down a line
k    Up a line
^    Beginning of line
$    End of line
l    Forward a character
w     One word forward
b    Back one word
fc   Find c
;    Repeat find (find next c)



DELETION COMMANDS
-----------------

dd  or ndd     Delete n lines to general buffer
dw             Delete word to general buffer
dnw            Delete n words
d)             Delete to end of sentence
db             Delete previous word
D              Delete to end of line
x               Delete character



RECOVERING DELETIONS
--------------------

p    Put general buffer after cursor
P    Put general buffer before cursor



UNDO COMMANDS
-------------

u          Undo last change
U         Undo all changes on line



REARRANGEMENT COMMANDS
----------------------

yy or Y     Yank (copy) line to general buffer
"z6yy     Yank 6 lines to buffer z
yw          Yank word to general buffer
"a9dd     Delete 9 lines to buffer a
"A9dd     Delete 9 lines; Append to buffer a
"ap       Put text from buffer a  after cursor
p         Put general buffer after cursor
P         Put general buffer before cursor
J         Join lines



PARAMETERS
----------

:set list           Show invisible characters
:set nolist         Don't show invisible characters
:set number         Show line numbers
:set nonumber       Don't show line numbers
:set autoindent     Indent after carriage return
:set noautoindent   Turn off autoindent
:set showmatch      Show matching sets of parentheses as they are typed
:set noshowmatch    Turn off showmatch
:set showmode       Display mode on last line of screen
:set noshowmode     Turn off showmode
:set all            Show values of all possible parameters



MOVE TEXT FROM FILE OLD TO FILE NEW
-----------------------------------

vi old
"a10yy         yank 10 lines to buffer a
:w             write work buffer
:e new         edit new file
"ap            put text from a after cursor
:30,60w new    Write lines 30 to 60 in file new



REGULAR EXPRESSIONS (SEARCH STRINGS)
------------------------------------

^    Matches beginning of line
$    Matches end of line
.    Matches any single character
*    Matches any previous character
.*   Matches any character



SEARCH AND REPLACE COMMANDS
---------------------------

Syntax:

     :[address]s/old_text/new_text/


Address components:

     .                   Current line
     n                   Line number n
     .+m                 Current line plus m lines
     $                   Last line
     /string/            A line that contains "string"
     %                   Entire file
     [addr1],[addr2]     Specifies a range


Examples:

The following example replaces only the first
occurrence of Banana with Kumquat in each of 11
lines starting with the current line (.) and
continuing for the 10 that follow (.+10).

     :.,.+10s/Banana/Kumquat


The following example replaces every occurrence
(caused by the g at the end of the command) of apple
with pear.

     :%s/apple/pear/g


The following example removes the last character
from every line in the file. Use it if every line in
the file ends with ^M as the result of a file
transfer. Execute it when the cursor is on the first
line of the file.

     :%s/.$//



 

Contact ACNS
Directories | Disclaimer | Equal Opportunity
Academic Computing and Networking Services
Colorado State University, Fort Collins, CO 80523, (970) 491-5133

© Copyright Colorado State University, 1999.
Last updated: Tuesday, 19-Oct-1999 17:39:40 MDT