# Appendix C. Setting Options

#### Contents:

Solaris 2.6 vi Options
nvi 1.79 Options
elvis 2.0 Options
vim 5.1 Options
vile 8.0 Options

This appendix describes the important `set` command options for Solaris 2.6 vi, nvi 1.79, elvis 2.0, vim 5.1, and vile 8.0.

## C.1. Solaris 2.6 vi Options

Table C.1 contains brief descriptions of the important `set` command options. In the first column, options are listed in alphabetical order; if the option can be abbreviated, that abbreviation is shown in parentheses. The second column shows the default setting that vi uses unless you issue an explicit `set` command (either manually or in the .exrc file). The last column describes what the option does, when enabled.

#### Table C.1. Solaris 2.6 vi Set Options

Option | Default | Description
--- | --- | ---
`autoindent (ai)` | `noai` | In insert mode, indents each line to the same level as the line above or below. Use with the `shiftwidth` option.
`autoprint (ap)` | `ap` | Displays changes after each editor command. (For global replacement, displays last replacement.)
`autowrite (aw)` | `noaw` | Automatically writes (saves) the file if changed before opening another file with `:n` or before giving UNIX command with `:!`.
`beautify (bf)` | `nobf` | Ignores all control characters during input (except tab, newline, or formfeed).
`directory (dir)` | /tmp | Names directory in which ex/vi stores buffer files. (Directory must be writable.)
`edcompatible` | `noedcompatible` | Remember the flags used with the most recent substitute command (global, confirming), and use them for the next substitute command. Despite the name, no actual version of ed actually behaved this way.
`errorbells (eb)` | `errorbells` | Sounds bell when an error occurs.
`exrc (ex)` | `noexrc` | Allows the execution of .exrc files that reside outside the user's home directory.
`hardtabs (ht)` | `8` | Defines boundaries for terminal hardware tabs.
`ignorecase (ic)` | `noic` | Disregards case during a search.
`lisp` | `nolisp` | Inserts indents in appropriate lisp format. `( )`, `{ }`, `[[`, and `]]` are modified to have meaning for lisp.
`list` | `nolist` | Prints tabs as `^I`; marks ends of lines with `$`. (Use `list` to tell if end character is a tab or a space.)
`magic` | `magic` | Wildcard characters `.` (dot), `*` (asterisk), and `[]` (brackets) have special meaning in patterns.
`mesg` | `mesg` | Permits system messages to display on terminal while editing in vi.
`novice` | `nonovice` | Requires the use of long ex command names, such as `copy` or `read`.
`number (nu)` | `nonu` | Displays line numbers on left of screen during editing session.
`open` | `open` | Allows entry to open or visual mode from ex. Although not in Solaris 2.6 vi, this option has traditionally been in vi, and may be in your UNIX's version of vi.
`optimize (opt)` | `noopt` | Abolishes carriage returns at the end of lines when printing multiple lines, speeds output on dumb terminals when printing lines with leading whitespace (spaces or tabs).
`paragraphs (para)` | `IPLPPPQP LIpplpipbp` | Defines paragraph delimiters for movement by `{` or `}`. The pairs of characters in the value are the names of troff macros that begin paragraphs.
`prompt` | `prompt` | Displays the ex prompt (:) when vi's `Q` command is given.
`readonly (ro)` | `noro` | Any writes (saves) of a file will fail unless you use `!` after the write (works with `w`, `ZZ`, or `autowrite`).
`redraw (re)` | `` | vi redraws the screen whenever edits are made (in other words, insert mode pushes over existing characters, and deleted lines immediately close up). Default depends on line speed and terminal type. `noredraw` is useful at slow speeds on a dumb terminal: deleted lines show up as @, and inserted text appears to overwrite existing text until you press ESC.
`remap` | `remap` | Allows nested map sequences.
`report` | `5` | Displays a message on the status line whenever you make an edit that affects at least a certain number of lines. For example, `6dd` reports the message "6 lines deleted."
`scroll` | `[` window] | Number of lines to scroll with `^D` and `^U` commands.
`sections (sect)` | `SHNHH HU` | Defines section delimiters for `[[` and `]]` movement. The pairs of characters in the value are the names of troff macros that begin sections.
`shell (sh)` | /bin/sh | Pathname of shell used for shell escape (`:!`) and shell command (`:sh`). Default value is derived from shell environment, which varies on different systems.
`shiftwidth (sw)` | `8` | Defines number of spaces in backward (`^D`) tabs when using the `autoindent` option, and for the `<<` and `>>` commands.
`showmatch (sm)` | `nosm` | In vi, when `)` or `}` is entered, cursor moves briefly to matching `(` or `{`. (If no match, rings the error message bell.) Very useful for programming.
`showmode` | `noshowmode` | In insert mode, displays a message on the prompt line indicating the type of insert you are making. For example, "OPEN MODE," or "APPEND MODE."
`slowopen (slow)` | `` | Holds off display during insert. Default depends on line speed and terminal type.
`tabstop (ts)` | `8` | Defines number of spaces that a TAB indents during editing session. (Printer still uses system tab of 8.)
`taglength (tl)` | `0` | Defines number of characters that are significant for tags. Default (zero) means that all characters are significant.
`tags` | tags /usr/lib/tags | Defines pathname of files containing tags. (See the UNIX `ctags` command.) (By default, vi searches the file tags in the current directory and /usr/lib/tags.)
`tagstack` | `tagstack` | Enables stacking of tag locations on a stack.
`term` | `` | Sets terminal type.
`terse` | `noterse` | Displays shorter error messages.
`timeout (to)` | `timeout` | Keyboard maps time out after 1 second.[64]
`ttytype` | `` | Sets terminal type. This is just another name for `term`.
`warn` | `warn` | Displays the warning message, "No write since last change."
`window (w)` | `` | Shows a certain number of lines of the file on the screen. Default depends on line speed and terminal type.
`wrapscan (ws)` | `ws` | Searches wrap around either end of file.
`wrapmargin (wm)` | `0` | Defines right margin. If greater than zero, automatically inserts carriage returns to break lines.
| `writeany (wa)` | `nowa` | Allows saving to any file.

[64] When you have mappings of several keys (for example, `:map zzz 3dw`), you probably want to use `notimeout`. Otherwise you need to type `zzz` within 1 second. When you have an insert mode mapping for a cursor key (for example, `:map! ^[OB ^[ja`), you should use `timeout`. Otherwise, vi won't react to ESC until you type another key.

Copyright © 2003 O'Reilly & Associates. All rights reserved.