Most options have two names -- a short name that is easy to type in, and a longer descriptive name. You can type in either name; they work equivalently. Elvis always outputs the longer name when it is listing values.
Each option accepts a specific type of value.
The most common types are boolean, number, string, one-of, and
tab-list, but some options have weird types.
String
options can be set to any value (although not all possible values
make sense).
One-of
options can only be set a single value from a specific list of legal values.
(The list varies from one option to another.)
Boolean
options are either true or false;
see the :set and
:let commands for a description of how to
set their values.
Number
options can only be set to a numeric value, often only within a limited range.
Tab-list
options can be set to a comma-delimited list of numbers, in which each
number represents the width of a column; for long lines, Elvis assumes the
last number should be repeated.
Each option serves as an attribute of something. The group of an option designates what it is an attribute of. For example, the "filename" option is an attribute of buffers; when you switch to a different buffer, it will have a different value for the "filename" option. Other options are attributes of windows, or display modes, etc. Here's a complete list:
.---------.-------------------------------------------------------. | GROUP | DESCRIPTION | |---------|-------------------------------------------------------| | buf | Attributes of buffers | | win | Attributes of windows | | syntax | Attributes of the "syntax" display mode | | x11 | Attributes of the "x11" user interface | | tcap | Attributes of the "termcap" user interface | | windows | Attributes of the "windows" user interface | | win32 | User interface attributes for the Win32 port | | global | Global options | | lp | Printing options | | bang | Used only when writing a file | | user | User variables a - z (Global, useful in ex scripts) | ^---------^-------------------------------------------------------^You don't need to know an option's group to set that option. You can output the values of all options in a group by passing the group name followed by a question mark to the :set command. The following example outputs all of the attributes of the current buffer:
:set buf?
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | filename, file | String | buf | name of file in buffer | | bufname, buffer | String | buf | name of buffer | | bufid, bufferid | Number | buf | ID number of user buffer | | retain, ret | Boolean | buf | keep buffer in session file | | modified, mod | Boolean | buf | buffer differs from file | | edited, samename | Boolean | buf | buffer loaded from filename | | newfile, new | Boolean | buf | filename doesn't exist yet | | readonly, ro | Boolean | buf | don't overwrite filename | | defaultreadonly, dro| Boolean | global | assume all files readonly | | locked, lock | Boolean | win | prevent any alterations | | autowrite, aw | Boolean | global | save file before switching | | writeany, wa | Boolean | global | don't warn of existing file | | timestamp, time | String | buf | time when file was modified | | backup, bk | Boolean | global | make *.bak file before write| | undolevels, ul | Number | buf | number of undoable commands | | beautify, bf | Boolean | global | strip ctrl chars from files | | bang | Boolean | bang | writing with a '!' ? | | userprotocol, up | Boolean | buf | URL, user-defined protocol | ^---------------------^---------^--------^-----------------------------^
(
name)
notation
to specify a buffer, you can also use (
n)
as an abbreviation for the buffer whose bufid=n.
Also, for filenames you can use #
n for the filename of
the buffer whose bufid=n.
bang
and skip some tests if
it is set.
For example, the default version of elvis.bwf
checks the
timestamp before writing the file,
unless the bang option is set.
Initially, all buffers are created with userprotocol
turned off.
It remains off while the elvis.brf
is executed, and then turned
on immediately before the readPROTOCOL
alias is
executed.
The default elvis.arf
script is sensitive to this value;
it skips some setup steps when userprotocol
is set, on the
theory that if you really needed those options to be set then you would
have either set them in the readPROTOCOL
alias,
or you would have at least turned off userprotocol
there.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | binary, bin | Boolean | global | -b flag for binary files | | readeol, reol | One of | buf | newline mode when reading | | writeeol, weol | One of | global | newline mode when writing | | bufchars, bc | Number | buf | number of characters | | buflines, bl | Number | buf | number of lines | | partiallastline, pll| Boolean | buf | file didn't end with newline| | errlines | Number | buf | buflines when :make was run | | internal | Boolean | buf | Elvis requires this buffer | | putstyle, ps | One of | buf | type of text in a cut buffer| ^---------------------^---------^--------^-----------------------------^
binary
, then readeol=binary.
If nobinary
readeol=text except that the default
elvis.brf file will
try to guess a better value .
the default is nobinary
.
readeol
option is set to "binary", then the value of
writeeol
is ignored for that buffer; the file will be written in binary.
Otherwise it can be one of the following to determine the output format:
readeol
option is used to control the output format.
partiallastline
option to remind itself that when the buffer
is saved in binary mode, the last newline should be omitted.
Also, the hex display mode is smart enough
to hide the added newline when this option is set.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | matchchar, mc | String | global | characters matched by % | | paragraphs, para | String | buf | nroff paragraph commands | | sections, sect | String | buf | nroff section commands | | tweaksection, twks | Boolean | global | allow text before { section?| | sentenceend, se | String | global | punct at end of sentence | | sentencequote, sq | String | global | punct allowed after se | | sentencegap, sg | Number | global | spaces required after sq | | scroll, scr | Number | win | scroll amount for ^D/^U | ^---------------------^---------^--------^-----------------------------^
mc=[]{}()
, but you may wish to add
:set mc=[]{}()<>\"\"
to your ~/.exrc (or ~/elvis.rc) file.
If your copy of Elvis was compiled with text objects enabled
(i.e., if :calc feature("textobj") returns true
)
then the matchchar
option may also contain the names of
text objects.
The most useful example of this is probably :set mc=[]{}()ax
which allows the % command to bounce between
the endpoints of an XML tag pair.
paragraphs="PPppIPLPQP"
and
sections="NHSHSSSEse".
The tweaksection
option is normally on, so Elvis allows
unindented text before the '{'.
Turning it off will cause Elvis to use the traditional definition of sections.
sentenceend="?!.", sentencequote=")\"",
and sentencegap=2,
which meets the proposed POSIX specifications.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | autoindent, ai | Boolean | buf | auto-indent new text | | inputtab, it | One-Of | buf | input mode's (Tab) key | | smarttab, sta | Boolean | global | if indenting, (Tab) shifts | | completebinary, cob | Boolean | global | complete names of binaries? | | autotab, at | Boolean | buf | allow autoindent to use '\t'| | tabstop, ts | Tab-List| buf | widths of tabstop columns | | shiftwidth, sw | Tab-List| buf | width used by < and > | | textwidth, tw | Number | buf | width for word-wrap, or 0 | | wrapmargin, wm | (weird) | win | set textwidth from right | | digraph, dig | Boolean | global | allow X-backspace-Y entry | | cleantext, ct | Packed | global | Rules for erasing old text | ^---------------------^---------^--------^-----------------------------^
filename
setting can make.
It can also complete ex command names, tag names, option names,
and option values.
This is the default for the (Elvis ex history)
buffer,
which is used for entering in ex commands.
nocompletebinary
, so binary files are
omitted.
This is handy when you're editing source code -- if your directory contains
"foo.c" and "foo.o" (or "FOO.OBJ" in the Land of the Lost), then typing
f-o-o-TAB
will complete the "foo.c" name.
Note that if you start with a buffer which contains no tabs, and do a
":set inputtab=spaces noautotab
" then no amount of editing will
result in the buffer containing tabs... unless you get tricky with
^V or something.
=spaces
and
smarttab.
textwidth
option's value
and the window's width (the columns option),
so if you resize a window this option's value will appear to change to
correspond to the new width; textwidth will not change.
The value of cleantext
is a comma-delimited list of rule names,
taken from the following table.
For example, ":se cleantext=long,bs,ex
" causes backspaced-over characters
to be erased immediately, or at the start of a long change.
The default value is simply "long".
bs | Erase text when <Backspace>, ^H, or ^U is pressed. |
---|---|
short | Erase old text at the start of a short change (the c operator, or related commands). A short change is one in which the old text doesn't contain any newlines. |
long | Erase old text at the start of a long change. A long change is one in which the old text contains at least one newline. |
input | Erase old text whenever a new keystroke is inserted into the text. |
ex | Erase text when <Backspace>, ^H, or ^U is pressed while entering a command line or regular expression. This is similar to bs but for command lines instead of the main buffer. |
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | prompt | Boolean | global | issue ":" prompt in ex mode | | autoprint, ap | Boolean | global | print current line in ex | | report | Number | global | minimum # lines to report | | optionwidth, ow | Number | global | widths of ":set all" values | | filenamerules, fnr | Packed | global | how to parse file names | ^---------------------^---------^--------^-----------------------------^
report=0
then it won't report any changes,
or failed :s/old/new/ commands.
Its default value is 5, so small changes won't be reported but big ones will.
optionwidth=24
,
which guarantees that at least 3 columns can fit on an 80-character terminal, since 80/(24+2)=3.
Note that optionwidth
has no effect on options that you explicitly
name in a ":set" command; for example, ":set tags?" will
show you the entire tag path regardless of the value of
optionwidth
.
.----------.----------------------------------------------. | KEYWORD | WHAT IT DOES | |----------|----------------------------------------------| | dollar | $VARIABLE for environment vars | | paren | (expression) evaluation | | space | <space> acts as a file name delimiter | | special | % for current file, and # for alternate file | | tilde | ~ at the start of a file name | | wildcard | wildcard matching | ^----------^----------------------------------------------^
The default value includes all of these keywords. Users of Microsoft Windows may want to remove "space" from the value, so that spaces can be used in filenames more easily. You can still give multiple file names by separating then with <Tab>.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | windowid, id | Number | win | ID number of current window | | columns, cols | Number | win | width of window | | lines, rows | Number | win | height of window | | eventcounter, evct | Number | win | when window was last used | ^---------------------^---------^--------^-----------------------------^
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | list, li | Boolean | win | show markups, newlines, etc.| | listchars, lcs | Packed | global | controls the "list" option | | showmarkups, smu | Boolean | global | show markup at cursor | | bufdisplay, bd | String | buf | default display mode | | initialsyntax, isyn | Boolean | buf | start in "syntax" mode? | | prefersyntax, psyn | String | global | when to set initialsyntax | | display, mode | String | win | name of current display mode| | number, nu | Boolean | win | display line numbers | | ruler, ru | Boolean | win | display cursor's line/column| | guidewidth, gw | Tab-list| buf | draw vertial lines on screen| | hlobject, hlo | String | buf | type of object to highlight | | hllayers, hll | Number | win | how many layers to highlight| | background, bg | One-of | global | assumed background color | | folding, fold | Boolean | win | enable folding | | show | String | global | what to show on bottom row | | showmatch, sm | Boolean | win | highlight matching parens | | showmode, smd | Boolean | win | display the command state | | nonascii, asc | One-Of | global | how to display non-ascii | | showstack, sstk | Boolean | win | display some debugging info | ^---------------------^---------^--------^-----------------------------^
feature("listchars")
returns true
.
It alters the effect of the list option, and can also
cause markers to be shown when sidescrolling is active if the
wrap option is off.
The value is a comma-delimited list of "name:value"
pairs, as follows:
NAME | HOW THE VALUE IS USED |
---|---|
eol | Marks the end of the line. If omitted, then there is no mark at the end of the line. |
tab | Alternate form of the tab character.
When used, tabs are expanded to their usual width.
If the tabstop is narrower than the value, then the value is truncated.
If the tabstop is wider, then the last character of the value is
repeated to fill the tabstop.
If omitted then tabs are shown as ^I , and do not fill
the tabstop.
|
trail | Appearance of trailing spaces at the end of the line.
Like tab ,
this is truncated or stretched to be as wide as the spaces.
If omitted, then trailing spaces will simply be displayed as spaces.
|
ff | Alternate form of the FormFeed character.
If omitted, FormFeed will be displayed as ^L .
|
cr | Altername form of the CarriageReturn character.
If omitted, CarriageReturn will be displayed as ^M .
|
esc | Alternate form of the Escape character.
If omitted, Escape will be displayed as ^[ .
|
bs | Alternate form of the Backspace character.
If omitted, Backspace will be displayed as ^H .
|
del | Alternate form of the Delete character.
If omitted, Delete will be displayed as ^? .
|
nul | Alternate form of the Null character.
If omitted, Null will be displayed as ^@ .
|
precedes | When wrap is off and you've scrolled horizontally, this marker is displayed at the left edge of non-empty lines. |
extends | When wrap is off, this marker is displayed at the right edge of lines that extend past the edge of the window. |
markup | In the html,
man, and
tex display modes,
the list option will cause all markups to be
displayed if the listchars contains "markup".
This field has no ":value" component.
|
A typical example is ":set lcs=eol:[EOL],tab:[TAB]-
",
which makes the newline marker look like "[EOL]", and tabs look like "[TAB]---".
The default value is "eol:$" which makes the list
option look
exactly like it does in the traditional vi.
In the normal and
syntax display modes, the eol
marker is displayed in the "nontext
" typeface,
the precedes
and extends
markers are displayed in the
"extends
" typeface, and
all others are displayed in the "specialkey
" face.
In the html, man,
and tex display modes, markups are displayed
in the "markup
" face.
You can adjust the appearance of these faces via the
:color command.
NOTE: You can scroll sideways by clicking on the
precedes
and extends
arrows,
but if you click too quickly then Elvis will see that as a double-click, and
try to perform a tag search on the name at the arrow location.
So if you click, click slowly.
For syntax, the exact syntax used normally depends on the filename's extension. You may also append a syntax name to explicitly select a syntax. For example, the following will cause the buffer to be displayed using C++ syntax:
:set bufdisplay="syntax c++"
NOTE:
The :mkexrc command never stores the value
of this option permanently.
This is intentional; you may want different buffers to have their
initialsyntax
option set or cleared, depending on the type of
text in it, but the initialization file created by :mkexrc
only stores one value for each option.
You should set the prefersyntax option instead.
prefersyntax
to one of the following:
.----------.------------------------------------------------------. | VALUE | WHEN INITIALSYNTAX WILL BE SET | |----------|------------------------------------------------------| | never | Never set; always start with formatted display modes | | writable | Set for writable files | | local | Set for writable files in the current directory | | always | Always set; never start with formatted display modes | ^----------^------------------------------------------------------^
In graphical user interfaces, the color of the guide lines can be set by
":color guide
colorname".
The following map causes the <F4> key to display a guide line
at the cursor column:
:map #4 :let gw=current("column")-1,columns^M
hlobject="Va{"
will highlight whole lines
via brace-delimited blocks.)
If you set hllayers to more layers than you've defined
in this option, then the last object type will be repeated with increasing
counts.
The default value is "" which inhibits highlighting.
For highlighting to occur, you must set both hlobject
to a valid
object name, and hllayers to a non-zero value.
NOTE: I recommend that you get in the habit of enclosing the value in quotes. Some characters used in text object names can have special meaning to Elvis. One surprising example of this is "a{", which could otherwise confuse Elvis' attempt to parse {...} blocks in ex scripts.
or
color" clause in a
:color command.
If you haven't given Elvis a list of foreground colors to choose from,
then there is no choice to be made.
The legal values are "light" and "dark". The default value is taken from the $ELVISBG environment variable. If you haven't set that variable, then Elvis will try to guess the appropriate default for your type of terminal.
NOTE:
In expressions, you can use
current("background") to obtain a
"light" or "dark" judgement for the actual normal background.
This works by examining the color table so it is reliable, unlike the
background
option.
.---------.-----------------------------------------------------. | KEYWORD | WHAT IT SHOWS | |---------|-----------------------------------------------------| | file | value of the current buffer's filename or bufname | | tag | name of tag defined at or above the current line | | cmd | characters of a partially-entered vi command | | face | name of text face at cursor (as used by :color) | | link | destination of an HTML link at the cursor position | | spell | suggested corrections for a misspelled word | | region | comment of current region (as used by :region) | ^---------^-----------------------------------------------------^
Many of the above keywords won't always generate output. For example, "tag" won't generate output if the current file doesn't define any tags, or if the cursor is positioned before the first tag definition. Also, many of the above keywords depend on features which can be disabled at compile-time.
Using the "tag" keyword, by the way, may cause Elvis to load files more slowly. This is because it must locate every tag definition in that file. The version of ctags distributed with Elvis (usually installed as "elvtags" on Unix/Linux systems) has a "-l" flag which causes it to generate "ln" hints, which give the line number where the tag is defined. Elvis can use these hints to greatly accelerate the loading of tags when you switch files. The "-l" option is enabled by default if you don't give any flags, so you don't need to give it explicitly unless you're also giving some other flags.
The "spell" keyword only works if the spell option is set. Also, it works better if the whole spelling dictionary has been loaded into memory, so you should either set the spellautoload option or explicitly invoke the :wordfile command if you want to use it.
If the value contains slashes, then Elvis will stop looking for keywords
at the first slash after a keyword which generated information.
Or to put it another way, slashes divide the show
value into
segments, and Elvis will only show the first segment which actually has
something to show you.
The default value is "spell/tag,region". This causes Elvis to display spelling suggestions if the cursor is on a misspelled word, or the tag name and region comment otherwise.
.-------.------------------------------------------------. | VALUE | MEANING | |-------|------------------------------------------------| | all | All characters 0x80-0xff are visible | | most | Chars 0xa0-0xff are visible, but not 0x80-0x9f | | none | Chars 0x80-0xff are not visible | | strip | Convert 0xa0-0xfe to ASCII; others not visible | ^-------^------------------------------------------------^Any characters which aren't visible will be displayed as '.' characters. Note that this only affects the way the characters are displayed; they are actually stored with their true 8-bit value. The default value of
nonascii
is "most", because that is the correct
value for the Latin-1 symbol set.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | includepath, inc | String | syntax | where to find #include files| ^---------------------^---------^--------^-----------------------------^
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | spell, sp | Boolean | buf | highlight misspelled words | | spelldict, spd | String | global | name of dictionary file | | spellautoload, sal | Boolean | global | load whole dict when needed | | spellsuffix, sps | String | global | list of suffixes | ^---------------------^---------^--------^-----------------------------^These options all pertain to the spell-checking feature. For more information, see the discussion in the Tips chapter. Also see the show option's "spell" keyword to show alternative spellings at the bottom of the window, and how that feature relates to the spellautoload option.
The default value is "", which prevents the use of any such file.
However, the initialization script tries to locate a suitable file.
Many Unix systems have a /usr/dict/words file which works well.
If you set spelldict
to the name of a non-existent or unreadable
file, then Elvis will reset it "".
NOTE: Elvis reads that file in a case-insensitive manner. There are two consequences of this. First, the file should be sorted case-insensitively (like "sort -f" on POSIX systems). Second, if a word is capitalized in the dictionary file, then Elvis will accept a non-capitalized version of the same word in the buffer as being correctly spelled. The only way to add case-sensitive words to the dictionary is via the :words command.
The value is a string, interpreted as a space-delimited list
of suffixes.
Each suffix can be either a simple suffix to remove, or an expression
of the form "suffix=replacement" to replace the suffix
with some other text.
For example, spellsuffix="ies=y"
would be able to
convert "flies" into the root word "fly".
One important detail of the spellsuffix
option is that it
is only used the first time Elvis encounters a word.
After looking up a word once, Elvis the simply remembers the result.
Consequently, changing the spellsuffix
option won't cause any
words that are currently marked as misspelled to be rechecked and marked as
correct.
Another quirk of spellsuffix
is that it doesn't work on
case-sensitive root words that you add via the
:words command.
This is a low-priority bug which I expect to fix eventually.
Until then, you can simply add both the root word and suffixed word to
your personal dictionary.
The compiled-in default value is "", but the default configuration files (mostly the elvis.spe file) change that to something that works well for English text.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | terse, te | Boolean | global | don't translate messages | | verbose | Numeric | global | give more status messages | | errorbells, eb | Boolean | global | ring bell for error message | | warningbells, wb | Boolean | global | ring bell for warning msg | | flash, vbell | Boolean | global | substitute flash for bell | ^---------------------^---------^--------^-----------------------------^
verbose
and automatically writes status messages when verbose
is set to
a high enough level.
Values normally range from 0 (no extra output) to 9 (maximum output).
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | true, True | String | global | locale's True value | | false, False | String | global | locale's False value | | submit, Submit | String | x11 | locale's Submit label | | cancel, Cancel | String | x11 | locale's Cancel label | | help, Help | String | x11 | locale's Help label | ^---------------------^---------^--------^-----------------------------^These options store words, which are translated via the elvis.msg file when Elvis starts up. The default versions of all of them are their capitalized English names.
false
is used as an alternative false string, in addition
to "", "0", or "false". (In a Boolean context, any string that isn't false
is considered to be true, so Elvis never compares a string to the
true
option's value.) A Boolean option will return the value
of either the true
or false
option, as appropriate.
true
and
false
options.
help
option will allow Elvis to recognize the "Help" menu.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | term, ttytype | String | tcap | terminal's termcap entry | | ttyrows, ttylines | Number | tcap | height of screen | | ttycolumns, ttycols | Number | tcap | width of screen | | ttyunderline, ttyu | Boolean | tcap | okay to mix color & underln | | ttyitalic, ttyi | Boolean | tcap | okay to use "dim" for italic| | ttywrap, ttyw | Boolean | tcap | trust termcap's line wrap | | codepage, cp | Number | win32 | console character set | |---------------------|---------|--------|-----------------------------| | scrollbar, sb | Boolean | (gui) | enable the scrollbar | | toolbar, tb | Boolean | (gui) | enable the toolbar | | statusbar, stb | Boolean | (gui) | enable the statusbar | | scrollwheelspeed,sws| Number | (gui) | adjust speed of scroll wheel| | scrollbgimage, sbi | Boolean | (gui) | scroll background image | | font, fnt | String | (gui) | base font | | iconimage, ii | String | (gui) | window icon | |---------------------|---------|--------|-----------------------------| | menubar, mb | Boolean | windows| enable the menubar | | titleformat, title | Boolean | windows| window title | |---------------------|---------|--------|-----------------------------| | boldfont, xfb | String | x11 | name of bold font | | italicfont, xfi | String | x11 | name of italic font | | controlfont, xfc | String | x11 | name of toolbar font | | xencoding, xe | String | x11 | registry & encoding of fonts| | scrollbarleft, xsl | Boolean | x11 | enable scrollbar on side | | scrollbarwidth, xsw | Number | x11 | size of scrollbar, in pixels| | scrollbartime, xst | Number | x11 | delay for scrollbar repeat | | borderwidth, xbw | Number | x11 | size of text area's border | | dblclicktime, xdct | Number | x11 | double-click speed, 1/10 Sec| | blinktime, xbt | Number | x11 | cursor blink rate, 1/10 Sec | | textcursor, tc | Number | x11 | one of hollow, opaque, xor | | synccursor, xsync | Boolean | x11 | avoid partial characters | | xrows, xlines | Number | x11 | height of new windows | | xcolumns, xcols | Number | x11 | width of new windows | | firstx, xpos | Number | x11 | horiz. position of first win| | firsty, ypos | Number | x11 | vert. position of first win | | stagger | Number | x11 | offset for next new window | | icon | Boolean | x11 | use the built-in icon? | | iconic | Boolean | x11 | windows start out iconified | | stopshell, ssh | String | x11 | interactive shell command | | autoiconify, aic | Boolean | x11 | iconify old window | | altkey, metakey | One of | x11 | effect of the Alt key | | focusnew, fn | Boolean | x11 | force focus into new window | | warpto, wt | One of | x11 | ^W^W forces pointer movement| | warpback, xwb | Boolean | x11 | upon exit, point to xterm | | outlinemono, om | Number | x11 | char outlining for X11-mono | | antialias, aa | Boolean | x11 | use antialiased fonts | | aasqueeze, aas | Boolean | x11 | reduce the gap between lines| ^---------------------^---------^--------^-----------------------------^
The value of term
is taken from the $TERM
environment variable.
ttyrows
and ttycolumns
are set from the
$LINES
and $COLUMNS
environment variables,
or from the stty "rows" and "columns" settings (or other OS-specific
configuration settings), or, as a last resort, from the termcap/terminfo
entry.
ttyunderline
option is true by default, which allows Elvis
to use underlining without restrictions of any kind.
But on PC text screens, any attempt to underline is likely to interfere
with the use of background colors, because PC video hardware traditionally
uses the same bit for underlining (on monochrome screens) as it does for a
red background (on color screens).
If underlining causes problems for you, try turning off
ttyunderline
.
This will have two main effects:
Note that if you want to totally disable the underline escape sequence without setting a background color, you can simply set the background to "transparent", like this:
:set nottyunderline :color normal on transparent
If your terminal doesn't implement half-bright (via the
:mh=: termcap field or dim
terminfo field), then Elvis
uses underlining to represent italics.
Underlining is influenced by the ttyunderline
option.
In Windows the easiest way to set the font is via the "Options->Font" menu item. The default is "Courier new*10" in Windows.
In X11, the default is "" which is interpreted as meaning "fixed".
("fixed" is usually an alias for a small fixed-pitch font.)
The elvis.ini script tries to choose
an appropriate sized Courier font, though.
You can also choose one yourself using the :courier
alias.
In the "x11" interface, changing font
has the side-effect of
resetting the boldfont and
italicfont options.
In addition to the "courier*14" notation for font names, the x11 interface
also allows you to append "b" or "i" for bold or italic versions of the font.
See also the xencoding option.
titleformat="(dirfile($1)) - Elvis"
which shows the file name without any leading directory name, and then
appends "- Elvis" to the end.
Window titles are only adjusted when you switch to a different file by running
a :e file command
or something similar.
Merely changing the titleformat
option will not have any
immediate effect on the window's title.
If you set a titleformat
in your elvis.rc file, then its
value will affect all windows that are created later.
This is the most useful place to change titleformat
.
See the :mkexrc command.
When anti-aliasing is enabled, this option should still work but it doesn't. I believe this is a bug in the Xft library.
true
).
It indicates whether antialiased fonts should be used.
Its default value is true, which allows antialiased fonts to be used
when available.
Turning it off (:set noantialias
) will use the standard
bitmapped fonts, which are usually uglier but can be drawn faster.
noiconic
.
:set nofocusnew
") prevents
Elvis from forcing a change of input focus in those two situations.
Note that Elvis always forces a change of input focus when you give a command
which switches windows, such as ^W^W.
You can set the warpto option to any one of the following values: don't, scrollbar, origin, or corners. The default is don't which prevents any automatic pointer movement. The scrollbar value causes the pointer to move to the scrollbar, and origin moves it to the upper-left corner. The corners value causes the pointer to move first to the corner furthest from the window's text cursor, and then to the nearest corner; this will cause the X server to pan (if necessary) to bring the entire window into view.
firstx, firsty,
and stagger
options are intended
to allow mouseless positioning of Elvis windows, the warpback
option
is intended to serve as a mouseless way to switch keyboard focus back to the
original xterm, so that mouse haters will find Elvis' x11 interface as
convenient to use as the termcap interface.
By default, warpback
is false.
outlinemono
is a number that indicates how thick the outline
should be. 3 is the thickest supported outline, and 0 is no outline at all.
The default is 2.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | ignorecase, ic | Boolean | global | uppercase matches lowercase | | smartcase, scs | Boolean | global | defeat ignorecase if upper | | magic, ma | Boolean | global | use normal regexp syntax | | magicchar, mac | String | global | list of metacharacters | | magicname, man | Boolean | global | allow $name substitution | | magicperl, map | Boolean | global | Perl-compatible \b | | autoselect, as | Boolean | global | visibly mark searched text | | hlsearch, hls | Boolean | global | highlight all marches | | wrapscan, ws | Boolean | global | searching wraps at EOF<->BOF| | gdefault, gd | Boolean | global | default change all instances| | edcompatible, ed | Boolean | global | remember regsub flags | | saveregexp, sre | Boolean | global | remember regexp to use as //| | incsearch, is | Boolean | global | / and ? search incrementally| ^---------------------^---------^--------^-----------------------------^
smartcase
option has no effect unless ignorecase
is also set.
magic
is true, the magicchar option
allows some characters to be metacharacters without a backslash.
magicchar
value is a list of metacharacters that don't
require a leading backslash.
The magicchar
option has no effect unless the
magic option is true.
This is a good thing.
Tag searches are always done in
nomagic
mode, so they're
immune to any changes you make to magicchar
.
The default value is "^$.[*
", which makes Elvis mimic the
traditional vi syntax.
Some users may prefer to add "+?(){|
",
which makes it more like Perl and egrep.
You'll need a backslash before the | to prevent it from being interpreted
as a command separator, so the complete command is:
:set magicchar=^$.[*+?(){\|
Note that you never need to add "]
" or "}
";
they are implied by the corresponding "[
" or "{
"
respectively.
However, you do need to explicitly add ")
" if you want it to
be recognized without the backslash.
Warning:
Changing magicchar
could potentially break scripts and aliases
that expect it to have the default value, if you aren't careful.
Elvis' standard configuration scripts and aliases take steps to avoid this problem.
You should do the same for your own scripts and aliases.
There are three ways to do this:
\V
metacharacter at the front of every regular
expression. This will force the remainder of the expression to be
interpreted using the traditional vi syntax.
local magicchar=^$.[*
" to the top of each script or
alias, to temporarily force magicchar back to its default value.
au AliasEnter,ScriptEnter * local magicchar=^$.[*
$
name substitution in
regular expressions,
and the :s command's replacement text.
Normally this option is off, so you can search for dollar signs easily.
Aliases that compute regular expressions
often use ":local magicname
"
to access their computed regular expression by name.
\b
metacharacter to mean
"edge of a word", instead of "backspace"
(except in [
charlist]
metacharacters,
where \b
always means "backspace").
Future versions of Elvis are expected to change more metacharacters.
:s/old/new/
to assume an instance number of ".1" so only
the first instance in each line is changed.
Making gdefault true will cause a
:s/old/new/ command
to change all instances in each line,
as though the "g" flag had been given.
If you give an explicit instance number or "g" flag,
then the value of gdefault is ignored.
ed
editor worked,
but this option's name and behavior are traditional in vi.
This option is false by default.
n
and N
.
incsearch
is false by default.
When incsearch
is false, those commands wait for you to enter
a complete regular expression before search; while entering it, you have
access to the full set of input mode editing
commands.
When incsearch
is true, those commands search through the
buffer after each keystroke as you type in the regular expression, without
waiting for you to hit the <Enter> key.
The only special keystrokes available are:
.-----------.----------------------------------------------------. | Keystoke | Action | |-----------|----------------------------------------------------| | Enter | Exits the incremental search mode, leaving the | | | cursor at the found text | | Esc | Exits the incremental search mode, returning the | | | cursor to its previous location. | | Backspace | Erases last character from the regular expression. | | Ctrl-V | Quotes the next character, so you can search for | | | an Enter, Esc, or Backspace character. | ^-----------^----------------------------------------------------^
The incsearch
option interferes with the use of the
/ and ?
commands as a destination for operators.
To get around this, the incsearch
option is temporarily
disabled when executing an operator.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | taglength, tl | Number | global | significant length of tags | | tags, tagpath | String | global | list of possible tag files | | tagstack, tsk | Boolean | global | remember origin of tag srch | | tagprg, tp | String | global | external tag search program | | smartargs, sa | Boolean | buf | show args when inputing func| | tagkind, tk | Boolean | global | highlight tags | | taglibrary, tlib | Boolean | global | highlight library tags | ^---------------------^---------^--------^-----------------------------^These options control how Elvis performs tag lookup, as for the :tag ex command or the ^] visual command. You should also check out the previoustag option, and the show option's "tag" keyword. In fact, this manual has a whole Tags chapter.
In a path, names which start with "./" (or ".\" in MS-Windows) are assumed
to be relative to the directory of the current file. This means that
":set tags=./tags:tags
" will cause Elvis to first check the
"tags" file in the directory of the current text file,
and then the "tags" file in the current directory.
NOTE: Traditionally, the elements in this path have been space-delimited. Since every other path in any other context is either colon-delimited (for Unix) or semicolon-delimited (for Microsoft), and it is becoming more common for filenames to contain spaces, Elvis uses colons or semicolons for the tag path too. This makes Elvis' "tags" settings incompatible with other versions of vi, though. If this is a problem for you, then you might consider adding the following to the top of your .exrc file...
alias fixtags { " Convert spaces to colons in the tags option local i t let t = tags[1] for i (2 .. tags[0]) do let t = t : tags[i] let tags = t } au optchanged tags fixtags
tagstack
is false, then the tag stack is unaffected by tag look-up.
It is true by default.
tagprg
's value as a shell command and interpret its stdout
as a list of matching tags. Before the command is run, it is evaluated using
the simpler expression syntax with
$1 indicating where the arguments should go.
The default value of tagprg
is "" which causes Elvis to use
the internal tag search algorithm.
NOTE: You might also consider using the ccprg option for this sort of thing, since the :cc command has a smarter line parser than the :tag command.
If the tagkind
option is set, then the first time any given
language's syntax description is loaded,
Elvis reads through any tags
files in the
tagpath for any tags defined in a file that is callable
by this language.
For each such tag, Elvis adds the tag name as a keyword, and sets the face
to either "kind
k" where k is the value
of its "kind" attribute, or simply "kind
" if the tag has no "kind"
attribute.
For example, your data types are displayed in the "kindt
" face.
You can use the :color command to change
the appearance of the face.
:color kindt underlined like keyword
The taglibrary
option does the same thing, except that it
looks for tags in the directories listed in the
elvispath option, and the face names
are of the form "lib
k".
Generally, taglibrary
is intended to be used with tags for stub
files of libraries.
Not all library tags are added. Static functions are skipped, as are non-function tags that are defined in anything other than an "enum" data type.
Because tagkind
and taglibrary
are only checked the
first time a given language's syntax is loaded, any changes to your tags file
won't be detected until you exit Elvis and restart it.
For taglibrary
, this doesn't matter since libraries don't change much,
but for tagkind
it can be annoying.
You might want to consider using the spell option
instead of tagkind
.
Also, since setting these options will not cause Elvis to reload syntax descriptions, you probably only want to set these options via your ".exrc" file. (See the :mkexrc command.)
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | exrefresh, er | Boolean | global | redraw scrn after each line | | nearscroll, ns | Number | global | scroll vs. jump¢er param| | wrap | Boolean | win | how long lines are displayed| | sidescroll, ss | Number | win | sideways scrolling amount | | optimize, op | Boolean | global | run faster | | animation, anim | Number | global | animation macro speed | | window, wi | Number | global | lines to show for :z command| | pollfrequency, pf | Number | global | rate of testing for ^C | | maptrace, mt | One of | global | debugger: off, run, or step | | maplog, mlog | One of | global | logging: off, reset, append | ^---------------------^---------^--------^-----------------------------^
Sometimes Elvis will choose the wrong macros to refresh. If that happens, then try running the macro with optimize option turned off. For example, the bouncing ball macros look better with optimize turned off.
The step value displays the mapping queue, and then waits for a keystroke before proceeding. If the keystroke is ^C then the macro is terminated. If the keystroke is r then maptrace is set to run. Any other keystroke causes Elvis to pause again after processing the macro's next character. See section 16.3 How to debug macros for more suggestions for debugging macros.
:("Eml)spor the long version, "
:(Elvis map log)split
".
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | blkcache, cache | Number | global | number of blocks in cache | | blksize, bsz | Number | global | size of cache block | | blkfill, bfill | Number | global | initial chars per text block| | blkhash, hash | Number | global | size of cache hash table | | blkgrow, bgr | Number | global | allocation table parameter | | blkhit, bh | Number | global | # of block requests in cache| | blkmiss, bm | Number | global | # of block req. not in cache| | blkwrite, bw | Number | global | # of blocks written | | sync | Boolean | global | force changes to disk | ^---------------------^---------^--------^-----------------------------^
Note that the value of blksize can only be set via the -Bblksize command line flag, and its value must be a power of 2 in the range [512, 8192]. You can't change blksize after Elvis has started (not even in configuration scripts), because by then the session file has already been created with the other block size.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | version, ver | String | global | Elvis version number (2.2) | | bitsperchar, bits | Number | global | character size (always 8) | | gui | String | global | name of user interface | | os | String | global | name of operating system | | locale | String | global | user's language | | program, argv0 | String | global | invocation name of Elvis | | session, ses | String | global | name of session file | | tempsession, temp | Boolean | global | delete session file on exit | | newsession, newses | Boolean | global | session file is new | | recovering, rflag | Boolean | global | recovering after a crash | | exitcode, exit | Number | global | exit code of Elvis process | ^---------------------^---------^--------^-----------------------------^
The locale option has no direct effect on Elvis; it is only used in some scripts. In particular, the it affects the default value chosen for the spelldict option. Elvis itself uses the digraph table to handle different symbol sets, and the elvis.msg file for different languages.
tolower(basename(program))
and compares the result to "ex" and "view",
to set the initialstate
and defaultreadonly options, respectively.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | ccprg, cp | String | buf | shell command for :cc | | makeprg, mp | String | buf | shell command for :make | | anyerror, ae | Boolean | global | allow :errlist if readonly | | equalprg, ep | String | buf | shell command for = operator| | keywordprg, kp | String | buf | shell command for K command | | shell, sh | String | global | name of shell program | | warn | Boolean | global | warn if file not saved | ^---------------------^---------^--------^-----------------------------^
cp="cc ($1?$1:$2)"
and mp="make $1"
.
Spaces in filenames can be a problem with the $2
symbol.
This is especially true when running Microsoft Windows.
Most command-line programs such as "cc" use whitespace to delimit their
arguments, so if your filename contains whitespace then the natural tendency
of the system is to divide that filename into multiple arguments, none of which
happens to be the correct name of your file.
To get around this problem, you need to add double-quote characters around
the filename.
This is a little tricky, since double-quotes are also special to both the
:set command and Elvis'
expression evaluator.
Do it this way:
:set cp="cc ($1?$1:(char(34);$2;char(34)))"
set kp="ref $1 file:$2 2>&1 \| xmessage -file - >/dev/null 2>&1 &"
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | home | String | global | home directory | | elvispath, epath | String | global | list of possible config dirs| | sessionpath, spath | String | global | list of possible session dir| | directory, dir | String | global | where to store temp files | ^---------------------^---------^--------^-----------------------------^
For UNIX: | The default is "/". |
---|---|
For Win32: | The default is derived from environment variables named HOMEDRIVE and HOMEPATH, which will normally always be defined. Their default value is usually "C:\users\default". If either of those environment variables is undefined, then Elvis will attempt to find the pathname of the program, and use its directory. As a last resort, Elvis will use "C:\" as the default home directory. |
For OS/2: | The default home directory is the one containing ELVIS.EXE, or if that can't be found then it will use "C:\" as the default home directory. |
For MS-DOS: | The default home directory is the one containing ELVIS-2.2_0 |
For UNIX: | The default contains ~/.elvis and the directories that you
specified as the data and doc directories when you ran the
configure script.
The default data directories are /usr/share/elvis for data,
and /usr/share/elvis/doc for documentation, so usually
elvispath will default to "~/.elvis:/etc/elvis:/usr/share/elvis:/usr/share/elvis/doc". |
---|---|
For Win32, OS/2, or MS-DOS: |
The default contains ~\dotelvis, and subdirectories named data and doc under the directory where elvis.exe resides. For example, if Elvis is installed as C:\elvis\elvis.exe then elvispath would be ~\dotelvis;C:\elvis\data;c:\elvis\doc. |
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | exrc, ex | Boolean | global | interpret ./.exrc file | | modeline, ml | Boolean | global | interpret modelines | | modelines, mls | Number | global | positions of modelines | | security, sec | One-of | global | normal, safer,or restricted | | initialstate, init | One-Of | global | command mode of new windows | | mkexrcfile, rc | String | global | name of user's init script | ^---------------------^---------^--------^-----------------------------^
ex:
commands:
" or
"vi:
commands:
" and
if found, it executes the commands as an ex command line.
(This behavior is implemented in the
elvis.arf file.)
This is typically used for changing tabstops and the like.
The modeline option is false by default, and modelines is 5.
There are three levels of security: normal, safer, and restricted. Basically, "normal" has no security rules, "safer" tries to protect the user against writing by malicious scripts, and "restricted" tries to protect the system against reading by a malicious user. Specifically...
normal |
This is the weakest level of protection.
In other words, it gives the user the most power.
All commands are allowed.
You will normally want to run in "normal" mode as much as possible.
|
---|---|
safer |
This is an intermediate level of protection.
It is intended to make modelines and a .exrc file in the current directory
safe to use, but I'm not making any promises.
When security=safer, certain commands are disabled, wildcard
expansion in filenames is disabled, and certain options are locked (including
the security option itself).
Typically you will use the ex command
:safely source to execute an untrusted script,
rather than futz with the value of the safer option directly.
The disabled ex commands are :!, :abbreviate, :alias, :args, :augroup, :autocmd, :cc, :cd, :chdir, :last, :lpr, :make, :map, :mkexrc, :next, :Next, :previous, :rewind, :shell, :slast, :snew, :snext, :sNext, :srewind, and :write. Some commands are allowed only when invoked without a filename argument. These are :edit, :ex, :file, :open, :push, :split, :visual, :wquit, and :xit. The locked options are ccprg, elvispath, equalprg, home, keywordprg, lpout, makeprg, modeline, security, shell, spelldict, and tagprg. In expressions, the shell() function will fail.
|
restricted |
This is the most secure setting.
It is intended to make Elvis safe for use as a restricted editor,
e.g. to be invoked on a specific file via the sudo(8) program.
In addition to all of the rules implied by "safer" level, "restricted" disables the :stop, :source, :suspend commands. Also, the :errlist, :read, and :wordfile commands won't allow filename arguments. The "restricted" level also inhibits filename completion via the <Tab> key. In expressions, the time(filename) function will fail if invoked with a filename parameter, and the exists(), dirperm(), and fileeol() functions always fail. :mkexrc
always set this option to the name of that script file.
|
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | remap | Boolean | global | allow key maps to use maps | | timeout, to | Boolean | global | allow timeout for maps? | | keytime, kt | Number | global | timeout for function keys | | usertime, ut | Number | global | timeout for multi-key maps | | mapmode, mm | String | buf | which maps to use | ^---------------------^---------^--------^-----------------------------^Elvis allows keystrokes to be mapped via the :map command. Once a map has been defined, these options control how and when those maps are recognized.
true
, which
allows the keytime and usertime
options to control the amount of time allowed for key maps (for a function
key or cursor key) and user maps (for multiple keystrokes of any type of key)
to be received.
Turning off the timeout
option will cause Elvis to allow any
amount for maps to be completed,
regardless of the values of keytime
and usertime
.
In this situation, Elvis must perform a read-keystrokes-with-timeout operation to determine which map applies, if any. If all of the partially matching maps are for special keys such as function keys, then Elvis will use the keytime value. If at least one of them is for a user map, then Elvis will use the usertime value. Either way, the values indicate the time, in tenths of a second, that Elvis should allow for the rest of the map characters to arrive. If they don't arrive, then none of the partially matching maps is used.
Typically, the usertime value will be much longer than the keytime value,
because the user must hit a series of keys for a user map.
For example, many people like to create maps consisting of a semicolon
and one or two following letters.
(If you're a touch typist, then your right-hand pinky normally rests on
the semicolon key, so this is convenient.)
By distinguishing between key maps and user maps, Elvis can give quick
response to the Esc while still allowing users to key in their
own keymaps at a leisurely pace.
Their default values are keytime=3
and usertime=15.
mode=
name flag to indicate which mode
the map applies to.
The name is then compared to the value of mapmode after
each keystroke, when Elvis is deciding which maps to apply.
For example, you could define a set of maps that are appropriate only for HTML commands, and some that are appropriate only for man-pages...
:map BB mode=html select c<strong>^P</strong>^[ :map II mode=html select c<em>^P</em>^[ :map BB mode=man select c\fB^P\fR^[ :map II mode=man select c\fI^P\fR^[... and then set each edit buffer's
mapmode
appropriately to
ensure that the proper set of maps are used.
The default value is "", but the standard elvis.arf script sets it to be the same as the bufdisplay option, if that option's value is one of "html", "man", or "tex".
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | eventignore, ei | String | global | list of events to ignore | | eventerrors, ee | Boolean | global | allow error msg during event| | aufilename, afile | String | au | name of file | | auevent, ev | String | au | name of current event | | auforce, bang | Boolean | au | did trigger cmd have "!" ? | ^---------------------^---------^--------^-----------------------------^These options are all related to the :autocmd command. The options in the "au" group only exist while an auto command is executing. For a description of how auto commands work, see the Tips chapter.
noeventerrors
), which hides the errors;
this is because users are likely to be confused if they see error messages
from commands that they aren't running.
If you wish to debug your :autocmd
configuration, you might want to turn it on.
You can also selectively turn off error messages by running the command via :try, like this...
:au BufNew *.html try r skeleton.html
aufilename
is set to the name of the file being read or written to.
When you're trying to learn about auto commands and events, one of the best things you can do is set up an auto command which announces all events as they happen, like this...
:au * * set auevent?
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | lptype, lpt | String | lp | printer type | | lpconvert, lpcvt | Boolean | lp | convert Latin-1 to PC-8 | | lpcrlf, lpc | Boolean | lp | printer needs CR-LF newline | | lpout, lpo | String | lp | printer file or filter | | lpcolumns, lpcols | Number | lp | width of printer page | | lpwrap, lpw | Boolean | lp | simulate line-wrap | | lplines, lprows | Number | lp | length of printer page | | lpnumber, lpn | Boolean | lp | print line numbers in margin| | lpheader, lph | Boolean | lp | print header at top of page | | lpformfeed, lpff | Boolean | lp | send form-feed after last pg| | lpoptions, lpopt | String | lp | driver-specific options | | lpcolor, lpcl | Boolean | lp | use colors when printing | | lpcontrast, lpct | Number | lp | minimum color darkness 0-100| ^---------------------^---------^--------^-----------------------------^These options all affect hardcopy output, done via the :lpr command. Note that these options are in a separate group, so you can display all of them by giving the command "
se lp?
".
.---------.-------------------------------------------------. | VALUE | PRINTER DESCRIPTION | |---------|-------------------------------------------------| | ps | [1] PostScript, one logical page per sheet | | ps2 | [1] PostScript, two logical pages per sheet | | epson | [2] Most dot-matrix printers, no graphic chars | | pana | [2] Panasonic dot-matrix printers | | ibm | [2] Dot-matrix printers with IBM graphic chars | | hp | [2] HP printers, and most non-PostScript lasers | | cr | Line printers, overtypes via carriage-return| | bs | Overtypes via backspace, like nroff | | dumb | Plain ASCII, no font control | | html | HTML source code | | ansi | ANSI terminal codes (for VT-100, xterm, etc)| |-- --- --|-- --- --- --- --- --- --- --- --- --- --- --- --| | windows | [1] The Win32 print facility (in WinElvis only) | ^---------^-------------------------------------------------^ [1] Full support for proportional character attribute [2] Partial support for proportional character attribute
NOTE: Not all printer types obey the lpconvert
option.
Postscript printers don't do conversion because they use Latin-1 themselves.
The "cr", "bs", and "dumb" printer types ignore it simply because they
are typically used for writing to files, not actual printers, and as long
as the text remains in the computer no conversion is necessary.
Only the "epson", "pana", "ibm", "hp", and "html" printers will obey the
lpconvert
option.
:set lpcrlf
" and maybe that'll fix it.
prn,
and you may wish to set the lpformfeed
option there.
The value should be a comma-delimited list of "fieldname:value"
pairs.
The ps
and ps2
lptypes
use the following options:
.------------.------------------------------------------------. | FIELD NAME | MEANING OF THE VALUE | |------------|------------------------------------------------| | paper | The paper size. It can be one of letter, | | | legal, executive, a4, or a3. If you omit | | | this field, then Elvis will allow the printer | | | to figure out the paper size itself. | | | | | frame | This determines whether Elvis will draw a box | | | around each page. It can be true or false. | | | The default is true. | | | | | bar | This determines whether Elvis will draw a | | | vertical bar between pages when lptype=ps2. | | | It can be true or false. The default is false. | | | | | punch | This determines whether Elvis will leave space | | | along the left edge of each sheet to accomodate| | | a three-hole punch. It can be true or false. | | | The default is false. | | | | | clip | This determines whether Elvis will leave space | | | along the top edge of each sheet to accomodate | | | a clip board. It can betrue
orfalse
. The | | | default is false. | ^------------^------------------------------------------------^
For example, "lpoptions=frame:false,bar:true
" will cause
elvis to draw a bar between logical pages on each sheet in lptype=ps2 mode,
instead of drawing a box around them.
nolpcolor
), which forces all printouts
to use black since that usually prints faster and looks better, and
is always less expensive.
lpcontrast
is a number from 0 (allow any colors)
to 100 (darken every color to black).
The default is 50.
A better way to control printing colors is via the "or color"
clause in a :color command.
When you give multiple foreground colors this way,
Elvis chooses the darkest one for printing, and
then uses lpcontrast
to darken it even more if necessary.
The lpcontrast
option has no effect on the "html" and
"ansi" lptypes, because Elvis has no way of knowing
what the background color will be when you view it.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | previousdir, pdir | String | global | previous directory name | | previousfile | String | global | name of alternate file | | previousfileline | Number | global | line# from previousfile | | previouscommand | String | global | previous shell command line | | previoustag, ptag | String | global | previous search tag | ^---------------------^---------^--------^-----------------------------^These options all store the previous value of some type of input, so that the same value can be used again later. You can set these options, but there really isn't much point to it, usually.
$OLDPWD
environment variable. After that, each :cd
command will store the old current working directory into this option before
switching to the new working directory. If you give Elvis a file name which
begins with "~-", Elvis will replace the "~-" with the value of this option.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | hardtabs, ht | Number | global | width of terminal's tabs | | lisp | Boolean | buf | lisp mode | | mesg | Boolean | global | disable SysAdmin messages | | more, mo | Boolean | global | allow "Hit <Enter>" prompt | | novice | Boolean | global | beginner mode | | redraw | Boolean | global | redraw screen during input | ^---------------------^---------^--------^-----------------------------^
This doesn't mean they're useless, though.
You can catch OptChanged
or OptSet events on these options,
and use that to alter other options or perform actions.
For example, the following makes the novice
option act
pretty much as it does in vi:
:au OptSet novice set nomagic report=1 showmode
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | a | String | user | user variable | | b | String | user | user variable | | c | String | user | user variable | | d | String | user | user variable | | e | String | user | user variable | | f | String | user | user variable | | g | String | user | user variable | | h | String | user | user variable | | i | String | user | user variable | | j | String | user | user variable | | k | String | user | user variable | | l | String | user | user variable | | m | String | user | user variable | | n | String | user | user variable | | o | String | user | user variable | | p | String | user | user variable | | q | String | user | user variable | | r | String | user | user variable | | s | String | user | user variable | | t | String | user | user variable | | u | String | user | user variable | | v | String | user | user variable | | w | String | user | user variable | | x | String | user | user variable | | y | String | user | user variable | | z | String | user | user variable | | bb | String | buf | user variable per buffer | | ww | String | win | user variable per window | ^---------------------^---------^--------^-----------------------------^
:let i=i+1...does exactly what you would expect.
.---------------------.---------.--------.-----------------------------. | OPTION NAMES | TYPE | GROUP | DESCRIPTION | |---------------------|---------|--------|-----------------------------| | a | String | user | user variable | | aasqueeze, aas | Boolean | x11 | reduce the gap between lines| | altkey, metakey | One of | x11 | effect of the Alt key | | animation, anim | Number | global | animation macro speed | | antialias, aa | Boolean | x11 | use antialiased fonts | | anyerror, ae | Boolean | global | allow :errlist if readonly | | auevent, ev | String | au | name of current event | | aufilename, afile | String | au | name of file | | auforce, bang | Boolean | au | did trigger cmd have "!" ? | | autoiconify, aic | Boolean | x11 | iconify old window | | autoindent, ai | Boolean | buf | auto-indent new text | | autoprint, ap | Boolean | global | print current line in ex | | autoselect, as | Boolean | global | visibly mark searched text | | autotab, at | Boolean | buf | allow autoindent to use '\t'| | autowrite, aw | Boolean | global | save file before switching | | b | String | user | user variable | | background, bg | One-of | global | assumed background color | | backup, bk | Boolean | global | make *.bak file before write| | bang | Boolean | bang | writing with a '!' ? | | bb | String | buf | user variable per buffer | | beautify, bf | Boolean | global | strip ctrl chars from files | | binary, bin | Boolean | global | -b flag for binary files | | bitsperchar, bits | Number | global | character size (always 8) | | blinktime, xbt | Number | x11 | cursor blink rate, 1/10 Sec | | blkcache, cache | Number | global | number of blocks in cache | | blkfill, bfill | Number | global | initial chars per text block| | blkgrow, bgr | Number | global | allocation table parameter | | blkhash, hash | Number | global | size of cache hash table | | blkhit, bh | Number | global | # of block requests in cache| | blkmiss, bm | Number | global | # of block req. not in cache| | blksize, bsz | Number | global | size of cache block | | blkwrite, bw | Number | global | # of blocks written | | boldfont, xfb | String | x11 | name of bold font | | borderwidth, xbw | Number | x11 | size of text area's border | | bufchars, bc | Number | buf | number of characters | | bufdisplay, bd | String | buf | default display mode | | bufid, bufferid | Number | buf | ID number of user buffer | | buflines, bl | Number | buf | number of lines | | bufname, buffer | String | buf | name of buffer | | c | String | user | user variable | | cancel, Cancel | String | x11 | locale's Cancel label | | ccprg, cp | String | buf | shell command for :cc | | cleantext, ct | Packed | global | Rules for erasing old text | | codepage, cp | Number | win32 | console character set | | columns, cols | Number | win | width of window | | completebinary, cob | Boolean | global | complete names of binaries? | | controlfont, xfc | String | x11 | name of toolbar font | | d | String | user | user variable | | dblclicktime, xdct | Number | x11 | double-click speed, 1/10 Sec| | defaultreadonly, dro| Boolean | global | assume all files readonly | | digraph, dig | Boolean | global | allow X-backspace-Y entry | | directory, dir | String | global | where to store temp files | | display, mode | String | win | name of current display mode| | e | String | user | user variable | | edcompatible, ed | Boolean | global | remember regsub flags | | edited, samename | Boolean | buf | buffer loaded from filename | | elvispath, epath | String | global | list of possible config dirs| | equalprg, ep | String | buf | shell command for = operator| | errlines | Number | buf | buflines when :make was run | | errorbells, eb | Boolean | global | ring bell for error message | | eventerrors, ee | Boolean | global | allow error msg during event| | eventignore, ei | String | global | list of events to ignore | | exitcode, exit | Number | global | exit code of Elvis process | | exrc, ex | Boolean | global | interpret ./.exrc file | | exrefresh, er | Boolean | global | redraw scrn after each line | | f | String | user | user variable | | false, False | String | global | locale's False value | | filename, file | String | buf | name of file in buffer | | filenamerules, fnr | Packed | global | how to parse file names | | firstx, xpos | Number | x11 | horiz. position of first win| | firsty, ypos | Number | x11 | vert. position of first win | | flash, vbell | Boolean | global | substitute flash for bell | | focusnew, fn | Boolean | x11 | force focus into new window | | folding, fold | Boolean | win | enable folding | | font, fnt | String | windows| base font | | g | String | user | user variable | | gdefault, gd | Boolean | global | default change all instances| | gui | String | global | name of user interface | | guidewidth, gw | Tab-list| buf | draw vertial lines on screen| | h | String | user | user variable | | hardtabs, ht | Number | global | width of terminal's tabs | | help, Help | String | x11 | locale's Help label | | hllayers, hll | Number | win | how many layers to highlight| | hlobject, hlo | String | buf | type of object to highlight | | hlsearch, hls | Boolean | global | highlight all marches | | home | String | global | home directory | | i | String | user | user variable | | icon | Boolean | x11 | use the built-in icon? | | iconic | Boolean | x11 | windows start out iconified | | iconimage, ii | String | (gui) | window icon | | ignorecase, ic | Boolean | global | uppercase matches lowercase | | includepath, inc | String | syntax | where to find #include files| | incsearch, is | Boolean | global | / and ? search incrementally| | initialstate, init | One-Of | global | command mode of new windows | | initialsyntax, isyn | Boolean | buf | start in "syntax" mode? | | inputtab, it | One-Of | buf | input mode's (Tab) key | | internal | Boolean | buf | Elvis requires this buffer | | italicfont, xfi | String | x11 | name of italic font | | j | String | user | user variable | | k | String | user | user variable | | keytime, kt | Number | global | timeout for function keys | | keywordprg, kp | String | buf | shell command for K command | | l | String | user | user variable | | lines, rows | Number | win | height of window | | lisp | Boolean | buf | lisp mode (not supported) | | list, li | Boolean | win | show markups, newlines, etc.| | listchars, lcs | Packed | global | controls the "list" option | | locale | String | global | user's language | | locked, lock | Boolean | win | prevent any alterations | | lpcolor, lpcl | Boolean | lp | use colors when printing | | lpcolumns, lpcols | Number | lp | width of printer page | | lpcontrast, lpct | Number | lp | minimum color darkness 0-100| | lpconvert, lpcvt | Boolean | lp | convert Latin-1 to PC-8 | | lpcrlf, lpc | Boolean | lp | printer needs CR-LF newline | | lpformfeed, lpff | Boolean | lp | send form-feed after last pg| | lpheader, lph | Boolean | lp | print header at top of page | | lplines, lprows | Number | lp | length of printer page | | lpnumber, lpn | Boolean | lp | print line numbers in margin| | lpoptions, lpopt | String | lp | driver-specific options | | lpout, lpo | String | lp | printer file or filter | | lptype, lpt | String | lp | printer type | | lpwrap, lpw | Boolean | lp | simulate line-wrap | | m | String | user | user variable | | magic, ma | Boolean | global | use normal regexp syntax | | magicchar, mac | String | global | list of metacharacters | | magicname, man | Boolean | global | allow $name substitution | | magicperl, map | Boolean | global | Perl-compatible \b | | makeprg, mp | String | buf | shell command for :make | | maplog, mlog | One of | global | logging: off, reset, append | | maptrace, mt | One of | global | debugger: off, run, or step | | matchchar, mc | String | global | characters matched by % | | menubar, mb | Boolean | windows| enable the menubar | | mesg | Boolean | global | disable SysAdmin messages | | modeline, ml | Boolean | global | interpret modelines | | modelines, mls | Number | global | positions of modelines | | modified, mod | Boolean | buf | buffer differs from file | | more, mo | Boolean | global | allow "Hit <Enter>" prompt | | n | String | user | user variable | | nearscroll, ns | Number | global | scroll vs. jump¢er param| | newfile, new | Boolean | buf | filename doesn't exist yet | | newsession, newses | Boolean | global | session file is new | | nonascii, asc | One-Of | global | how to display non-ascii | | novice | Boolean | global | beginner mode | | number, nu | Boolean | win | display line numbers | | o | String | user | user variable | | optimize, op | Boolean | global | run faster | | optionwidth, ow | Number | global | widths of ":set all" values | | os | String | global | name of operating system | | outlinemono, om | Number | x11 | char outlining for X11-mono | | p | String | user | user variable | | paragraphs, para | String | buf | nroff paragraph commands | | partiallastline, pll| Boolean | buf | file didn't end with newline| | pollfrequency, pf | Number | global | rate of testing for ^C | | prefersyntax, psyn | String | global | when to set initialsyntax | | previouscommand | String | global | previous shell command line | | previousdir, pdir | String | global | previous directory name | | previousfile | String | global | name of alternate file | | previousfileline | Number | global | line# from previousfile | | previoustag, ptag | String | global | previous search tag | | program, argv0 | String | global | invocation name of Elvis | | prompt | Boolean | global | issue ":" prompt in ex mode | | putstyle, ps | One of | buf | type of text in a cut buffer| | q | String | user | user variable | | r | String | user | user variable | | readeol, reol | One of | buf | newline mode when reading | | readonly, ro | Boolean | buf | don't overwrite filename | | recovering, rflag | Boolean | global | recovering after a crash | | redraw | Boolean | global | redraw screen during input | | remap | Boolean | global | allow key maps to use maps | | report | Number | global | minimum # lines to report | | retain, ret | Boolean | buf | keep buffer in session file | | ruler, ru | Boolean | win | display cursor's line/column| | s | String | user | user variable | | saveregexp, sre | Boolean | global | remember regexp to use as //| | scroll, scr | Number | win | scroll amount for ^D/^U | | scrollbar, sb | Boolean | (gui) | enable the scrollbar | | scrollbarleft, xsl | Boolean | x11 | enable scrollbar on side | | scrollbartime, xst | Number | x11 | delay for scrollbar repeat | | scrollbarwidth, xsw | Number | x11 | size of scrollbar, in pixels| | scrollbgimage, sbi | Boolean | (gui) | scroll background image | | scrollwheelspeed,sws| Number | (gui) | adjust speed of scroll wheel| | sections, sect | String | buf | nroff section commands | | security, sec | One-of | global | normal, safer,or restricted | | sentenceend, se | String | global | punct at end of sentence | | sentencegap, sg | Number | global | spaces required after sq | | sentencequote, sq | String | global | punct allowed after se | | session, ses | String | global | name of session file | | sessionpath, spath | String | global | list of possible session dir| | shell, sh | String | global | name of shell program | | shiftwidth, sw | Tab-List| buf | width used by < and > | | showmarkups, smu | Boolean | global | show markup at cursor | | showmatch, sm | Boolean | win | highlight matching parens | | showmode, smd | Boolean | win | display the command state | | sidescroll, ss | Number | win | sideways scrolling amount | | smartargs, sa | Boolean | buf | show args when inputing func| | smartcase, scs | Boolean | global | defeat ignorecase if upper | | smarttab, sta | Boolean | global | if indenting, (Tab) shifts | | spell, sp | Boolean | global | highlight misspelled words | | spellautoload, sal | Boolean | global | load whole dict when needed | | spelldict, spd | String | global | name of dictionary file | | spellsuffix, sps | String | global | list of suffixes | | stagger | Number | x11 | offset for next new window | | statusbar, stb | Boolean | (gui) | enable the statusbar | | stopshell, ssh | String | x11 | interactive shell command | | submit, Submit | String | x11 | locale's Submit label | | sync | Boolean | global | force changes to disk | | t | String | user | user variable | | tabstop, ts | Tab-List| buf | widths of tabstop columns | | taglength, tl | Number | global | significant length of tags | | tagprg, tp | String | global | external tag search program | | tags, tagpath | String | global | list of possible tag files | | tagstack, tsk | Boolean | global | remember origin of tag srch | | tempsession, temp | Boolean | global | delete session file on exit | | term, ttytype | String | tcap | terminal's termcap entry | | terse, te | Boolean | global | don't translate messages | | textcursor, tc | Number | x11 | one of hollow, opaque, xor | | textwidth, tw | Number | buf | width for word-wrap, or 0 | | timeout, to | Boolean | global | allow timeout for maps? | | timestamp, time | String | buf | time when file was modified | | toolbar, tb | Boolean | (gui) | enable the toolbar | | true, True | String | global | locale's True value | | ttycolumns, ttycols | Number | tcap | width of screen | | ttyrows, ttylines | Number | tcap | height of screen | | ttyitalic, ttyi | Boolean | tcap | okay to use "dim" for italic| | ttyunderline, ttyu | Boolean | tcap | okay to mix color & underln | | ttywrap, ttyw | Boolean | tcap | trust termcap's line wrap | | tweaksection, twks | Boolean | global | allow text before { section?| | u | String | user | user variable | | undolevels, ul | Number | buf | number of undoable commands | | userprotocol, up | Boolean | buf | URL, user-defined protocol | | usertime, ut | Number | global | timeout for multi-key maps | | v | String | user | user variable | | verbose | Numeric | global | give more status messages | | version, ver | String | global | Elvis version number (2.2) | | w | String | user | user variable | | warn | Boolean | global | warn if file not saved | | warningbells, wb | Boolean | global | ring bell for warning msg | | warpback, xwb | Boolean | x11 | upon exit, point to xterm | | warpto, wt | One of | x11 | ^W^W forces pointer movement| | window, wi | Number | global | lines to show for :z command| | windowid, id | Number | win | ID number of current window | | wrap | Boolean | win | how long lines are displayed| | wrapmargin, wm | (weird) | win | set textwidth from right | | wrapscan, ws | Boolean | global | searching wraps at EOF<->BOF| | writeany, wa | Boolean | global | don't warn of existing file | | writeeol, weol | One of | global | newline mode when writing | | ww | String | win | user variable per window | | x | String | user | user variable | | xcolumns, xcols | Number | x11 | width of new windows | | xencoding, xe | String | x11 | registry & encoding of fonts| | xrows, xlines | Number | x11 | height of new windows | | y | String | user | user variable | | z | String | user | user variable | ^---------------------^---------^--------^-----------------------------^