URL:         http://www.math.fu-berlin.de/~guckes/vi/options.html
Created:     Tue Jun  4 00:00:00 MET  1996
Last update: Wed Oct 16 18:28:32 CEST 1996

Vi - Options

VI Versions

So far the comparions is about these versions:
VI "Version SVR3.1"
I am still not sure whether the manual here applies to that version. So a lot of options are listed as "???" in the table below. (Gotta check this still...)

VIM 4.0
I think the number of options set a new record for vi clones. :-)

VILE 5.6
The options are taken from the manual. I hope it lists all of them.

Vi Options

This table gives you an overlook about the available option in some vi clones. Please let me know about changes!

Option abbr VI VIM VILE ALL!
aleph al ??? VIM ----
alt-tabpos atp --- --- VILE
animated --- --- --- VILE
autobuffer ab --- --- VILE
autoindent ai VI VIM VILE *
autoprint ??? VI --- ----
autowrite aw --- VIM VILE
autosave as --- --- VILE
autosavecnt ascnt --- --- VILE
backspace bs ??? VIM ----
backspacelimit bl --- --- VILE
backup bk ??? VIM ----
backupdir bdir ??? VIM ----
backupext bex ??? VIM ----
bcolor --- --- --- VILE
backupstyle --- --- --- VILE
beautify ??? VI --- ----
binary bin ??? VIM ----
bioskey bk ??? VIM ----
breakat brk ??? VIM ----
check-modtime --- --- --- VILE
cindent cin ??? VIM ----
cinkeys cink ??? VIM ----
cinoptions cino ??? VIM ----
cinwords cinw ??? VIM ----
cmdheight ch ??? VIM ----
cmode --- --- --- VILE
columns co ??? VIM ----
comments com --- VIM VILE
compatible cp ??? VIM ----
cpoptions cpo ??? VIM ----
crypt --- --- --- VILE
c-shiftwidth csw --- --- VILE
c-suffixes csuf --- --- VILE
c-tabstop cts --- --- VILE
define def ??? VIM ----
dictionary dict ??? VIM ----
digraph dg ??? VIM ----
dirc --- --- --- VILE
directory dir VI VIM ----
dos --- --- --- VILE
edcompatible ed VI VIM ----
endofline eol ??? VIM ----
equalalways ea ??? VIM ----
equalprg ep ??? VIM ----
errorbells eb VI VIM VILE *
errorfile ef ??? VIM ----
errorformat efm ??? VIM ----
esckeys ek ??? VIM ----
expand-chars --- --- --- VILE
expand-path --- --- --- VILE
expandtab et ??? VIM ----
exrc ~ ??? VIM ----
fcolor --- --- --- VILE
fence-pairs --- --- --- VILE
flash --- VI --- VILE
fillcol fc --- --- VILE
formatoptions fo ??? VIM ----
formatprg fp ??? VIM ----
gdefault gd ??? VIM ----
glob --- --- --- VILE
guifont gfn ??? VIM ----
guioptions go ??? VIM ----
guipty ~ ??? VIM ----
hardtabs ??? VI --- ----
helpfile hf ??? VIM ----
helpheight hh ??? VIM ----
hidden hid ??? VIM ----
highlight hl ??? VIM ----
history hi --- VIM VILE
horizscroll --- --- --- VILE
hkmap hk ??? VIM ----
icon ~ ??? VIM ----
ignorecase ic VI VIM VILE *
implybuffer ib --- --- VILE
include inc ??? VIM ----
incsearch is ??? VIM ----
infercase inf ??? VIM ----
insertmode im ??? VIM ----
isfname isf ??? VIM ----
isident isi ??? VIM ----
isprint isp ??? VIM ----
iskeyword isk ??? VIM ----
joinspaces js ??? VIM ----
keywordprg kp ??? VIM ----
langmap lmap ??? VIM ----
laststatus ls ??? VIM ----
linebreak lbr ??? VIM ----
lines ~ ??? VIM ----
linewrap lw --- --- VILE
lisp ~ VI VIM ----
list ~ --- VIM VILE
magic ~ VI VIM VILE *
makeprg mp ??? VIM ----
maplonger --- --- --- VILE
maxmapdepth mmd ??? VIM ----
maxmem mm ??? VIM ----
maxmemtot mmt ??? VIM ----
mesg ??? VI --- ----
meta-insert-bindings mib --- --- VILE
modeline ml VI VIM ----
modelines mls ??? VIM ----
modified mod ??? VIM ----
more ~ ??? VIM ----
mouse ~ ??? VIM ----
mousetime mouset ??? VIM ----
multibeep --- --- --- VILE
newline nl --- --- VILE
novice ??? VI --- ----
number nu VI VIM VILE *
optimize ??? VI --- ----
paragraphs para VI VIM VILE
paste ~ ??? VIM ----
patchmode pm ??? VIM ----
path pa ??? VIM ----
popup-choices pc --- --- VILE
popup-msgs pm --- --- VILE
printing-high --- --- --- VILE
printing-low --- --- --- VILE
prompt ??? VI --- ----
readonly ro VI VIM ----
redraw ??? VI --- ----
remap ~ VI VIM VILE *
remapfirst --- --- --- VILE
report ~ VI VIM VILE *
restorescreen rs ??? VIM ----
resolve-links --- --- --- VILE
revins ri ??? VIM ----
rightleft rl ??? VIM ----
ruler ru ??? VIM VILE
samebangs sb --- --- VILE
scroll scr VI VIM ----
scrolljump sj ??? VIM ----
scrolloff so ??? VIM ----
sections sect VI VIM VILE *
secure ~ ??? VIM ----
shell sh VI VIM ----
shellpipe sp ??? VIM ----
shellredir srr ??? VIM ----
shelltype st ??? VIM ----
shiftround sr ??? VIM ----
shiftwidth sw VI VIM VILE *
shortmess shm ??? VIM ----
shortname sn ??? VIM ----
showbreak sbr ??? VIM ----
showcmd sc ??? VIM ----
showmatch sm VI VIM VILE *
showmode smd VI VIM VILE *
showram sr --- --- VILE
sideways --- --- --- VILE
sidescroll ss ??? VIM ----
slowopen ??? VI --- ----
smartcase scs ??? VIM ----
smartindent si ??? VIM ----
smarttab sta ??? VIM ----
smoothscroll ss --- --- VILE
sourceany ??? VI --- ----
splitbelow sb ??? VIM ----
startofline sol ??? VIM ----
suffixes su ??? VIM ----
swapsync sws ??? VIM ----
tabinsert ti --- --- VILE
tabstop ts VI VIM VILE *
taglength tl VI VIM VILE *
tagrelative tr ??? VIM VILE
tags tag VI VIM VILE *
tagstack ??? VI --- ----
term ~ VI VIM ----
terse ~ VI VIM VILE *
terse-selections tsel --- --- VILE
textauto ta ??? VIM ----
textmode tx ??? VIM ----
textwidth tw ??? VIM ----
tildeop top ??? VIM ----
timeout to VI VIM ----
ttimeout ~ ??? VIM ----
timeoutlen tm [1] ??? VIM VILE
timeoutlen-user --- --- --- VILE
ttimeoutlen ttm ??? VIM ----
title ~ ??? VIM ----
ttybuiltin tbi ??? VIM ----
ttyfast tf ??? VIM ----
ttyscroll tsl ??? VIM ----
ttytype tty VI VIM ----
undolevels ul ??? VIM ----
undolimit ul --- --- VILE
updatecount uc ??? VIM ----
updatetime ut ??? VIM ----
unprintable-as-octal uo --- --- VILE
view --- --- --- VILE
view-only-readonly --- --- --- VILE
viminfo vi ??? VIM ----
visual-matches --- --- --- VILE
visualbell vb ??? VIM ----
warn ~ VI VIM ----
warn-unread --- --- --- VILE
weirdinvert wi ??? VIM ----
whichwrap ww ??? VIM ----
wildchar wc ??? VIM ----
winheight wh ??? VIM ----
window ??? VI --- ----
working --- --- --- VILE
wrap ~ ??? VIM ----
wrapmargin wm VI VIM VILE *
wrapwords ww --- --- VILE
wrapscan ws VI VIM VILE *
writeany wa VI VIM ----
writebackup wb ??? VIM ----
writedelay wd ??? VIM ----
xterm-mouse --- --- --- VILE

[1]  Abbreviation "tm" not used by VILE.
XXX --- ??? --- VILE


The manual to VI sucks. ;-)

The manual to VILE does not tell you about the "type" of the options and the options are not strictly ordered alphabetically.

Both manuals to VIM and VILE tell you whether the options are "global" (VIM) = "universal" (VILE), ie apply to all windows and buffers, or whether they are "local to buffer" or "local to window".

VIM's options explained

Do you wonder what these options do?
Well, here is a list with short descriptions:
|'aleph'|	   |'al'|	ASCII code of the letter Aleph (RIGHTLEFT)
|'autoindent'|	   |'ai'|	take indent for new line from previous line
|'autowrite'|	   |'aw'|	automatically write file if changed
|'backspace'|	   |'bs'|	how backspace works at start of line
|'backup'|	   |'bk'|	keep backup file after overwriting a file
|'backupdir'|	   |'bdir'|	list of directories for the backup file
|'backupext'|	   |'bex'|	extension used for the backup file
|'binary'|	   |'bin'|	edit binary file mode
|'bioskey'|	   |'bk'|	MS-DOS: use bios calls for input characters
|'breakat'|	   |'brk'|	characters that may cause a line break
|'cindent'|	   |'cin'|	do C program indenting
|'cinkeys'|	   |'cink'|	keys that trigger indent when 'cindent' is set
|'cinoptions'|	   |'cino'|	how to do indenting when 'cindent' is set
|'cinwords'|	   |'cinw'|	words where 'si' and 'cin' add an indent
|'cmdheight'|	   |'ch'|	number of lines to use for the command-line
|'columns'|	   |'co'|	number of columns in the display
|'comments'|	   |'com'|	patterns that can start a comment line
|'compatible'|	   |'cp'|	behave vi-compatible as much as possible
|'cpoptions'|	   |'cpo'|	flags for vi-compatible behaviour
|'define'|	   |'def'|	pattern to be used to find a macro definition
|'dictionary'|	   |'dict'|	list of file names used for keyword completion
|'digraph'|	   |'dg'|	enable the entering of digraphs in Insert mode
|'directory'|	   |'dir'|	list of directory names for the swap file
|'edcompatible'|   |'ed'|	toggle flags of ":substitute" command
|'endofline'|	   |'eol'|	write end of line for last line in file
|'equalalways'|    |'ea'|	windows are automatically made the same size
|'equalprg'|	   |'ep'|	external program to use for "=" command
|'errorbells'|	   |'eb'|	ring the bell for error messages
|'errorfile'|	   |'ef'|	name of the error file for the QuickFix mode
|'errorformat'|    |'efm'|	description of the lines in the error file
|'esckeys'|	   |'ek'|	recognize function keys in insert mode
|'expandtab'|	   |'et'|	use spaces when  is inserted
|'exrc'|			read .vimrc and .exrc in the current directory
|'formatoptions'|  |'fo'|	how automatic formatting is to be done
|'formatprg'|	   |'fp'|	name of external program used with "Q" command
|'gdefault'|	   |'gd'|	the ":substitute" flag 'g' is default on
|'guifont'|	   |'gfn'|	GUI: Name(s) of font(s) to be used
|'guioptions'|	   |'go'|	GUI: Which components and options are used
|'guipty'|			GUI: try to use a pseudo-tty for :! commands
|'helpfile'|	   |'hf'|	name of this help file
|'helpheight'|	   |'hh'|	minimal height of a new help window
|'hidden'|	   |'hid'|	don't unload buffer when it is abondoned
|'highlight'|	   |'hl'|	sets highlighting mode for various occasions
|'history'|	   |'hi'|	number of command-lines that are remembered
|'hkmap'|	   |'hk'|	Hebrew keyboard mapping (RIGHTLEFT)
|'icon'|			set icon of the window to the name of the file
|'ignorecase'|	   |'ic'|	ignore case in search patterns
|'include'|	   |'inc'|	pattern to be used to find an include file
|'incsearch'|	   |'is'|	highlight match while typing search pattern
|'infercase'|	   |'inf'|	adjust case of match for keyword completion
|'insertmode'|	   |'im'|	start the edit of a file in Insert mode
|'isfname'|	   |'isf'|	characters included in file and path names
|'isident'|	   |'isi'|	characters included in identifiers
|'isprint'|	   |'isp'|	printable characters
|'iskeyword'|	   |'isk'|	characters included in keywords
|'joinspaces'|	   |'js'|	two spaces after a period with a join command
|'keywordprg'|	   |'kp'|	program to use for the "K" command
|'langmap'|	   |'lmap'|	alphabetic characters for other language mode
|'laststatus'|	   |'ls'|	tells when last window has status lines
|'linebreak'|	   |'lbr'|	wrap long lines at a blank
|'lines'|			number of lines in the display
|'lisp'|			automatic indenting for lisp
|'list'|			show  and end-of-line
|'magic'|			changes special characters in search patterns
|'makeprg'|	   |'mp'|	program to use for the ":make" command
|'maxmapdepth'|    |'mmd'|	maximum recursive depth for mapping
|'maxmem'|	   |'mm'|	maximum memory (in Kbyte) used for one buffer
|'maxmemtot'|	   |'mmt'|	maximum memory (in Kbyte) used for all buffers
|'modeline'|	   |'ml'|	recognize modelines at start or end of file
|'modelines'|	   |'mls'|	number of lines checked for modelines
|'modified'|	   |'mod'|	buffer has been modified
|'more'|			pause listings when the whole screen is filled
|'mouse'|			enable the use of mouse clicks
|'mousetime'|	   |'mouset'|	max time between mouse double click
|'number'|	   |'nu'|	print the line number in front of each line
|'paragraphs'|	   |'para'|	nroff macros that separate paragraphs
|'paste'|			allow pasting text
|'patchmode'|	   |'pm'|	UNIX: keep the oldest version of a file
|'path'|	   |'pa'|	list of directories searched with "gf" et.al.
|'readonly'|	   |'ro'|	disallow writing the buffer
|'remap'|			allow mappings to work recursively
|'report'|			threshold for reporting nr. of lines changed
|'restorescreen'|  |'rs'|	WIN32: restore screen when exiting
|'revins'|	   |'ri'|	inserting characters will work backwards
|'rightleft'|	   |'rl'|	window is right-to-left oriented (RIGHTLEFT)
|'ruler'|	   |'ru'|	show cursor line and column in the status line
|'scroll'|	   |'scr'|	lines to scroll with CTRL-U and CTRL-D
|'scrolljump'|	   |'sj'|	minimal number of lines to scroll
|'scrolloff'|	   |'so'|	minimal nr. of lines above and below cursor
|'sections'|	   |'sect'|	nroff macros that separate sections
|'secure'|			secure mode for reading .vimrc in current dir
|'shell'|	   |'sh'|	name of shell to use for external commands
|'shellpipe'|	   |'sp'|	string to put output of ":make" in error file
|'shellredir'|	   |'srr'|	string to put output of filter in a temp file
|'shelltype'|	   |'st'|	Amiga: influences how to use a shell
|'shiftround'|	   |'sr'|	round indent to multiple of shiftwidth
|'shiftwidth'|	   |'sw'|	number of spaces to use for (auto)indent step
|'shortmess'|	   |'shm'|	list of flags, reduce length of messages
|'shortname'|	   |'sn'|	non-MS-DOS: File names assumed to be 8+3 chars
|'showbreak'|	   |'sbr'|	string to use at the start of wrapped lines
|'showcmd'|	   |'sc'|	show (partial) command in status line
|'showmatch'|	   |'sm'|	briefly jump to matching bracket if insert one
|'showmode'|	   |'smd'|	message on status line to show current mode
|'sidescroll'|	   |'ss'|	minimal number of columns to scroll horizontal
|'smartcase'|	   |'scs'|	no ignore case when pattern has upper case
|'smartindent'|    |'si'|	smart autoindenting for C programs
|'smarttab'|	   |'sta'|	use 'shitfwidth' when inserting 
|'splitbelow'|	   |'sb'|	new window from split is below the current one
|'startofline'|    |'sol'|	commands move cursor to first blank in line
|'suffixes'|	   |'su'|	suffixes that are ignored with multiple match
|'swapsync'|	   |'sws'|	how to sync swap file
|'tabstop'|	   |'ts'|	number of spaces that  in file uses
|'taglength'|	   |'tl'|	number of significant characters for a tag
|'tagrelative'|    |'tr'|	file names in tag file are relative
|'tags'|	   |'tag'|	list of file names used by the tag command
|'term'|			name of the terminal
|'terse'|			shorten some messages
|'textauto'|	   |'ta'|	set 'textmode' automatically when reading file
|'textmode'|	   |'tx'|	lines are separated by 
|'textwidth'|	   |'tw'|	maximum width of text that is being inserted
|'tildeop'|	   |'top'|	tilde command "~" behaves like an operator
|'timeout'|	   |'to'|	time out on mappings and key codes
|'ttimeout'|			time out on mappings
|'timeoutlen'|	   |'tm'|	time out time in milliseconds
|'ttimeoutlen'|	   |'ttm'|	time out time for key codes in milliseconds
|'title'|			set title of window to the name of the file
|'ttybuiltin'|	   |'tbi'|	use builtin termcap before external termcap
|'ttyfast'|	   |'tf'|	indicates a fast terminal connection
|'ttyscroll'|	   |'tsl'|	maximum number of lines for a scroll
|'ttytype'|	   |'tty'|	alias for 'term'
|'undolevels'|	   |'ul'|	maximum number of changes that can be undone
|'updatecount'|    |'uc'|	after this many characters flush swap file
|'updatetime'|	   |'ut'|	after this many milliseconds flush swap file
|'viminfo'|	   |'vi'|	use .viminfo file upon startup and exiting
|'visualbell'|	   |'vb'|	use visual bell instead of beeping
|'warn'|			warn for shell command when buffer was changed
|'weirdinvert'|    |'wi'|	for terminals that have weird inversion method
|'whichwrap'|	   |'ww'|	allow specified keys to cross line boundaries
|'wildchar'|	   |'wc'|	command-line character for wildcard expansion
|'winheight'|	   |'wh'|	minimal number of lines for the current window
|'wrap'|			long lines wrap and continue on the next line
|'wrapmargin'|	   |'wm'|	chars from the right where wrapping starts
|'wrapscan'|	   |'ws'|	searches wrap around the end of the file
|'writeany'|	   |'wa'|	write to file with no need for "!" override
|'writebackup'|    |'wb'|	make a backup before overwriting a file
|'writedelay'|	   |'wd'|	delay this many msec for each char (for debug)

Small comparison

VIM: Powerful, comes very close to standard Vi with ":set compatible".
Buffer handling . Easy .
Text formatting . Good (builtin and external)
Code formatting . Excellent cindent mode .
Modes [2] . visual visual [1] .
Modal distinction for :map and :ab no visual [1] .
Conditionals . None .
Syntax highlighting . None .
External language hooks . None .
[2] Modes: "visual" means that you can define a selection "visually", ie it uses highlighting to show text. Operators then can work on selected text.

"Modal distinction for :map and :ab"
Allows definition of mappings and abbreviations for each mode (insert, command, command line, visual).

Send feedback on this page to
Sven Guckes guckes@math.fu-berlin.de