VI (for "visual editor") is a text editor for "plain text".
It is the standard-editor on most Unix-systems.

The current versions have almost everything you can expect from an editor: scripting, macro-recording, syntax-coloring, UTF-8, Unicode, GUI etc.

However, the basic concept is quite old, e.g. it also has an ex-mode that was designed to work with old teletype-devices.

There are several variants:

  • BusyBox - includes a tiny vi clone
  • Elvis
  • nvi - "new vi"
  • vile - "VI Like Emacs"
  • vim - "vi-improved" VIM current version: Vim 7.4.507


Command-Summary

Usage: vi file.txt

There is a "normal" mode that acts as command-mode, and an insert-mode:

i      - insert text at cursor-position
a      - append text at end-of-line
ESC    - abort command, i.e. end insert-mode, and return to normal/commandmode.

hjkl   - move cursor: left/down/up/right  (use with count: "5k" move 5 lines up )
         Cursor-keys should work as well
/abc   - find text "abc"
n      - find next match

x      - delete char   ( use with count: "5x" deletes 5 char )
dd     - delete line   ( dito: "2dd" deletes 2 lines )
p      - paste: insert previously deleted text at current position
u      - undo
.      - repeat last change-command

: is the prefix for commands:

:help        - show help-pages
:set ruler   - toggle display of current line-number in status-line

:33          - move to line 33
G            - Goto last line     ( "33G" goto line 33 )

:r file2.txt - read: insert contents of file2.txt at current position

:w           - write current file ( :w! to force it )
:q           - quit               ( :q! to force it.  Combined: ":wq!" )