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

Beginners guide to vi editor

  To edit a file                 vi [ filename ]
  To recover an editing session    vi -r [ filename ]

Notes on vi commands and modal editing

All vi commands are entered in command mode. To enter command mode, press the ESC key. Some vi commands cause vi to enter another mode. For example,
the i (insert command) causes vi to enter insert mode after which all keystrokes are inserted as text. To return to command mode from insert mode, press the ESC
key. The :set showmode command will cause vi to display the current editing mode in the lower right corner of the editing screen.

Controlling The Screen Display of Your Session

  Repaint the current screen      {ctrl-l}
  Display line #, # of lines, etc..   {ctrl-g}

Moving the Cursor

  Beginning of current line        0 or ^
  Beginning of first screen line     H
  Beginning of last screen line      L
  Beginning of middle screen line   M
  Down one line                j, {return}, +
  End of current line             $
  Left one character             h, {ctrl-h}
  Left to beggining of word       b, B
  Right one character            l, {space}
  Right to end of word           e, E
  Right to beginning of word      w, W
  Up one line                  k, -
  Beginning of next sentence       )
  Beginning of previous sentence   (

Paging Through Text

  Back one screen             {ctrl-b}
  Down half a screen           {ctrl-d}
  Down one screen             {ctrl-f}
  Forware to end of file          G
  Move cursor to specified line    line no. G
  Up half a screen              {ctrl-j}

Special Pattern Characters

  Beginning of line                     ^
  End of line                          $
  Any character except newline            .
  Any number of the preceding character    *
  Any set of characters (except newline)    .*

Searching Through Text

  Backward for pattern                  ?pattern
  Forward for pattern                   /pattern
  Repeat previous search                 n
  Reverse direction of previous search       N

  Show *all* lines containing pattern        :beg,endg/pattern/p
  :1,$g/compiler/p Will print all lines with the pattern compiler.

  Substitute patt2 for all patt1 found.        :beg,ends/patt1/patt2/g
  :%s/notfound/found/g Will change all occurences of notfound to found.

Creating Text

  Append text after cursor                a
  Append text after end of line             A
  Insert text before cursor                 i
  Insert text at beginning of line             I
  Open new line after current line           o
  Open new line before current line         O
Modifying Text

  Change current word                   cw, cW
  Change current line (cursor to end)        C
  Delete character (cursor forward)         x
  Delete character (before cursor)          X
  Delete word                         dw, dW
  Delete line                          dd
  Delete text to end of line                D
  Duplicate text                        (use yank and put)
  Join current line with next line            J
  Move text                          (use delete and put)
  Put buffer text after/below cursor         p
  Put buffer text before/above cursor        P
  Repeat last modification command        .
  Replace current character               r
  Replace text to end of line              R
  Substitute text for character             s
  Undo your previous command           u
  Transpose characters                  xp
  Yank (copy) word into buffer           yw
  Yank (copy) current line into buffer       Y

Making Corrections During Text Insertions

  Overwrite last character               {delete}
  Overwrite last word                  {ctrl-w}

Ending Your Editing Sessions

  Quit (no changes made)               :q
  Quit and save changes                ZZ, :wq
  Quit and discard changes              :q!

Using ex Commands From Within vi

  Copy specified lines                  :co, t
  Display line numbers                  :set nu
  Disable display of line numbers          :set nonu
  Move lines after specified line           :m
  Read file in after specified line           :r filename
  Review current editor options           :set
  Review editor options                :set all
  Set new editor option                :set option
  Write changes to original file           :w
  Write to specified file                 :w filename
  Force write to a file                  :w! filename


© 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