Tool-BarfreeBSD ArticlesSearch Our SiteHOMEfreeBSD LinksContribute to FreeBSD HelpFreeBSD FilesFreeBSD Script Corner

Learn how to use "vi" editor with FreeBSD

Advanced editing using vi
This file gives a more detailed description of the vi command set.


To leave the Insert mode, press 'Esc'
a        Append after cursor
A        Append after end of current line
i        Insert before cursor
I        Insert before beginning of current line
o        Open new line below current line and insert
O        Open new line above current line and insert
CTRL-vchar   While inserting, ignore special meaning of char
        (e.g., for inserting characters like Esc and control
:r file     Read file, and insert after current line
J        Join next line to end of current line


CTRL-h or
Backspace    While in Input Mode delete previous character

Typing a number before these commands will delete that amount of characters,
  words, or lines.
x        Deletes current character
dw       Delete current word
dd       Deletes current line

:n,md      Deletes lines n through m
D or d$     Delete from cursor to end of current line
dcursor_cmd   Delete text to cursor to cursor_cmd(e.g.,dG deletes from
        current line to end of file)


u        Undo last command
U        Restore current line to original state
"np       Retrieve last nth delete(last 9 deletes are in a buffer)"
n        Repeat last / or ? search command
N        Repeat, in reverse direction, last / or ? search command
; (semi-colon) Repeat last f, F, t or T search command
, (comma)    Repeat, in reverse direction, last f, F, t or T search
. (period)   Repeat last text change command


k or CTRL-p   Up
j or CTRL-j or
CTRL-n     Down
h or CTRL-h  
or Backspace  Left
l (lower case L)
or Spacebar   Right
w or W     Start of next word; W ignores punctuation
b or B     Start of previous word; B ignores punctuation
e or E     End of next word; E ignores punctuation
0 (zero)
or | (pipe)   First column in current line
n|       Column n in current line
^ (caret)    First non-blank character in current line
$        Last character in current line
+ or Return   First character in next line
-        First non-blank character in previous line
1G       First line in file
G        Last line in file
G$       Last character in file
nG       Line n in file
(        Back to beginning of sentence
)        Forward to beginning of next sentence
\{        Back to beginning of paragraph
\}        Forward to beginning of next paragraph


Pattern matching characters help find strings with similar char-

:set magic   Allow pattern matching with special characters
:set nomagic  Allow only ^ and $ as special characters
^ (caret)    Match beginning of line
$        Match end of line
. (period)   Match any single character
\<       Match beginning of word
\>       Match end of word
[str]      Match any single character in str
[^str]     Match any character not in str
[a-n]      Match any character between a and n
*        Match zero or more occurrences of previous character
        in expression
\        Escape meaning of next character(e.g. \$ lets you
        search for $)
\\       Escape the \ character


ZZ or :wq or
:x       Save file and exit vi
:w file     Save file but do not exit. Omitting file saves current
:w! file    Save file overriding normal checking
:n,mw file   Write lines n through m to file
:n,mw>>file   Append lines n through m to end of file
:q       Leave vi, saving changes before last write
        (you may be prompted to save first)
:q!       Leave vi without saving any changes since last write
Q        Escape vi into ex editor with same file; :vi returns
:e!       File-edit current file, disregarding changes since last


f<char>     Search forward in current line to <char>
F<char>     Search backwards in curretn line to <char>
/<string>    Find next occurence of <string>
?<string>    Find previous occurence of <string>
:set ic     Ingnore case while searching
:set noic    Case sensitive while searching (default)


:n,m s/<str1>/<str2>/<opt>   Search from n to m for <str1> and replace
                it with <str2> with option <opt>. 
                <opt> can be c - confirm changes
                       g - global replace
                       p - to print changed lines
(Ex- :1,$ s/foo/bar/g     Replaces every occurence of "foo" with the
                string "bar".) 

:g/<str>/<cmd>         Run <cmd> on all lines that contain <str>
:g/<str1>/s/<str2>/<str3>/   Find line containing <str1>, replace <str2>
                with <str3>
:v/<str>/<cmd>         Execute <cmd> on all lines that do not
                match <str>  


( These commands may be preceded by a number to multiply commands )
yy or Y    Yank current line into the buffer ( copy )
nyy or nY   Yank n amount of line into buffer
p       Insert line(s) in buffer after cursor; also prints
       last deleted text
P       Insert line(s) in buffer before cursor


:set all     Displays all options you may "set"
:set showmode  Displays "INPUT MODE" while in input mode
:set tabstop=n  Sets the tabwidth of the tab key to n spaces;
         8 is default, but 4 may be preferable
:set list    Displays all control characters in document;
         end of lines are shown as '$'  

© 1997 - 20013 Defcon1, , Copyrights for all materials on this web site are held by the individual authors, artists, photographers or creators. Materials may not be reproduced or otherwise distributed without permission of and the content's original author.

Tool-Bar-2Defcon1  Webmail