1VIS(1)                    BSD General Commands Manual                   VIS(1)
2

NAME

4     vis — a highly efficient text editor
5

SYNOPSIS

7     vis [-v] [+command] [--] [files ...]
8

DESCRIPTION

10     vis is a highly efficient screen-oriented text editor combining the
11     strengths of both vi(m) and sam.  This manual page is intended for users
12     already familiar with vi/sam.  Anyone else should almost certainly read a
13     good tutorial on either editor before this manual page.  The following
14     options are available:
15
16     -v      Print version information and exit.
17
18     +command
19             Execute command after loading file.
20
21     --      Denotes the end of the options.  Arguments after this will be
22             handled as a file name.
23
24     The special file - instructs vis to read from standard input in which
25     case :wq will write to standard output, thereby enabling usage as an
26     interactive filter.
27
28     If standard input is redirected and all input is consumed, vis will open
29     /dev/tty to gather further commands.  Failure to do so results in program
30     termination.
31
32   Selections
33     vis uses selections as core editing primitives.  A selection is a non-
34     empty, directed range with two endpoints called cursor and anchor.  A
35     selection can be anchored in which case the anchor remains fixed while
36     only the position of the cursor is adjusted. For non-anchored selections
37     both endpoints are updated. A singleton selection covers one character on
38     which both cursor and anchor reside. There always exists a primary selec‐
39     tion which remains visible (i.e. changes to its position will adjust the
40     viewport).
41
42   Modes
43     vis employs the same modal editing approach as vi.  It supports a
44     ‘normal’, ‘operator pending’, ‘insert’, ‘replace’ and ‘visual’ (in both
45     line and character wise variants) mode.  The visual block and ex modes
46     are deliberately not implemented, instead vis has built in support for
47     multiple selections and an interactive variant of the structural regular
48     expression based command language of sam.
49
50     In normal mode all selections are non-anchored and reduced to a single
51     character.
52
53   Undo/Redo
54     vis uses an undo tree to keep track of text revisions.  The u (undo) and
55C-r⟩ (redo) commands can be used to traverse the tree along the main
56     branch.  g+ and g- traverse the history in chronological order.  The
57     :earlier and :later commands provide means to restore the text to an
58     arbitrary state.
59
60   Marks
61     A mark associates a symbolic name to a set of selections.  A stored
62     selection becomes invalid when its delimiting boundaries changes in the
63     underlying buffer.  If said changes are later undone the mark becomes
64     valid again.  m sets a mark, M restores it.  For example, 'am sets the
65     mark a while 'aM restores it.
66
67     Available marks are:
68
69     ''      default mark
70
71     '^      active selections when leaving visual mode
72
73     'a-'z   general purpose marks
74
75     No marks across files are supported.  Marks are not preserved over edit‐
76     ing sessions.
77
78   Jump list
79     A per window, fixed sized file local jump list exists which stores marks
80     (i.e. set of selections).
81
82     g<      jump backward
83
84     g>      jump forward
85
86     gs      save currently active selections
87
88   Registers
89     Registers are named lists of text. Uninitialized register slots default
90     to the empty string. Available registers are:
91
92     ""      default register
93
94     "a-"z   general purpose registers
95
96     "A-"Z   append to corresponding general purpose register
97
98     "*, "+  system clipboard integration via shell script vis-clipboard(1)
99
100     "0      yank register, most recently yanked range
101
102     "1-"9
103
104     "&      sub expression matches of most recent x or y command
105
106     "/      search register, most recently used search pattern
107
108     ":      command register, most recently executed command
109
110     "_      black hole (/dev/null) register, ignore content is always empty
111
112     "#      selection number (readonly)
113
114     If no explicit register is specified the default register is used.
115
116   Macros
117     The general purpose registers "a-"z can be used to record macros.  Use
118     one of "A-"Z to append to an existing macro.  q starts a recording, @
119     plays it back.  @@ refers to the most recently recorded macro.  @:
120     repeats the last :-command. @/ is equivalent to n in normal mode.  These
121     operations always use the first register slot.
122
123   Encoding, Tab and Newline handling
124     vis always assumes the input file to be UTF-8 encoded with \n line end‐
125     ings.  If you wish to edit files with legacy encodings or non-Unix line
126     endings, use iconv(1) and dos2unix(1) to convert them as needed.  ⟨Tab
127     can optionally be expanded to a configurable number of spaces (see SET
128     OPTIONS).
129
130   Mouse support
131     The mouse is currently not used at all.
132

SAM COMMANDS

134     vis supports an interactive variant of the structural regular expression
135     based command language introduced by sam(1).
136
137   Regular expressions
138     vis currently defers regular expression matching to the underlying C
139     library.  It uses what POSIX refers to as “Extended Regular Expressions”
140     as described in regex(7).  The anchors ^ and $ match the beginning / end
141     of the range they are applied to.  Additionally \n and \t may be used to
142     refer to newlines and tabs, respectively.  The .  atom matches any char‐
143     acter except newline.  The empty regular expression stands for the last
144     complete expression encountered.
145
146   Addresses
147     An address identifies a substring (or range) in a file.  In the following
148     “character n” means the null string after the n-th character in the file,
149     with 1 the first character in the file.  “Line n” means the n-th match,
150     starting at the beginning of the file, of the regular expression “.*\n?”.
151
152     All windows always have at least one current substring which is the
153     default address.  In sam this is referred to as dot.  In vis multiple
154     “dots” (or selections) can exist at the same time.
155
156   Simple addresses
157     #n      The empty string after character n; #0 is the beginning of the
158             file.
159
160     n       Line n.
161
162     /regexp/
163
164     ?regexp?
165             The substring that matches the regular expression, found by look‐
166             ing towards the end (/) or beginning (?) of the file.  The search
167             does not wrap around when hitting the end (start) of the file.
168
169     0       The string before the first full line.  This is not necessarily
170             the null string; see + and - below.
171
172     $       The null string at the end of the file.
173
174     .       Dot, the current range.
175
176     'm      The mark m in the file.
177
178   Compound addresses
179     In the following, a1 and a2 are addresses.
180
181     a1+a2   The address a2 evaluated starting at the end of a1.
182
183     a1-a2   The address a2 evaluated looking the reverse direction starting
184             at the beginning of a1.
185
186     a1,a2   The substring from the beginning of a1 to the end of a2.  If a1
187             is missing, 0 is substituted.  If a2 is missing, $ is substi‐
188             tuted.
189
190     a1;a2   Like a1,a2 but with a2 evaluated at the end of, and range set to,
191             a1.
192
193     The operators + and - are high precedence, while , and ; are low prece‐
194     dence.
195
196     In both + and - forms, if a2 is a line or character address with a miss‐
197     ing number, the number defaults to 1.  If a1 is missing, .  is substi‐
198     tuted.  If both a1 and a2 are present and distinguishable, + may be
199     elided.  a2 may be a regular expression; if it is delimited by ?  charac‐
200     ters, the effect of the + or - is reversed.  The % sign is an alias for ,
201     and hence 0,$.  It is an error for a compound address to represent a mal‐
202     formed substring.
203
204   Commands
205     In the following, text demarcated by slashes represents text delimited by
206     any printable ASCII character except alphanumerics.  Any number of trail‐
207     ing delimiters may be elided, with multiple elisions then representing
208     null strings, but the first delimiter must always be present.  In any
209     delimited text, newline may not appear literally; \n and \t may be typed
210     for newline and tab; \/ quotes the delimiter, here /.  An ampersand & and
211     \n, where n is a digit (1-9) are replaced by the corresponding register.
212     Backslash is otherwise interpreted literally.
213
214     Most commands may be prefixed with an address to indicate their range of
215     operation.  If a command takes an address and none is supplied, a default
216     address is used.  In normal mode this equates to the character the selec‐
217     tion is currently over.  If only one selection exists x and y default to
218     the whole file 0,$.  In normal mode the write commands w and wq always
219     apply to the whole file.  Commands are executed once for every selection.
220     In visual mode the commands are applied to every selection as if an
221     implicit x command, matching the existing selections, was present.
222
223     In the description, “range” is used to represent whatever address is sup‐
224     plied.
225
226     Many commands create new selections as a side effect when issued from a
227     visual mode.  If so, it is always to the “result” of the change: the new
228     text for an insertion, the empty string for a deletion, the command out‐
229     put of a filter etc.  If after a successful command execution no selec‐
230     tions remain, the editor will switch to normal mode, otherwise it remains
231     in visual mode.  This allows interactive refinements of ranges.
232
233   Text commands
234     a/text/
235             Insert the text into the file after the range.
236
237             May also be written as
238
239                    a
240                    lines
241                    of
242                    text
243                    .
244
245     c or i  Same as a, but c replaces the text, while i inserts before the
246             range.
247
248     d       Delete the text in range.
249
250   Display commands
251     p       Create a new selection for the range.
252
253   I/O commands
254     e[!] [file name]
255             Replace the file by the contents of the named external file.  If
256             no file name is given, reload file from disk.
257
258     r file name
259             Replace the text in the range by the contents of the named exter‐
260             nal file.
261
262     w[!] [file name]
263             Write the range (default 0,$) to the named external file.
264
265     wq[!] [file name]
266             Same as w, but close file afterwards.
267
268     If the file name argument is absent from any of these, the current file
269     name is used.  e always sets the file name, w will do so if the file has
270     no name.  Forcing the e command with !  will discard any unsaved changes.
271     Forcing w will overwrite the file on disk even if it has been externally
272     modified since loading it.  Write commands with a non-default addresses
273     and no file name are destructive and need always to be forced.
274
275     < shell command
276             Replace the range by the standard output of the shell command.
277
278     > shell command
279             Sends the range to the standard input of the shell command.
280
281     | shell command
282             Send the range to the standard input, and replace it by the stan‐
283             dard output, of the shell command.
284
285     ! shell command
286             Run interactive shell command, redirect keyboard input to it.
287
288     cd directory
289             Change working directory.  If no directory is specified, $HOME is
290             used.
291
292     In any of <, >, |, or !, if the shell command is omitted, the last shell
293     command (of any type) is substituted.  Unless the file being edited is
294     unnamed, all these external commands can refer to its absolute path and
295     file name through the vis_filepath and vis_filename environment vari‐
296     ables.
297
298   Loops and conditionals
299     x/regexp/ [command]
300             For each match of the regular expression in the range, run the
301             command with range set to the match.  If the regular expression
302             and its slashes are omitted, /.*\n/ is assumed.  Null string
303             matches potentially occur before every character of the range and
304             at the end of the range.
305
306             The "1-"9 and "& registers are updated with the (sub) expression
307             matches of the pattern.
308
309     y/regexp/ [command]
310             Like x, but run the command for each substring that lies before,
311             between, or after the matches that would be generated by x.
312             There is no default behavior.  Null substrings potentially occur
313             before every character in the range.
314
315     X/regexp/ command
316             For each file whose file name matches the regular expression,
317             make that the current file and run the command.  If the expres‐
318             sion is omitted, the command is run in every file.
319
320     Y/regexp/ command
321             Same as X, but for files that do not match the regular expres‐
322             sion, and the expression is required.
323
324     g[count][/regexp/] command
325
326     v[count][/regexp/] command
327             If the count range contains (g) or does not contain (v) a match
328             for the expression, run command on the range.
329
330             The count specifier has the following format, where n and m are
331             integers denoting the ranges.
332
333             n,m     The closed interval from n to m.  If n is missing, 1 is
334                     substituted.  If m is missing, is substituted. Negative
335                     values are interpreted relative to the last range.
336
337             %n      Matches every n-th range.
338
339     These may be nested arbitrarily deeply.  An empty command in an x or y
340     defaults to p.  X, Y, g and v do not have defaults.
341
342   Grouping and multiple changes
343     Commands may be grouped by enclosing them in curly braces.  Semantically,
344     the opening brace is like a command: it takes an (optional) address and
345     runs each sub-command on the range.  Commands within the braces are exe‐
346     cuted sequentially, but changes made by one command are not visible to
347     other commands.
348
349     When a command makes a number of changes to a file, as in x/re/ c/text/,
350     the addresses of all changes are computed based on the initial state.  If
351     the changes are non-overlapping, they are applied in the specified order.
352     Conflicting changes are rejected.
353
354     Braces may be nested arbitrarily.
355

VI(M) KEY BINDINGS

357     In the following sections angle brackets are used to denote special keys.
358     The prefixes C-, S-, and M- are used to refer to the ⟨Ctrl⟩, ⟨Shift⟩ and
359     ⟨Alt⟩ modifiers, respectively.
360
361     All active key bindings can be listed at runtime using the :help command.
362
363   Operators
364     Operators perform a certain operation an a text range indicated by either
365     a motion, a text object or an existing selection.
366
367     c           change, delete range and enter insert mode
368     d           delete range
369     =           indent, currently an alias for gq
370     gq          format, filter range through fmt(1)
371     gu          make lowercase
372     gU          make uppercase
373     J           join lines, insert spaces in between
374     gJ          join lines remove any delimiting white spaces
375     p           put, insert register content
376     <           shift-left, decrease indent
377     >           shift-right, increase indent
378     ~           swap case
379     y           yank, copy range to register
380
381     Operators can be forced to work line wise by specifying V.
382
383   Motions
384     Motions take an initial file position and transform it to a destination
385     file position, thereby defining a range.
386
387     0           start of line
388     b           previous start of a word
389     B           previous start of a WORD
390     $           end of line
391     e           next end of a word
392     E           next end of a WORD
393     F ⟨char⟩    to next occurrence of char to the left
394     f ⟨char⟩    to next occurrence of char to the right
395     ^           first non-blank of line
396     g0          begin of display line
397     g$          end of display line
398     ge          previous end of a word
399     gE          previous end of a WORD
400     gg          begin of file
401     G           goto line or end of file
402     gj          display line down
403     gk          display line up
404     gh          codepoint left
405     gl          codepoint right
406     gH          byte left
407     gL          byte right
408     g_          last non-blank of line
409     gm          middle of display line
410     g|          goto column
411     h           char left
412     H           goto top/home line of window
413     j           line down
414     k           line up
415     l           char right
416     L           goto bottom/last line of window
417     %           match bracket
418     }           next paragraph
419     )           next sentence
420     N           repeat last search backwards
421     n           repeat last search forward
422     [{          previous start of block
423     ]}          next start of block
424     [(          previous start of parentheses pair
425     ])          next start of parentheses pair
426     {           previous paragraph
427     (           previous sentence
428     ;           repeat last to/till movement
429     ,           repeat last to/till movement but in opposite direction
430     #           search word under selection backwards
431     *           search word under selection forwards
432     T ⟨char⟩    till before next occurrence of char to the left
433     t ⟨char⟩    till before next occurrence of char to the right
434     ? pattern   to next match of pattern in backward direction
435     / pattern   to next match of pattern in forward direction
436     w           next start of a word
437     W           next start of a WORD
438
439   Text objects
440     Text objects take an initial file position and transform it to a range
441     where the former does not necessarily have to be contained in the latter.
442     All of the following text objects are implemented in an inner variant
443     (prefixed with i) where the surrounding white space or delimiting charac‐
444     ters are not part of the resulting range and a normal variant (prefixed
445     with a) where they are.
446
447     w           word
448     W           WORD
449     s           sentence
450     p           paragraph
451     [, ], (, ), {, }, <, >, ", ', `
452                 block enclosed by these symbols
453
454     Further available text objects include:
455     gn          matches the last used search term in forward direction
456     gN          matches the last used search term in backward direction
457     ae          entire file content
458     ie          entire file content except for leading and trailing empty
459                 lines
460     al          current line
461     il          current line without leading and trailing white spaces
462
463   Multiple Selections
464     vis supports multiple selections with immediate visual feedback.  There
465     always exists one primary selection located within the current view port.
466     Additional selections can be created as needed.  If more than one selec‐
467     tion exists, the primary one is styled differently.
468
469     To manipulate selections use in normal mode:
470
471C-k⟩       create count new selections on the lines above
472C-M-k⟩     create count new selections on the lines above the first
473                 selection
474C-j⟩       create count new selections on the lines below
475C-M-j⟩     create count new selections on the lines below the last
476                 selection
477C-p⟩       remove primary selection
478C-n⟩       select word the selection is currently over, switch to visual
479                 mode
480C-u⟩       make the count previous selection primary
481C-d⟩       make the count next selection primary
482C-c⟩       remove the count selection column
483C-l⟩       remove all but the count selection column
484Tab⟩       try to align all selections on the same column
485Escape⟩    dispose all but the primary selection
486
487     The visual modes were enhanced to recognize:
488
489     I           create a selection at the start of every selected line
490     A           create a selection at the end of every selected line
491Tab⟩       left align selections by inserting spaces
492S-Tab⟩     right align selections by inserting spaces
493C-n⟩       create new selection and select next word matching current
494                 selection
495C-x⟩       clear (skip) current selection, but select next matching word
496C-p⟩       remove primary selection
497C-u
498C-k⟩       make the count previous selection primary
499C-d
500C-j⟩       make the count next selection primary
501C-c⟩       remove the count selection column
502C-l⟩       remove all but the count selection column
503     +           rotate selections rightwards count times
504     -           rotate selections leftwards count times
505     _           trim selections, remove leading and trailing white space
506     o           flip selection direction, swap cursor and anchor
507Escape⟩    clear all selections, switch to normal mode
508
509     In insert and replace mode:
510
511S-Tab⟩     align all selections by inserting spaces
512
513     Selections can be manipulated using set operations. The first operand is
514     the currently active selections while the second can be specified as a
515     mark.
516
517     |           set union
518     &           set intersection
519     \           set minus
520     !           set complement
521     z|"         pairwise union
522     z&          pairwise intersection
523     z+          pairwise combine, choose longer
524     z-          pairwise combine, choose shorter
525     z<          pairwise combine, choose leftmost
526     z>          pairwise combine, choose rightmost
527

VI(M) COMMANDS

529     Any unique prefix can be used to abbreviate a command.
530
531   File and Window management
532     A file must be opened in at least one window.  If the last window dis‐
533     playing a certain file is closed all unsaved changes are discarded.  Win‐
534     dows are equally sized and can be displayed in either horizontal or ver‐
535     tical fashion.  The ⟨C-w⟩ h, ⟨C-w⟩ j, ⟨C-w⟩ k and ⟨C-w⟩ l key mappings
536     can be used to switch between windows.
537
538     :new    open an empty window, arrange horizontally
539
540     :vnew   open an empty window, arrange vertically
541
542     :open[!] [file name]
543             open a new window, displaying file name if given
544
545     :split [file name]
546             split window horizontally
547
548     :vsplit [file name]
549             split window vertically
550
551     :q[]!   close currently focused window
552
553     :qall[]!
554             close all windows, exit editor
555
556     Commands taking a file name will invoke the vis-open(1) utility, if given
557     a file pattern or directory.
558
559   Runtime key mappings
560     vis supports global as well as window local run time key mappings which
561     are always evaluated recursively.
562
563     :map[!] mode lhs rhs
564             add a global key mapping
565
566     :map-window [!] mode lhs rhs
567             add a window local key mapping
568
569     :unmap mode lhs
570             remove a global key mapping
571
572     :unmap-window mode lhs
573             remove a window local key mapping
574     In the above mode refers to one of ‘normal’, ‘insert’, ‘replace’,
575     ‘visual’, ‘visual-line’ or ‘operator-pending’; lhs refers to the key to
576     map and rhs is a key action or alias.  An existing mapping may be over‐
577     ridden by forcing the map command by specifying !.
578
579     Because key mappings are always recursive, doing something like:
580
581           :map! normal j 2j
582
583     will not work because it would enter an endless loop.  Instead, vis uses
584     pseudo keys referred to as key actions which can be used to invoke a set
585     of available editor functions.  :help lists all currently active key
586     bindings as well as all available symbolic keys.
587
588   Keyboard Layout Specific Mappings
589     In order to facilitate usage of non-latin keyboard layouts, vis allows
590     one to map locale specific keys to their latin equivalents by means of
591     the
592
593           :langmap locale-keys latin-keys
594
595     command.  As an example, the following maps the movement keys in Russian
596     layout:
597
598           :langmap ролд hjkl
599
600     If the key sequences have not the same length, the remainder of the
601     longer sequence will be discarded.
602
603     The defined mappings take effect in all non-input modes, i.e. everywhere
604     except in insert and replace mode.
605
606   Undo/Redo
607     :earlier [count]
608             revert to older text state
609
610     :later [count]
611             revert to newer text state
612
613     If count is suffixed by either of d (days), h (hours), m (minutes) or s
614     (seconds) it is interpreted as an offset from the current system time and
615     the closest available text state is restored.
616

SET OPTIONS

618     There are a small number of options that may be set (or unset) to change
619     the editor's behavior using the :set command.  This section describes the
620     options, their abbreviations and their default values.  Boolean options
621     can be toggled by appending !  to the option name.
622
623     In each entry below, the first part of the tag line is the full name of
624     the option, followed by any equivalent abbreviations.  The part in square
625     brackets is the default value of the option.
626
627     shell [“/bin/sh”]
628             User shell to use for external commands, overrides SHELL and
629             shell field of password database /etc/passwd
630
631     escdelay [50]
632             Milliseconds to wait before deciding whether an escape sequence
633             should be treated as an ⟨Escape⟩ key.
634
635     tabwidth, tw [8]
636             Display width of a tab and number of spaces to use if expandtab
637             is enabled.
638
639     autoindent, ai [off]
640             Automatically indent new lines by copying white space from previ‐
641             ous line.
642
643     expandtab, et [off]
644             Whether ⟨Tab⟩ should be expanded to tabwidth spaces.
645
646     number, nu [off]
647             Display absolute line numbers.
648
649     relativenumbers, rnu [off]
650             Display relative line numbers.
651
652     cursorline, cul [off]
653             Highlight line primary cursor resides on.
654
655     colorcolumn, cc [0]
656             Highlight a fixed column.
657
658     horizon [32768]
659             How many bytes back the lexer will look to synchronize parsing.
660
661     theme [“default-16” or “default-256”]
662             Color theme to use, name without file extension.
663
664     syntax [off]
665             Syntax highlighting lexer to use, name without file extension.
666
667     show-tabs [off]
668             Whether to display replacement symbol instead of tabs.
669
670     show-newlines [off]
671             Whether to display replacement symbol instead of newlines.
672
673     show-spaces [off]
674             Whether to display replacement symbol instead of blank cells.
675
676     show-eof [on]
677             Whether to display replacement symbol for lines after the end of
678             the file.
679
680     savemethod [auto]
681             How the current file should be saved, atomic which uses rename(2)
682             to atomically replace the file, inplace which truncates the file
683             and then rewrites it or auto which tries the former before fall‐
684             ing back to the latter.  The rename method fails for symlinks,
685             hardlinks, in case of insufficient directory permissions or when
686             either the file owner, group, POSIX ACL or SELinux labels can not
687             be restored.
688

COMMAND and SEARCH PROMPT

690     The command and search prompt as opened by :, /, or ?  is implemented as
691     a single line height window, displaying a regular file whose editing
692     starts in insert mode.  ⟨Escape⟩ switches to normal mode, a second
693Escape⟩ cancels the prompt.  ⟨Up⟩ enlarges the window, giving access to
694     the command history.  ⟨C-v⟩ ⟨Enter⟩ inserts a literal new line thus
695     enabling multiline commands.  ⟨Enter⟩ executes the visual selection if
696     present, or else everything in the region spawned by the selection posi‐
697     tion and the delimiting prompt symbols at the start of adjacent lines.
698

CONFIGURATION

700     vis uses Lua for configuration and scripting purposes.  During startup
701     visrc.lua (see the FILES section) is sourced which can be used to set
702     personal configuration options.  As an example the following will enable
703     the display of line numbers:
704
705           vis:command('set number')
706

ENVIRONMENT

708     VIS_PATH
709             The default path to use to load Lua support files.
710
711     HOME    The home directory used for the cd command if no argument is
712             given.
713
714     TERM    The terminal type to use to initialize the curses interface,
715             defaults to xterm if unset.
716
717     SHELL   The command shell to use for I/O related commands like !, >, <
718             and |.
719
720     XDG_CONFIG_HOME
721             The configuration directory to use, defaults to $HOME/.config if
722             unset.
723

ASYNCHRONOUS EVENTS

725     SIGSTOP
726             Suspend editor.
727
728     SIGCONT
729             Resume editor.
730
731     SIGBUS  An mmap(2) ed file got truncated, unsaved file contents will be
732             lost.
733
734     SIGHUP
735
736     SIGTERM
737             Restore initial terminal state.  Unsaved file contents will be
738             lost.
739
740     SIGINT  When an interrupt occurs while an external command is being run
741             it is terminated.
742
743     SIGWINCH
744             The screen is resized.
745

FILES

747     Upon startup vis will source the first visrc.lua configuration file found
748     from these locations.  All actively used paths can be listed at runtime
749     using the :help command.
750
751     ·   $VIS_PATH
752
753     ·   The location of the vis binary (on systems where /proc/self/exe is
754         available).
755
756     ·   $XDG_CONFIG_HOME/vis where XDG_CONFIG_HOME refers to $HOME/.config if
757         unset.
758
759     ·   /etc/vis for a system-wide configuration provided by administrator.
760
761     ·   /usr/local/share/vis or /usr/share/vis depending on the build config‐
762         uration.
763
764     When creating a new visrc.lua be sure to copy the structure from here.
765

EXIT STATUS

767     The vis utility exits 0 on success, and >0 if an error occurs.
768

EXAMPLES

770     Use vis as an interactive filter.
771
772           $ { echo Pick your number; seq 1 10; } | vis - > choice
773
774     Use the vis-open(1) based file browser to list all C language source
775     files:
776
777           :e *.c
778
779     Spawn background process and pipe range to its standard input:
780
781           :> { plumber <&3 3<&- & } 3<&0 1>&- 2>&-
782

SEE ALSO

784     sam(1), vi(1), vis-clipboard(1), vis-complete(1), vis-digraph(1),
785     vis-menu(1), vis-open(1)
786
787     A Tutorial for the Sam Command Language:
788           http://doc.cat-v.org/bell_labs/sam_lang_tutorial/sam_tut.pdf
789     by Rob Pike
790
791     The Text Editor sam:
792           http://doc.cat-v.org/plan_9/4th_edition/papers/sam/
793     by Rob Pike
794
795     Plan 9 manual page for sam(1):
796           http://man.cat-v.org/plan_9/1/sam
797
798     Structural Regular Expressions:
799           http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf
800     by Rob Pike
801
802     vi - screen-oriented (visual) display editor
803           http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html
804

STANDARDS

806     vis does not strive to be IEEE Std 1003.1 (“POSIX.1”) compatible, but
807     shares obvious similarities with the vi utility.
808

AUTHORS

810     vis is written by Marc André Tanner <mat at brain-dump.org>
811

BUGS

813     On some systems there already exists a vis binary, thus causing a name
814     conflict.
815
816Vis v0.5                       January 14, 2017                       Vis v0.5
Impressum