elvis, ex, vi, view, input - The editor


elvis [flags] [+cmd] [files...]


Elvis is a text editor which emulates vi/ex.

On systems which pass the program name as an argument, such as Unix and Minix, you may also install elvis under the names "ex", "vi", "view", and "input". These extra names would normally be links to elvis; see the "ln" shell command.

When elvis is invoked as "vi", it behaves exactly as though it was invoked as "elvis". However, if you invoke elvis as "view", then the readonly option is set as though you had given it the "-R" flag. If you invoke elvis as "ex", then elvis will start up in the colon command mode instead of the visual command mode, as though you had given it the "-e" flag. If you invoke elvis as "input" or "edit", then elvis will start up in input mode, as though the "-i" flag was given.


To the real vi, this flag means that a previous edit should be recovered. Elvis, though, has a separate program, called elvrec(1), for recovering files. When you invoke elvis with -r, elvis will tell you to run elvrec.

This sets the "readonly" option, so you won't accidentally overwrite a file.

This set the "safer" option, which disables many potentially harmful commands. It has not been rigorously proven to be absolutely secure, however.

-t tag
This causes elvis to start editing at the given tag.

-m [file]
Elvis will search through file for something that looks like an error message from a compiler. It will then begin editing the source file that caused the error, with the cursor sitting on the line where the error was detected. If you don't explicitly name a file, then "errlist" is assumed.

Elvis will start up in colon command mode.

Elvis will start up in visual command mode.

Elvis will start up in input mode.

-w winsize
Sets the "window" option's value to winsize.

+command or -c command
If you use the +command parameter, then after the first file is loaded command is executed as an EX command. A typical example would be "elvis +237 foo", which would cause elvis to start editing foo and then move directly to line 237. The "-c command" variant was added for UNIX SysV compatibility.


During editing, elvis stores text in a temporary file. For UNIX, this file will usually be stored in the /tmp directory, and the first three characters will be "elv". For other systems, the temporary files may be stored someplace else; see the version-specific section of the documentation.

This is the database used by the :tags command and the -t option. It is usually created by the ctags(1) program.

.exrc or elvis.rc
On UNIX-like systems, a file called ".exrc" in your home directory is executed as a series of ex commands. A file by the same name may be executed in the current directory, too. On non-UNIX systems, ".exrc" is usually an invalid file name; there, the initialization file is called "elvis.rc" instead.


This is the name of your terminal's entry in the termcap or terminfo database. The list of legal values varies from one system to another.

Optional. If your system uses termcap, and the TERMCAP variable is unset, then ELVIS will read your terminal's definition from /etc/termcap. If TERMCAP is set to the full pathname of a file (starting with a '/') then ELVIS will look in the named file instead of /etc/termcap. If TERMCAP is set to a value which doesn't start with a '/', then its value is assumed to be the full termcap entry for your terminal.

Optional. If your system uses terminfo, and the TERMINFO variable is unset, then ELVIS will read your terminal's definition from the database in the /usr/lib/terminfo database. If TERMINFO is set, then its value is used as the database name to use instead of /usr/lib/terminfo.

Optional. These variables, if set, will override the screen size values given in the termcap/terminfo for your terminal. On windowing systems such as X, ELVIS has other ways of determining the screen size, so you should probably leave these variables unset.

Optional. This variable can hold EX commands which will be executed before any .exrc files.

Optional. The SHELL variable sets the default value for the "shell" option, which determines which shell program is used to perform wildcard expansion in file names, and also which is used to execute filters or external programs. The default value on UNIX systems is "/bin/sh".

Note: Under MS-DOS, this variable is called COMSPEC instead of SHELL.

This variable should be set to the name of your home directory. ELVIS looks for its initialization file there; if HOME is unset then the initialization file will not be executed.

Optional. This variable is used by the "ref" program, which is invoked by the shift-K, control-], and :tag commands. See "ref" for more information.

These optional environment variables are only used in non-UNIX versions of ELVIS. They allow you to supply a directory name to be used for storing temporary files.


ctags(1), ref(1), virec(1)

Elvis - A Clone of Vi/Ex, the complete elvis documentation.


There is no LISP support. Certain other features are missing, too.

Auto-indent mode is not quite compatible with the real vi. Among other things, 0^D and ^^D don't do what you might expect.

Long lines are displayed differently. The real vi wraps long lines onto multiple rows of the screen, but elvis scrolls sideways.


Steve Kirkendall

Many other people have worked to port elvis to various operating systems. To see who deserves credit, run the :version command from within elvis, or look in the system-specific section of the complete documentation.