%vi + name … at end
%vi -r list saved files
%vi -r name recover file name
%vi name … edit first;rest via :n
%vi -t tag start at tag
%vi +/pat name search for pat
% view name read only mode
ZZ save and exit from vi
CTRL-Z stop vi, don’t exit
File Manipulation
––––––
:w write back changes
:wq write and quit
:q quit
:q! quit, discard changes
:e name edit file name
:e! reedit discard changes
:e + name edit starting at end
:e +n name edit starting at line n
:e # edit alternate file
CTRl-^ synonym for :e #
:r(name) paste file name starting at current position.
:w(name) write file name
:w! name overwrite file name
:sh run shell, then return
:!cmd run cmd, then return
:n edit next file in arglist
:n args specify new arglist
:f show current file and line.
CTRL-G synonym for :f
:ta tag to tag file entry tag
CTRL-] :ta, following word tag
The Display
––––
Last line Error mesg, echoing input to :/? and !, feedback about i/o and large changes
@ lines On screen only, not in file
~lines Lines past end of file
CTRL-x Control characters, DEL is delete.
tabs Expand to spaces, cursor at last.
Vi Modes
–––
Command Normal and initial state. Others return here. Esc (escape) cancels partial command.
Insert Entered by a i A I O o c C s S R. Arbitrary test then terminates with ESC character, or abnormally with interrupt
Last line Reading input for :/? or !; terminate with ESC or CR to execute. interrupt to
m cancel.
Positioning within File
––––––––
CTRL-F forward screenfull
CTRL-B backward screenfull
CTRL-D scroll down half screen
CTRL-U scroll up half screen
G goto line (end default)
/pattern next line matching pattern
?pattern prev line matching pattern
n repeat last / or ?
N reverse last / or ?
/pat/+n n’th line after pat
?pat?-n n’th line befor pat
]] next section/function
[[ previous section/function
% find matching () { or }