1VIS(1) BSD General Commands Manual VIS(1)
2
4 vis — a highly efficient text editor
5
7 vis [-v] [+command] [--] [files ...]
8
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
55 ⟨C-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
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
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
471 ⟨C-k⟩ create count new selections on the lines above
472 ⟨C-M-k⟩ create count new selections on the lines above the first
473 selection
474 ⟨C-j⟩ create count new selections on the lines below
475 ⟨C-M-j⟩ create count new selections on the lines below the last
476 selection
477 ⟨C-p⟩ remove primary selection
478 ⟨C-n⟩ select word the selection is currently over, switch to visual
479 mode
480 ⟨C-u⟩ make the count previous selection primary
481 ⟨C-d⟩ make the count next selection primary
482 ⟨C-c⟩ remove the count selection column
483 ⟨C-l⟩ remove all but the count selection column
484 ⟨Tab⟩ try to align all selections on the same column
485 ⟨Escape⟩ 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
491 ⟨Tab⟩ left align selections by inserting spaces
492 ⟨S-Tab⟩ right align selections by inserting spaces
493 ⟨C-n⟩ create new selection and select next word matching current
494 selection
495 ⟨C-x⟩ clear (skip) current selection, but select next matching word
496 ⟨C-p⟩ remove primary selection
497 ⟨C-u⟩
498 ⟨C-k⟩ make the count previous selection primary
499 ⟨C-d⟩
500 ⟨C-j⟩ make the count next selection primary
501 ⟨C-c⟩ remove the count selection column
502 ⟨C-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
507 ⟨Escape⟩ clear all selections, switch to normal mode
508
509 In insert and replace mode:
510
511 ⟨S-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
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
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
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
693 ⟨Escape⟩ 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
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
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
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
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
767 The vis utility exits 0 on success, and >0 if an error occurs.
768
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
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
806 vis does not strive to be IEEE Std 1003.1 (“POSIX.1”) compatible, but
807 shares obvious similarities with the vi utility.
808
810 vis is written by Marc André Tanner <mat at brain-dump.org>
811
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