aboutsummaryrefslogtreecommitdiff
path: root/vis.1
diff options
context:
space:
mode:
Diffstat (limited to 'vis.1')
-rw-r--r--vis.11259
1 files changed, 0 insertions, 1259 deletions
diff --git a/vis.1 b/vis.1
deleted file mode 100644
index 1b8652c..0000000
--- a/vis.1
+++ /dev/null
@@ -1,1259 +0,0 @@
-.Dd December 5, 2016
-.Dt VIS 1
-.Os Vis VERSION
-.
-.Sh NAME
-.Nm vis
-.Nd a highly efficient text editor
-.
-.Sh SYNOPSIS
-.Nm
-.Op Fl v
-.Op Ic +command
-.Op Fl -
-.Op Ar files ...
-.
-.Sh DESCRIPTION
-.Nm
-is a highly efficient screen-oriented text editor combining the strengths of both
-.Nm vi(m)
-and
-.Nm sam .
-.
-This manual page is intended for users already familiar with
-.Nm vi Ns / Ns Nm sam .
-Anyone else should almost certainly read a good tutorial on
-either editor before this manual page.
-.
-The following options are available:
-.Bl -tag -width indent
-.It Fl v
-Print version information and exit.
-.
-.It Sy +command
-Execute command after loading file.
-.
-.It Fl -
-Denotes the end of the options. Arguments after this will be handled as a
-file name.
-.\" TODO mention +command
-.El
-.Pp
-The special file
-.Cm -
-instructs
-.Nm
-to read from standard input in which case
-.Ic :wq
-will write to standard output, thereby enabling usage as an interactive filter.
-.Pp
-If standard input is redirected and all input is consumed,
-.Nm
-will open /dev/tty to gather further commands. Failure to do so results in
-program termination.
-.
-.Ss Modes
-.Nm
-employs the same
-.Em modal
-editing approach as
-.Nm vi .
-It supports a normal, operator pending, insert, replace and visual
-(in both line and character wise variants) mode.
-.\" TODO: add short per-mode descripton?
-.Pp
-The visual block and ex modes are deliberately not implemented,
-instead
-.Nm
-has built in support for multiple cursors/selections and an
-.Em interactive
-variant of the structural regular expression based command language of
-.Nm sam .
-.
-.Ss Undo/Redo
-.Nm
-uses an undo tree to keep track of text revisions. The
-.Ic u
-(undo) and
-.Aq Ic C-r
-(redo) commands can be used to traverse the tree along the main branch.
-Additionally
-.Ic g+
-and
-.Ic g-
-traverse the history in chronological order. Furthermore the
-.Ic :earlier
-and
-.Ic :later
-commands provide means to restore the text to an arbitrary state.
-.
-.Ss Marks
-A mark associates a given file position to a symbolic name.
-A mark becomes invalid once the underlying file content changes (e.g. it
-being deleted or replaced). If said changes are later undone the mark becomes
-valid again.
-.Bl -tag -width indent
-.It a-z
-general purpose marks
-.It <
-start of the last selected visual area in current file
-.It >
-end of the last selected visual area in current file
-.El
-.Pp
-No marks across files are supported. Marks are not preserved over editing sessions.
-.
-.Ss Registers
-Registers can hold arbitrary data which can later be re-inserted into
-the file or executed as a macro. Supported registers include:
-.Bl -tag -width indent
-.It \(dqa-\(dqz
-general purpose registers
-.It \(dqA-\(dqZ
-append to corresponding general purpose register
-.It \(dq*, \(dq+
-system clipboard integration via shell script
-.Xr vis-clipboard 1
-.It \(dq0
-yank register, least recently yanked range
-.It \(dq/
-search register, least recently used search pattern
-.It \(dq:
-command register, least recently executed command
-.It \(dq_
-black hole (/dev/null) register, ignore content is always empty
-.El
-.Pp
-If no explicit register is specified a default register is used.
-.
-.Ss Macros
-.
-The general purpose registers
-.Cm \(dqa-\(dqz
-can be used to record macros. Use
-one of
-.Cm \(dqA-\(dqZ
-to append to an existing macro.
-.Ic q
-starts a recording,
-.Ic @
-plays it back.
-.Ic @@
-refers to the least recently recorded macro.
-.Ic @:
-repeats the last :-command.
-.Ic @/
-is equivalent to
-.Ic n
-in normal mode.
-.
-.Ss Jump list and Change list
-.
-A per window, fixed sized file local jump list (navigate with
-.Aq Ic C-O
-and
-.Aq Ic C-I )
-and change list (navigate with
-.Ic g;
-and
-.Ic g, )
-is supported.
-.
-.Ss Encoding, Tab and Newline handling
-.
-.Nm
-always assumes the input file to be UTF-8 encoded. If you wish to edit
-files with legacy encodings, use
-.Xr iconv 1
-to convert them as needed.
-.Aq Tab
-can optionally be expanded to a configurable number of spaces (see
-.Sx "SET OPTIONS" ) .
-The first line ending in the file determines what will be inserted when pressing
-.Aq Enter
-(defaults to \\n).
-.
-.Ss Mouse support
-The mouse is currently not used at all.
-.
-.Sh SAM COMMANDS
-.
-.Nm
-supports an interactive variant of the structural regular expression based command language introduced by
-.Xr sam 1 .
-.
-.Ss Regular expressions
-.Nm
-currently defers regular expression matching to the underlying C library.
-It uses what POSIX refers to as
-.Dq Extended Regular Expressions
-as described in
-.Xr regex 7 "."
-.
-Additonally \[rs]n and \[rs]t may be used to refer to newlines and tabs, respectively.
-The
-.Cm "."
-atom matches any character except newline.
-.
-The empty regular expression stands for the last complete expression encountered.
-.
-.Ss Addresses
-An address identifies a substring (or range) in a file. In the following
-.Do
-character
-.Sy n
-.Dc
-means the null string after the
-.Sy n\fR-th
-character in the file, with 1 the first character in the file.
-.Do
-Line
-.Sy n
-.Dc
-means the
-.Sy n\fR-th
-match, starting at the beginning of the file, of the regular expression
-.Li ".*\[rs]n?" .
-.Pp
-All windows always have at least one current substring which
-is the default address. In sam this is referred to as
-.Sy dot .
-In
-.Nm
-multiple
-.Dq dots
-can exist at the same time.
-In normal mode each cursor induces such a range, representing the
-character it is currently over. Similarly, in visual mode each
-selection serves as a default address.
-.Ss Simple addresses
-.Bl -tag -width indent
-.It Ic #n
-The empty string after character
-.Sy n ;
-.Li #0
-is the beginning of the file.
-.It Ic n
-Line
-.Sy n .
-.It Ic /regexp/
-.It Ic ?regexp?
-The substring that matches the regular expression, found by looking
-towards the end
-.Pq Li /
-or beginning
-.Pq Li \&?
-of the file. The search does not wrap around when hitting the end
-.Pq start
-of the file.
-.It Ic 0
-The string before the first full line.
-This is not necessarily the null string; see
-.Li +
-and
-.Li -
-below.
-.It Ic $
-The null string at the end of the file.
-.It Ic "."
-Dot, the current range.
-.It Ic "'m"
-The mark
-.Sy m
-in the file.
-.El
-.
-.Ss Compound addresses
-In the following,
-.Sy a1
-and
-.Sy a2
-are addresses.
-.Bl -tag -width indent
-.It Sy a1+a2
-The address
-.Sy a2
-evaluated starting at the end of
-.Sy a1 .
-.It Sy a1-a2
-The address
-.Sy a2
-evaluated looking the reverse direction starting at the beginning of
-.Sy a1 .
-.It Sy "a1,a2"
-The substring from the beginning of
-.Sy a1
-to the end of
-.Sy a2 .
-If
-.Sy a1
-is missing,
-.Li 0
-is substituted.
-If
-.Sy a2
-is missing,
-.Li $
-is substituted.
-.It Sy a1;a2
-Like
-.Dq Sy a1,a2
-but with
-.Sy a2
-evaluated at the end of, and range set to,
-.Sy a1 .
-.El
-.Pp
-The operators
-.Li +
-and
-.Li -
-are high precedence, while
-.Li ","
-and
-.Li ";"
-are low precedence.
-.Pp
-In both
-.Li +
-and
-.Li -
-forms, if
-.Sy a2
-is a line or character address with a missing number, the number defaults to 1.
-If
-.Sy a1
-is missing,
-.Li "."
-is substituted.
-If both
-.Sy a1
-and
-.Sy a2
-are present and distinguishable,
-.Li +
-may be elided.
-.Sy a2
-may be a regular expression; if it is delimited by
-.Dq Li \&?
-characters, the effect of the
-.Li +
-or
-.Li -
-is reversed.
-.
-The
-.Li %
-sign is an alias for
-.Li ","
-and hence
-.Li 0,$ .
-.
-It is an error for a compound address to represent a malformed substring.
-.
-.Ss Commands
-In the following, text demarcated by slashes represents text delimited by any printable ASCII character except alphanumerics.
-Any number of trailing delimiters may be elided, with multiple elisions then representing null strings, but the first delimiter must always be present.
-In any delimited text, newline may not appear literally;
-.Li \[rs]n
-and
-.Li \[rs]t
-may be typed for newline and tab;
-.Li \[rs]/
-quotes the delimiter, here
-.Li / .
-Backslash is otherwise interpreted literally.
-.Pp
-Most commands may be prefixed with an address to indicate their range
-of operation. If a command takes an address and none is supplied, a
-default address is used. In normal mode this equates to the character
-the cursor is currently over. If only one cursor exists
-.Ic x
-and
-.Ic y
-default to the whole file
-.Li "0,$" .
-In normal mode the write commands
-.Ic w
-and
-.Ic wq
-always apply to the whole file.
-Commands are executed once for every cursor.
-In visual mode the commands are applied to every selection
-as if an implicit
-.Ic x
-command, matching the existing selections, was present.
-.
-.Pp
-In the description,
-.Dq range
-is used to represent whatever address is supplied.
-.Pp
-If after a successful command execution no selections remain,
-the editor will switch to normal mode, otherwise it remains in
-visual mode. This allows
-.Em interactive
-refinements of ranges.
-.
-.\" Many commands set the value of dot as a side effect.
-.\" If so, it is always to the
-.\" .Dq result
-.\" of the change: the empty string for a deletion, the new text for an insertion, etc.
-.\" .Po
-.\" but see the
-.\" .Sy s
-.\" and
-.\" .Sy e
-.\" commands
-.\" .Pc "."
-.Ss Text commands
-.Bl -tag -width indent
-.It Ic a/text/
-Insert the text into the file after the range.
-.\" Set dot.
-.Pp
-May also be written as
-.Bd -literal -offset indent
- a
- lines
- of
- text
- .
-.Ed
-.It Ic c \fR or i
-Same as
-.Sy a ,
-but
-.Sy c
-replaces the text, while
-.Sy i
-inserts
-.Em before
-the range.
-.It Sy d
-Delete the text in range.
-.\" Set dot.
-.It Sy s/regexp/text/
-Substitute
-.Sy text
-for the first match of the regular expression in the range.
-Currently implemented in terms of
-.Xr sed 1 "."
-.El
-.
-.Ss Display commands
-.Bl -tag -width Ds
-.It Ic p
-Create a new selection for the range. If empty, create a new cursor.
-.El
-.
-.Ss I/O commands
-.Bl -tag -width indent
-.It Ic e[!] Bq file name
-Replace the file by the contents of the named external file.
-If no file name is given, reload file from disk.
-.It Ic r file name
-Replace the text in the range by the contents of the named external file.
-.\" Set dot.
-.It Ic w[!] Bq file name
-Write the range
-.Po
-default
-.Li 0,$
-.Pc
-to the named external file.
-.It Ic wq[!] Bq file name
-Same as
-.Ic w ,
-but close file afterwards.
-.El
-.Pp
-If the file name argument is absent from any of these, the current file name is used.
-.Ic e
-always sets the file name,
-.Ic w
-will do so if the file has no name.
-Forcing the
-.Ic e
-command with
-.Cm "!"
-will discard any unsaved changes. Forcing
-.Ic w
-will overwrite the file on disk even if it has been externally modified
-since loading it. Write commands with a non-default addresses and no
-file name are destructive and need always to be forced.
-.Bl -tag -width indent
-.It Ic "< shell-command"
-Replace the range by the standard output of the shell command.
-.It Ic "> shell-command"
-Sends the range to the standard input of the shell command.
-.It Ic "| shell-command"
-Send the range to the standard input, and replace it by the standard output, of the shell command.
-.It Ic "! shell-command"
-Run interactive shell command, redirect keyboard input to it.
-.It Ic "cd directory"
-Change working directory.
-If no directory is specified,
-.Ev "$HOME"
-is used.
-.El
-.Pp
-In any of
-.Ic "<" ,
-.Ic ">" ,
-.Ic "|" ,
-or
-.Ic "!" ,
-if the shell command is omitted, the last shell command
-.Pq "of any type"
-is substituted.
-.Ss Loops and conditionals
-.Bl -tag -width indent
-.It Ic x/regexp/ Bq command
-For each match of the regular expression in the range, run the command with range set to the match.
-If the regular expression and its slashes are omitted,
-.Li "/.*\[rs]n/"
-is assumed.
-Null string matches potentially occur before every character of the range and at the end of the range.
-.It Ic y/regexp/ Bq command
-Like
-.Ic x ,
-but run the command for each substring that lies before, between, or after the matches that would be generated by
-.Ic x .
-There is no default behavior.
-Null substrings potentially occur before every character in the range.
-.It Ic "X/regexp/ command"
-For each file whose file name matches the regular expression, make that the current file and run the command.
-If the expression is omitted, the command is run in every file.
-.It Ic "Y/regexp/ command"
-Same as
-.Ic X ,
-but for files that do not match the regular expression, and the expression is required.
-.It Ic "g/regexp/ command"
-.It Ic "v/regexp/ command"
-If the range contains
-.Po
-.Ic g
-.Pc
-or does not contain
-.Po
-.Ic v
-.Pc
-a match for the expression, run command on the range.
-.El
-.Pp
-These may be nested arbitrarily deeply.
-An empty command in an
-.Ic x
-or
-.Ic y
-defaults to
-.Ic p .
-.Ic X ,
-.Ic Y ,
-.Ic g
-and
-.Ic v
-do not have defaults.
-.
-.Ss Grouping and multiple changes
-Commands may be grouped by enclosing them in curly braces.
-Semantically, the opening brace is like a command: it takes an
-.Pq optional
-address and runs each sub-command on the range.
-Commands within the braces are executed sequentially, and changes made by one command are visible to other commands.
-.
-Braces may be nested arbitrarily.
-.
-.Sh VI(M) KEY BINDINGS
-.
-In the following sections angle brackets are used to denote special keys.
-The prefixes
-.Cm C- ,
-.Cm S- ,
-and
-.Cm M-
-are used to refer to the
-.Aq Ctrl ,
-.Aq Shift
-and
-.Aq Alt
-modifiers, respectively.
-.Pp
-All active key bindings can be listed at runtime using the
-.Cm :help
-command.
-.
-.Ss Operators
-.
-Operators perform a certain operation an a text range indicated by either a
-motion, a text object or an existing selection.
-.
-.Bl -tag -width indent
-.It c
-change, delete range and enter insert mode
-.It d
-delete range
-.It !
-filter range through external shell command
-.It =
-indent, currently an alias for gq
-.It gq
-format, filter range through
-.Xr fmt 1
-.It gu
-make lowercase
-.It gU
-make uppercase
-.It J
-join lines, insert spaces in between
-.It gJ
-join lines remove any delimiting white spaces
-.It p
-put, insert register content
-.It <
-shift-left, decrease indent
-.It >
-shift-right, increase indent
-.It ~
-swap case
-.It y
-yank, copy range to register
-.El
-.Pp
-Operators can be forced to work line wise by specifying
-.Cm V .
-.
-.Ss Motions
-.
-.\" TODO? more formal definition: pos -> [min(pos, f(pos)), max(pos, f(pos))]
-Motions take an initial file position and transform it to a destination file position,
-thereby defining a range.
-.\" TODO define word/WORD
-.
-.Bl -tag -width indent
-.It 0
-start of line
-.
-.It b
-previous start of a word
-.
-.It B
-previous start of a WORD
-.
-.It $
-end of line
-.
-.It e
-next end of a word
-.
-.It E
-next end of a WORD
-.
-.It F Aq char
-to next occurrence of char to the left
-.
-.It f Aq char
-to next occurrence of char to the right
-.
-.It ^
-first non-blank of line
-.
-.It g0
-begin of display line
-.
-.It g$
-end of display line
-.
-.It ge
-previous end of a word
-.
-.It gE
-previous end of a WORD
-.
-.It gg
-begin of file
-.
-.It G
-goto line or end of file
-.
-.It gj
-display line down
-.
-.It gk
-display line up
-.
-.It g_
-last non-blank of line
-.
-.It gm
-middle of display line
-.
-.It |
-goto column
-.
-.It h
-char left
-.
-.It H
-goto top/home line of window
-.
-.It j
-line down
-.
-.It k
-line up
-.
-.It l
-char right
-.
-.It L
-goto bottom/last line of window
-.
-.It ` Aq mark
-go to mark
-.
-.It ' Aq mark
-go to start of line containing mark
-.
-.It %
-match bracket
-.
-.It M
-goto middle line of window
-.
-.It ]]
-next end of C-like function
-.
-.It }
-next paragraph
-.
-.It )
-next sentence
-.
-.It ][
-next start of C-like function
-.
-.It N
-repeat last search backwards
-.
-.It n
-repeat last search forward
-.
-.It []
-previous end of C-like function
-.
-.It [{
-previous start of block
-.
-.It ]}
-next start of block
-.
-.It [(
-previous start of parenthese pair
-.
-.It ])
-next start of parenthese pair
-.
-.It {
-previous paragraph
-.
-.It "("
-previous sentence
-.
-.It [[
-previous start of C-like function
-.
-.It ;
-repeat last to/till movement
-.
-.It ,
-repeat last to/till movement but in opposite direction
-.
-.It #
-search word under cursor backwards
-.
-.It *
-search word under cursor forwards
-.
-.It T Aq char
-till before next occurrence of char to the left
-.
-.It t Aq char
-till before next occurrence of char to the right
-.
-.It ? pattern
-to next match of pattern in backward direction
-.
-.It / pattern
-to next match of pattern in forward direction
-.
-.It w
-next start of a word
-.
-.It W
-next start of a WORD
-.El
-.
-.Ss Text objects
-.\" TODO? more formal definition: text-object: pos -> [a, b]
-Text objects take an initial file position and transform it to a range
-where the former does not necessarily have to be contained in the latter.
-.
-All of the following text objects are implemented in an inner variant
-(prefixed with
-.Cm i ")"
-where the surrounding white space or delimiting characters are not part
-of the resulting range and a normal variant (prefixed with
-.Cm a ")"
-where they are.
-.Bl -tag -width indent
-.
-.It w
-word
-.
-.It W
-WORD
-.
-.It s
-sentence
-.
-.It p
-paragraph
-.
-.It [,], (,), {,}, <,>, \&", ', `
-block enclosed by these symbols
-.El
-.Pp
-Further available text objects include:
-.Bl -tag -width indent
-.
-.It gn
-matches the last used search term in forward direction
-.
-.It gN
-matches the last used search term in backward direction
-.
-.It ae
-entire file content
-.
-.It ie
-entire file content except for leading and trailing empty lines
-.
-.It af
-C-like function definition including immediately preceding comments
-.
-.It if
-C-like function definition only function body
-.
-.It al
-current line
-.
-.It il
-current line without leading and trailing white spaces
-.El
-.
-.Ss Multiple Cursors and Selections
-.
-.Nm
-supports multiple cursors with immediate visual feedback. There always
-exists one primary cursor located within the current view port. Additional
-cursors can be created as needed. If more than one cursor exists,
-the primary one is styled differently.
-.Pp
-To manipulate multiple cursors use in normal mode:
-.Bl -tag -width indent
-.It Aq C-k
-create count new cursors on the lines above
-.It Aq C-M-k
-create count new cursors on the lines above the first cursor
-.It Aq C-j
-create count new cursors on the lines below
-.It Aq C-M-j
-create count new cursors on the lines below the last cursor
-.It Aq C-p
-remove primary cursor
-.It Aq C-n
-select word the cursor is currently over, switch to visual mode
-.It Aq C-u
-make the count previous cursor primary
-.It Aq C-d
-make the count next cursor primary
-.It Aq C-c
-remove the count cursor column
-.It Aq C-l
-remove all but the count cursor column
-.It Aq Tab
-try to align all cursor on the same column
-.It Aq Escape
-dispose all but the primary cursor
-.El
-.Pp
-The visual modes were enhanced to recognize:
-.Bl -tag -width indent
-.It I
-create a cursor at the start of every selected line
-.It A
-create a cursor at the end of every selected line
-.It Aq Tab
-left align selections by inserting spaces
-.It Aq S-Tab
-right align selections by inserting spaces
-.It Aq C-n
-create new cursor and select next word matching current selection
-.It Aq C-x
-clear (skip) current selection, but select next matching word
-.It Aq C-p
-remove primary cursor
-.It Aq C-u
-.It Aq C-k
-make the count previous cursor primary
-.It Aq C-d
-.It Aq C-j
-make the count next cursor primary
-.It Aq C-c
-remove the count cursor column
-.It Aq C-l
-remove all but the count cursor column
-.It +
-rotates selections rightwards count times
-.It -
-rotates selections leftwards count times
-.It \e
-trim selections, remove leading and trailing white space
-.It Aq Escape
-clear all selections, switch to normal mode
-.El
-.Pp
-In insert and replace mode:
-.Bl -tag -width indent
-.
-.It Aq S-Tab
-align all cursors by inserting spaces
-.El
-.
-.Sh VI(M) COMMANDS
-.
-Any unique prefix can be used to abbreviate a command.
-.
-.Ss File and Window management
-.
-A file must be opened in at least one window. If the last window displaying a
-certain file is closed all unsaved changes are discarded. Windows are equally
-sized and can be displayed in either horizontal or vertical fashion.
-.Bl -tag -width indent
-.It Cm :new
-open an empty window, arrange horizontally
-.It Cm :vnew
-open an empty window, arrange vertically
-.It Cm :open[!] Bq file name
-open a new window, displaying file name if given
-.It Cm :split Bq file name
-split window horizontally
-.It Cm :vsplit Bq file name
-split window vertically
-.It Cm :bdelete[!]
-close all windows which display the same file as the current one
-.It Cm :q[!]
-close currently focused window
-.It Cm :qall[!]
-close all windows, exit editor
-.El
-.Pp
-Commands taking a file name will invoke the
-.Xr vis-open 1
-utility, if given a file pattern or directory.
-.
-.Ss Runtime key mappings
-.Nm
-supports global as well as window local run time key mappings which are
-always evaluated recursively.
-.
-.Bl -tag -width indent
-.It Cm :map[!] <mode> <lhs> <rhs>
-add a global key mapping
-.It Cm :map-window[!] <mode> <lhs> <rhs>
-add a window local key mapping
-.It Cm :unmap <mode> <lhs>
-remove a global key mapping
-.It Cm :unmap-window <mode> <lhs>
-remove a window local key mapping
-.El
-In the above
-.Cm <mode>
-refers to one of
-.Ql normal ,
-.Ql insert ,
-.Ql replace ,
-.Ql visual ,
-.Ql visual-line
-or
-.Ql operator-pending ;
-.Cm <lhs>
-refers to the key to map and
-.Cm <rhs>
-is a key action or alias. An existing mapping may be overridden by forcing
-the map command by specifying
-.Cm "!" .
-.Pp
-Because key mappings are always recursive, doing something like:
-.Pp
-.Dl :map! normal j 2j
-.Pp
-will not work because it would enter an endless loop. Instead,
-.Nm
-uses pseudo keys referred to as key actions which can be used to invoke
-a set of available editor functions.
-.Ic :help
-lists all currently active key bindings as well as all available symbolic
-keys.
-.
-.Ss Keyboard Layout Specific Mappings
-.
-In order to facilitate usage of non-latin keyboard layouts,
-.Nm
-allows to map locale specific keys to their latin equivalents by means of the
-.Pp
-.Dl :langmap <locale-keys> <latin->keys>
-.Pp
-command. As an example, the following maps the movement keys in Russian layout:
-.Pp
-.Dl :langmap ролд hjkl
-.Pp
-If the key sequences have not the same length, the remainder of the longer
-sequence will be discarded.
-.Pp
-The defined mappings take effect
-in all non-input modes, i.e. everywhere except in insert and replace mode.
-.
-.Ss Undo/Redo
-.Bl -tag -width indent
-.It Ic :earlier Bq count
-revert to older text state
-.It Ic :later Bq count
-revert to newer text state
-.El
-.Pp
-If count is suffixed by either of
-.Sy d
-.Pq days ,
-.Sy h
-.Pq hours ,
-.Sy m
-.Pq minutes
-or
-.Sy s
-.Pq seconds
-it is interpreted as an offset from the current system time and the closest
-available text state is restored.
-.
-.Sh SET OPTIONS
-There are a small number of options that may be set
-.Pq or unset
-to change the editor's behavior using the
-.Cm :set
-command.
-This section describes the options, their abbreviations and their
-default values.
-.Pp
-In each entry below, the first part of the tag line is the full name
-of the option, followed by any equivalent abbreviations.
-The part in square brackets is the default value of the option.
-.Bl -tag -width indent
-.It Cm shell Bq \&"/bin/sh\&"
-User shell to use for external commands, overrides
-.Cm $SHELL
-and shell field of password database
-.Cm /etc/passwd
-.It Cm escdelay Bq 50
-Milliseconds to wait before deciding whether an escape sequence should
-be treated as an
-.Aq Cm Escape
-key.
-.It Cm tabwidth , tw Bq 8
-Display width of a tab and number of spaces to use if
-.Cm expandtab
-is enabled.
-.It Cm autoindent , ai Bq off
-Automatically indent new lines by copying white space from previous line.
-.It Cm expandtab , et Bq off
-Whether
-.Aq Cm Tab
-should be expanded to
-.Cm tabwidth
-spaces.
-.It Cm number , nu Bq off
-Display absolute line numbers.
-.It Cm relativenumbers , rnu Bq off
-Display relative line numbers.
-.It Cm cursorline , cul Bq off
-Highlight line primary cursor resides on.
-.It Cm colorcolumn , cc Bq 0
-Highlight a fixed column.
-.It Cm horizon Bq 32768
-How many bytes back the lexer will look to synchronize parsing.
-.It Cm theme Bq \&"default-16\&" or \&"default-256\&"
-Color theme to use, name without file extension.
-.It Cm syntax Bq off
-Syntax highlighting lexer to use, name without file extension.
-.It Cm show-tabs Bq off
-Whether to display replacement symbol instead of tabs.
-.It Cm show-newlines Bq off
-Whether to display replacement symbol instead of newlines.
-.It Cm show-tabs Bq off
-Whether to display replacement symbol instead of newlines.
-.It Cm show-spaces Bq off
-Whether to display replacement symbol instead of blank cells.
-.El
-.
-.Sh CONFIGURATION
-.
-.Nm
-uses Lua for configuration and scripting purposes.
-During startup
-.Pa visrc.lua
-(see the
-.Sx FILES
-section) is sourced which can be used to set personal configuration
-options. As an example the following will enable the display of line
-numbers:
-.Pp
-.Dl vis:command('set number')
-.
-.Sh ENVIRONMENT
-.Bl -tag -width indent
-.It Ev VIS_PATH
-The default path to use to load Lua support files.
-.It Ev HOME
-The home directory used for the
-.Ic cd
-command if no argument is given.
-.It Ev TERM
-The terminal type to use to initialize the curses interface, defaults to
-.Sy xterm
-if unset.
-.It Ev SHELL
-The command shell to use for I/O related commands like
-.Ic "!" ,
-.Ic ">" ,
-.Ic "<"
-and
-.Ic "|" .
-.It Ev XDG_CONFIG_HOME
-The configuration directory to use, defaults to
-.Pa $HOME/.config
-if unset.
-.El
-.
-.Sh ASYNCHRONOUS EVENTS
-.Bl -tag -width indent
-.It Dv SIGSTOP
-Suspend editor.
-.It Dv SIGCONT
-Resume editor.
-.It Dv SIGBUS
-An
-.Xr mmap 2
-ed file got truncated, unsaved file contents will be lost.
-.It Dv SIGHUP
-.It Dv SIGTERM
-Restore initial terminal state. Unsaved file contents will be lost.
-.It Dv SIGINT
-When an interrupt occurs while an external command is being run it is terminated.
-.It Dv SIGWINCH
-The screen is resized.
-.El
-.
-.Sh FILES
-Upon startup
-.Nm
-will source the first
-.Pa visrc.lua
-configuration file found from these locations:
-.Bl -bullet
-.It
-.Pa $VIS_PATH
-.It
-The location of the
-.Nm
-binary (on systems where
-.Pa /proc/self/exe
-is available).
-.It
-.Pa $XDG_CONFIG_HOME/vis
-where
-.Pa $XDG_CONFIG_HOME
-refers to
-.Pa $HOME/.config
-if unset.
-.
-.It
-.Pa /usr/local/share/vis
-or
-.Pa /usr/share/vis
-depending on the build configuration.
-.El
-.
-.Sh EXIT STATUS
-.Ex -std
-.
-.Sh EXAMPLES
-Use
-.Nm
-as an interactive filter as used by
-.Xr dvtm 1 :
-.Pp
-.Dl $ { echo Pick your number; seq 1 10; } | vis - > choice
-.Pp
-Use the
-.Xr vis-open 1
-based file browser to list all C language source files:
-.Pp
-.Dl :e *.c
-.Pp
-Spawn background process and pipe range to its standard input:
-.Pp
-.Dl :> { plumber <&3 3<&- & } 3<&0 1>&- 2>&-
-.Sh SEE ALSO
-.Xr vis-clipboard 1 ,
-.Xr vis-complete 1 ,
-.Xr vis-menu 1 ,
-.Xr vis-open 1 ,
-.Xr vi 1
-and
-.Xr sam 1
-.Pp
-.Lk http://doc.cat-v.org/bell_labs/sam_lang_tutorial/sam_tut.pdf "A Tutorial for the Sam Command Language"
-by Rob Pike
-.Pp
-.Lk http://doc.cat-v.org/plan_9/4th_edition/papers/sam/ "The Text Editor sam"
-by Rob Pike
-.Pp
-.Lk http://man.cat-v.org/plan_9/1/sam "Plan9 manual page for sam(1)"
-.Pp
-.Lk http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf "Structural Regular Expressions"
-by Rob Pike
-.Pp
-.Lk http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html "vi - screen-oriented (visual) display editor"
-.St -p1003.1-2013
-.
-.Sh STANDARDS
-.Nm
-does not strive to be
-.St -p1003.1-2013
-compatible, but shares obvious similarities with the
-.Nm vi
-utility.
-.
-.\" .Sh HISTORY
-.\" TODO something about vi(m) and sam history
-.
-.Sh AUTHORS
-.Nm
-is written by
-.An Marc André Tanner Aq mat at brain-dump.org
-.
-.Sh BUGS
-On some systems there already exists a
-.Nm
-binary, thus causing a name conflict.