__aeabi_ldivmod: fix sign logic
[minix.git] / usr.bin / nvi / docs / USD.doc / vi.ref / ex.cmd.roff
blob4bea0846e71461bce9f5ba917af5953e7644e3a7
1 .\"     $NetBSD: ex.cmd.roff,v 1.1 2008/09/02 09:25:39 christos Exp $
2 .\"
3 .\" Copyright (c) 1994
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\" Copyright (c) 1994, 1995, 1996
6 .\"     Keith Bostic.  All rights reserved.
7 .\"
8 .\" See the LICENSE file for redistribution information.
9 .\"
10 .\"     @(#)ex.cmd.roff 8.41 (Berkeley) 8/17/96
11 .\"
12 .SH 1 "Ex Description"
13 .pp
14 The following words have special meanings for
15 .CO ex
16 commands.
17 .KY "<end-of-file>"
18 .IP "<end-of-file>"
19 The end-of-file character is used to scroll the screen in the
20 .CO ex
21 editor.
22 This character is normally
23 .LI <control-D> .
24 However, whatever character is set for the current terminal is supported
25 as well as
26 .LI <control-D> .
27 .KY "line"
28 .IP "line"
29 A single-line address, given in any of the forms described in the
30 section entitled
31 .QB "Ex Addressing" .
32 The default for
33 .LI line
34 is the current line.
35 .KY "range"
36 .IP "range"
37 A line, or a pair of line addresses, separated by a comma or semicolon.
38 (See the section entitled
39 .QB "Ex Addressing"
40 for more information.)
41 The default for range is the current line
42 .i only ,
43 i.e.
44 .QT \&.,. .
45 A percent sign
46 .PQ %
47 stands for the range
48 .QT 1,$ .
49 The starting address must be less than, or equal to, the ending address.
50 .KY "count"
51 .IP "count"
52 A positive integer, specifying the number of lines to be affected by
53 the command; the default is 1.
54 Generally, a count past the end-of-file may be specified, e.g. the
55 command
56 .QT "p 3000"
57 in a 10 line file is acceptable, and will print from the current line
58 through the last line in the file.
59 .KY "flags"
60 .IP "flags"
61 One or more of the characters
62 .QQ # ,
63 .QQ p ,
64 and
65 .QQ l .
66 When a command that accepts these flags completes, the addressed line(s)
67 are written out as if by the corresponding
68 .CO # ,
69 .CO l
71 .CO p
72 commands.
73 In addition, any number of
74 .QT +
76 .QT \-
77 characters can be specified before, after, or during the flags, in which
78 case the line written is not necessarily the one affected by the command,
79 but rather the line addressed by the offset address specified.
80 The default for
81 .LI flags
82 is none.
83 .KY "file"
84 .IP "file"
85 A pattern used to derive a pathname; the default is the current file.
86 File names are subjected to normal
87 .XR sh 1
88 word expansions.
89 .pp
90 Anywhere a file name is specified, it is also possible to use
91 the special string
92 .QT /tmp .
93 This will be replaced with a temporary file name which can be used
94 for temporary work, e.g.
95 .QT ":e /tmp"
96 creates and edits a new file.
97 .pp
98 If both a count and a range are specified for commands that use either,
99 the starting line for the command is the
100 .i last
101 line addressed by the range, and
102 .LI count - 1
103 subsequent lines are affected by the command, e.g. the command
104 .QT 2,3p4
105 prints out lines 3, 4, 5 and 6.
107 When only a line or range is specified, with no command, the implied
108 command is either a
109 .CO list ,
110 .CO number
112 .CO print
113 command.
114 The command used is the most recent of the three commands to have been
115 used (including any use as a flag).
116 If none of these commands have been used before, the
117 .CO print
118 command is the implied command.
119 When no range or count is specified and the command line is a blank line,
120 the current line is incremented by 1 and then the current line is displayed.
122 Zero or more whitespace characters may precede or follow the addresses,
123 count, flags, or command name.
124 Any object following a command name (such as buffer, file, etc.),
125 that begins with an alphabetic character,
126 should be separated from the command name by at least one whitespace
127 character.
129 Any character, including
130 .LI <carriage-return> ,
131 .QT %
133 .QT #
134 retain their literal value when preceded by a backslash.
135 .SH 1 "Ex Commands"
137 The following section describes the commands available in the
138 .CO ex
139 editor.
140 In each entry below, the tag line is a usage synopsis for the command.
142 Each command can be entered as the abbreviation
143 (those characters in the synopsis command word preceding the
144 .QQ [
145 character),
146 the full command (all characters shown for the command word,
147 omitting the
148 .QQ [
150 .QQ ]
151 characters),
152 or any leading subset of the full command down to the abbreviation.
153 For example, the args command (shown as
154 .QT ar[gs]
155 in the synopsis)
156 can be entered as
157 .QT ar ,
158 .QT arg
160 .QT args .
162 Each
163 .CO ex
164 command described below notes the new current line after it
165 is executed, as well as any options that affect the command.
166 .\" I cannot get a double quote to print to save my life.  The ONLY way
167 .\" I've been able to get this to work is with the .tr command.
168 .tr Q"
169 .ds ms Q
170 .KY DOUBLEQUOTE
171 .IP "\*(ms"
172 .tr QQ
173 A comment.
174 Command lines beginning with the double-quote character
175 .PQ """"
176 are ignored.
177 This permits comments in editor scripts and startup files.
178 .KY "<control-D>"
179 .KY "<end-of-file>"
180 .IP "<control-D>"
181 .IP "<end-of-file>"
182 Scroll the screen.
183 Write the next N lines, where N is the value of the
184 .OP scroll
185 option.
186 The command is the end-of-file terminal character, which may be
187 different on different terminals.
188 Traditionally, it is the
189 .LI <control-D>
190 key.
192 Historically, the
193 .CO eof
194 command ignored any preceding count, and the
195 .LI <end-of-file>
196 character was ignored unless it was entered as the first character
197 of the command.
198 This implementation treats it as a command
199 .i only
200 if entered as the first character of the command line, and otherwise
201 treats it as any other character.
203 .SP Line:
204 Set to the last line written.
205 .SP Options:
206 Affected by the
207 .OP scroll
208 option.
210 .KY "!"
211 .IP "! argument(s)"
212 .Ip "[range]! argument(s)"
213 Execute a shell command, or filter lines through a shell command.
214 In the first synopsis, the remainder of the line after the
215 .QT !
216 character is passed to the program named by the
217 .OP shell
218 option, as a single argument.
220 Within the rest of the line,
221 .QT %
223 .QT #
224 are expanded into the current and alternate pathnames, respectively.
225 The character
226 .QT !
227 is expanded with the command text of the previous
228 .CO !
229 command.
230 (Therefore, the command
231 .CO !!
232 repeats the previous
233 .CO !
234 command.)
235 The special meanings of
236 .QT % ,
237 .QT # ,
239 .QT !
240 can be overridden by escaping them with a backslash.
241 If no
242 .CO !
244 .CO :!
245 command has yet been executed, it is an error to use an unescaped
246 .QT !
247 character.
249 .CO !
250 command does
251 .i not
252 do shell expansion on the strings provided as arguments.
253 If any of the above expansions change the command the user entered,
254 the command is redisplayed at the bottom of the screen.
256 .CO Ex
257 then executes the program named by the
258 .OP shell
259 option, with a
260 .b \-c
261 flag followed by the arguments (which are bundled into a single argument).
264 .CO !
265 command is permitted in an empty file.
267 If the file has been modified since it was last completely written,
269 .Co !
270 command will warn you.
272 A single
273 .QT !
274 character is displayed when the command completes.
276 In the second form of the
277 .CO !
278 command, the remainder of the line after the
279 .QT !
280 is passed to the program named by the
281 .OP shell
282 option, as described above.
283 The specified lines are passed to the program as standard input,
284 and the standard and standard error output of the program replace
285 the original lines.
287 .SP Line:
288 Unchanged if no range was specified, otherwise set to the first
289 line of the range.
290 .SP Options:
291 Affected by the
292 .OP shell
294 .OP warn
295 options.
297 .KY "#"
298 .IP "[range] # [count] [flags]"
299 .KY "number"
300 .Ip "[range] nu[mber] [count] [flags]"
301 Display the selected lines, each preceded with its line number.
303 The line number format is
304 .QQ %6d ,
305 followed by two spaces.
307 .SP Line:
308 Set to the last line displayed.
309 .SP Options:
310 Affected by the
311 .OP list
312 option.
314 .KY "@"
315 .IP "@ buffer"
316 .KY "*"
317 .Ip "* buffer"
318 Execute a buffer.
319 Each line in the named buffer is executed as an
320 .CO ex
321 command.
322 If no buffer is specified, or if the specified buffer is
323 .QT @
325 .QT * ,
326 the last buffer executed is used.
327 .KY <
328 .IP "[range] <[< ...] [count] [flags]"
329 Shift lines left or right.
330 The specified lines are shifted to the left (for the
331 .CO <
332 command) or right (for the
333 .CO >
334 command), by the number of columns specified by the
335 .OP shiftwidth
336 option.
337 Only leading whitespace characters are deleted when shifting left;
338 once the first column of the line contains a nonblank character,
340 .CO shift
341 command will succeed, but the line will not be modified.
343 If the command character
344 .CO <
346 .CO >
347 is repeated more than once, the command is repeated once for each
348 additional command character.
350 .SP Line:
351 If the current line is set to one of the lines that are affected
352 by the command, it is unchanged.
353 Otherwise, it is set to the first nonblank character of the lowest
354 numbered line shifted.
355 .SP Options:
356 Affected by the
357 .OP shiftwidth
358 option.
360 .KY =
361 .IP "[line] = [flags]"
362 Display the line number of
363 .LI line
364 (which defaults to the last line in the file).
366 .SP Line:
367 Unchanged.
368 .SP Options:
369 None.
371 .KY >
372 .IP "[range] >[> ...] [count] [flags]"
373 Shift right.
374 The specified lines are shifted to the right by the number of columns
375 specified by the
376 .OP shiftwidth
377 option, by inserting tab and space characters.
378 Empty lines are not changed.
380 If the command character
381 .QT >
382 is repeated more than once, the command is repeated once for each
383 additional command character.
385 .SP Line:
386 Set to the last line modified by the command.
387 .SP Options:
388 Affected by the
389 .OP shiftwidth
390 option.
392 .KY abbrev
393 .IP "ab[brev] lhs rhs"
394 Add an abbreviation to the current abbreviation list.
395 When inserting text in
396 .CO vi ,
397 each time a non-word character is entered after a word character,
398 a set of characters ending at the word character are checked for
399 a match with
400 .LI lhs .
401 If a match is found, they are replaced with
402 .LI rhs .
403 The set of characters that are checked for a match are defined as follows,
404 for inexplicable historical reasons.
405 If only one or two characters were entered before the non-word character
406 that triggered the check,
407 and after the beginning of the insertion,
408 or the beginning of the line or the file,
409 or the last
410 .LI <blank>
411 character that was entered,
412 then the one or the both characters are checked for a match.
413 Otherwise, the set includes both characters,
414 as well as the characters that precede them that are the same word
415 class (i.e. word or non-word) as the
416 .b second
417 to last character entered before the non-word character that triggered
418 the check,
419 back to the first
420 .LI <blank> character,
421 the beginning of the insertion,
422 or the beginning of the line or the file.
424 For example, the abbreviations:
426 .ne 3v
427 .ft C
429 r l l.
430 :abbreviate     abc     ABC
431 :abbreviate     #i      #include
432 :abbreviate     /*#i    /*#include
434 .ft R
435 will all work, while the abbreviations:
437 .ne 2v
438 .ft C
440 r l l.
441 :abbreviate     a#i     A#include
442 :abbreviate     /*      /********************
444 .ft R
445 will not work, and are not permitted by
446 .CO nvi .
448 To keep the abbreviation expansion from happening,
449 the character immediately following the
450 .LI lhs
451 characters should be quoted with a
452 .LI <literal-next>
453 character.
455 The replacement
456 .LI rhs
457 is itself subject to both further abbreviation expansion and further
458 map expansion.
460 .SP Line:
461 Unchanged.
462 .SP Options:
463 None.
465 .KY append
466 .IP "[line] a[ppend][!]"
467 The input text is appended to the specified line.
468 If line 0 is specified, the text is inserted at the beginning of the file.
469 Set to the last line input.
470 If no lines are input, then set to
471 .LI line ,
472 or to the first line of the file if a
473 .LI line
474 of 0 was specified.
475 Following the command name with a
476 .QT !
477 character causes the
478 .OP autoindent
479 option to be toggled for the duration of the command.
481 .SP Line:
482 Unchanged.
483 .SP Options:
484 Affected by the
485 .OP autoindent
487 .OP number
488 options.
490 .KY args
491 .IP "ar[gs]"
492 Display the argument list.
493 The current argument is displayed inside of
494 .QT [
496 .QT ]
497 characters.
498 The argument list is the list of operands specified on startup,
499 which can be replaced using the
500 .CO next
501 command.
503 .SP Line:
504 Unchanged.
505 .SP Options:
506 None.
508 .KY bg
509 .IP bg
510 .CO Vi
511 mode only.
512 Background the current screen.
513 The screen is unchanged,
514 but is no longer accessible and disappears from the display.
515 Use the
516 .CO fg
517 command to bring the screen back to the display foreground.
519 .SP Line:
520 Set to the current line when the screen was last edited.
521 .SP Options:
522 None.
524 .KY change
525 .IP "[range] c[hange][!] [count]"
526 Replace the lines with input text.
527 Following the command name with a
528 .QT !
529 character causes the
530 .OP autoindent
531 option to be toggled for the duration of the command.
533 .SP Line:
534 Set to the last line input, or, if no lines were input,
535 set to the line before the target line, or to the first
536 line of the file if there are no lines preceding the target line.
537 .SP Options:
538 Affected by the
539 .OP autoindent
541 .OP number
542 options.
544 .KY cd
545 .KY chdir
546 .IP "chd[ir][!] [directory]"
547 .Ip "cd[!] [directory]"
548 Change the current working directory.
550 .LI directory
551 argument is subjected to
552 .XR sh 1
553 word expansions.
554 When invoked with no directory argument and the
555 .LI HOME
556 environment variable is set, the directory named by the
557 .LI HOME
558 environment variable becomes the new current directory.
559 Otherwise, the new current directory becomes the directory returned
560 by the
561 .XR getpwent 3
562 routine.
565 .CO chdir
566 command will fail if the file has been modified since the last complete
567 write of the file.
568 You can override this check by appending a
569 .QT !
570 character to the command.
572 .SP Line:
573 Unchanged.
574 .SP Options:
575 Affected by the
576 .OP cdpath
577 option.
579 .KY copy
580 .KY t
581 .IP "[range] co[py] line [flags]"
582 .Ip "[range] t line [flags]"
583 Copy the specified lines (range) after the destination line.
584 Line 0 may be specified to insert the lines at the beginning of
585 the file.
587 .SP Line:
588 Unchanged.
589 .SP Options:
590 None.
592 .KY cscope
593 .IP "cs[cope] command [args]"
594 Execute a
595 .CO cscope
596 command.
597 For more information, see the section of the reference manual entitled
598 .QB "Tags, Tag Stacks, and Cscope" .
599 .KY delete
600 .IP "[range] d[elete] [buffer] [count] [flags]"
601 Delete the lines from the file.
602 The deleted text is saved in the specified buffer, or, if no buffer
603 is specified, in the unnamed buffer.
604 If the command name is followed by a letter that could be interpreted
605 as either a buffer name or a flag value (because neither a
606 .LI count
608 .LI flags
609 values were given),
610 .CO ex
611 treats the letter as a
612 .LI flags
613 value if the letter immediately follows the command name,
614 without any whitespace separation.
615 If the letter is preceded by whitespace characters,
616 it treats it as a buffer name.
618 .SP Line:
619 Set to the line following the deleted lines,
620 or to the last line if the deleted lines were at the end.
621 .SP Options:
622 None.
624 .KY display
625 .IP "di[splay] b[uffers] | c[onnections] | s[creens] | t[ags]"
626 Display buffers,
627 .CO cscope
628 connections, screens or tags.
630 .CO display
631 command takes one of three additional arguments, which are as follows:
633 .SP b[uffers]
634 Display all buffers (including named, unnamed, and numeric)
635 that contain text.
636 .SP c[onnections]
637 Display the source directories for all attached
638 .CO cscope
639 databases.
640 .SP s[creens]
641 Display the file names of all background screens.
642 .SP t[ags]
643 Display the tags stack.
646 .SP Line:
647 Unchanged.
648 .SP Options:
649 None.
651 .KY edit
652 .IP "e[dit][!] [+cmd] [file]"
653 .Ip "ex[!] [+cmd] [file]"
654 Edit a different file.
655 If the current buffer has been modified since the last complete write,
656 the command will fail.
657 You can override this by appending a
658 .QT !
659 character to the command name.
661 If the
662 .QT +cmd
663 option is specified, that
664 .CO ex
665 command will be executed in the new file.
667 .CO ex
668 command may be used, although the most common use of this feature is
669 to specify a line number or search pattern to set the initial location
670 in the new file.
672 Capitalizing the first letter of the command, i.e.
673 .CO Edit
675 .CO Ex ,
676 while in
677 .CO vi
678 mode, will edit the file in a new screen.
679 In this case, any modifications to the current file are ignored.
681 .SP Line:
682 If you have previously edited the file, the current line will be set
683 to your last position in the file.
684 If that position does not exist, or you have not previously edited the
685 file, the current line will be set to the first line of the file if
686 you are in
687 .CO vi
688 mode, and the last line of the file if you are in
689 .CO ex .
690 .SP Options:
691 None.
693 .KY exusage
694 .IP "exu[sage] [command]"
695 Display usage for an
696 .CO ex
697 command.
699 .LI command
700 is specified, a usage statement for that command is displayed.
701 Otherwise, usage statements for all
702 .CO ex
703 commands are displayed.
705 .SP Line:
706 Unchanged.
707 .SP Options:
708 None.
710 .KY file
711 .IP "f[ile] [file]"
712 Display and optionally change the file name.
713 If a file name is specified, the current pathname is changed to the
714 specified name.
715 The current pathname, the number of lines, and the current position
716 in the file are displayed.
718 .SP Line:
719 Unchanged.
720 .SP Options:
721 None.
723 .KY fg
724 .IP "fg [name]"
725 .CO Vi
726 mode only.
727 Foreground the specified screen.
728 If the argument name doesn't exactly match the name of a file displayed
729 by a background screen,
730 it is compared against the last component of each of the file names.
731 If no background screen is specified,
732 the first background screen is foregrounded.
734 By default,
735 foregrounding causes the current screen to be swapped with the backgrounded
736 screen.
737 Capitalizing the first letter of the command, i.e.
738 .CO Fg ,
739 will foreground the backgrounded screen in a new screen instead of
740 swapping it with the current screen.
742 .SP Line:
743 Set to the current line when the screen was last edited.
744 .SP Options:
745 None.
747 .KY global
748 .IP "[range] g[lobal] /pattern/ [commands]"
749 .KY v
750 .Ip "[range] v /pattern/ [commands]"
751 Apply commands to lines matching (or not matching) a pattern.
752 The lines within the given range that match
753 .PQ g[lobal] ,
754 or do not match
755 .PQ v
756 the given pattern are selected.
757 Then, the specified
758 .CO ex
759 command(s) are executed with the current line
760 .PQ \&.
761 set to each selected line.
762 If no range is specified, the entire file is searched for matching,
763 or not matching, lines.
765 Multiple commands can be specified, one per line, by escaping each
766 .LI <newline>
767 character with a backslash, or by separating commands with a
768 .QT |
769 character.
770 If no commands are specified, the command defaults to the
771 .CO print
772 command.
774 For the
775 .CO append ,
776 .CO change
778 .CO insert
779 commands, the input text must be part of the global command line.
780 In this case, the terminating period can be omitted if it ends the commands.
783 .CO visual
784 command may also be specified as one of the
785 .CO ex
786 commands.
787 In this mode, input is taken from the terminal.
788 Entering a
789 .CO Q
790 command in
791 .CO vi
792 mode causes the next line matching the pattern to be selected and
793 .CO vi
794 to be reentered, until the list is exhausted.
797 .CO global ,
798 .CO v
800 .CO undo
801 commands cannot be used as part of these commands.
803 The editor options
804 .OP autoindent ,
805 .OP autoprint
807 .OP report
808 are turned off for the duration of the
809 .CO global
811 .CO v
812 commands.
814 .SP Line:
815 The last line modified.
816 .SP Options:
817 Affected by the
818 .OP ignorecase
820 .OP magic
821 options.
822 Turns off the
823 .OP autoindent ,
824 .OP autoprint
826 .OP report
827 options.
829 .KY help
830 .IP "he[lp]"
831 Display a help message.
833 .SP Line:
834 Unchanged.
835 .SP Options:
836 None.
838 .KY insert
839 .IP "[line] i[nsert][!]"
840 The input text is inserted before the specified line.
841 Following the command name with a
842 .QT !
843 character causes the
844 .OP autoindent
845 option setting to be toggled for the duration of this command.
847 .SP Line:
848 Set to the last line input; if no lines were input,
849 set to the line before the target line, or to the first line
850 of the file if there are no lines preceding the target line.
851 Affected by the
852 .OP autoindent
854 .OP number
855 options.
857 .KY join
858 .IP "[range] j[oin][!] [count] [flags]"
859 Join lines of text together.
862 .LI count
863 specified to the
864 .Sy join
865 command specifies that the last line of the
866 .LI range
867 plus
868 .LI count
869 subsequent lines will be joined.
870 (Note, this differs by one from the general rule where only
871 .LI count - 1
872 subsequent lines are affected.)
874 If the current line ends with a whitespace character, all whitespace
875 is stripped from the next line.
876 Otherwise, if the next line starts with a open parenthesis
877 .PQ ( ,
878 do nothing.
879 Otherwise, if the current line ends with a question mark
880 .PQ ? ,
881 period
882 .PQ \&.
883 or exclamation point
884 .PQ ! ,
885 insert two spaces.
886 Otherwise, insert a single space.
888 Appending a
889 .QT !
890 character to the command name causes a simpler join with no
891 white-space processing.
893 .SP Line:
894 Unchanged.
895 .SP Options:
896 None.
898 .KY list
899 .IP "[range] l[ist] [count] [flags]"
900 Display the lines unambiguously.
901 Tabs are displayed as
902 .QT ^I ,
903 and the end of the line is marked with a
904 .QT $
905 character.
907 .SP Line:
908 Set to the last line displayed.
909 .SP Options:
910 Affected by the
911 .OP number
912 option.
914 .KY map
915 .IP "map[!] [lhs rhs]"
916 Define or display maps (for
917 .CO vi
918 only).
921 .QT lhs
923 .QT rhs
924 are not specified, the current set of command mode maps are displayed.
925 If a
926 .QT !
927 character is appended to to the command,
928 the text input mode maps are displayed.
930 Otherwise, when the
931 .QT lhs
932 character sequence is entered in
933 .CO vi ,
934 the action is as if the corresponding
935 .QT rhs
936 had been entered.
937 If a
938 .QT !
939 character is appended to the command name,
940 the mapping is effective during text input mode,
941 otherwise, it is effective during command mode.
942 This allows
943 .QT lhs
944 to have two different macro definitions at the same time: one for command
945 mode and one for input mode.
947 Whitespace characters require escaping with a
948 .LI <literal-next>
949 character to be entered in the
950 .LI lhs
951 string in visual mode.
953 Normally, keys in the
954 .LI rhs
955 string are remapped (see the
956 .OP remap
957 option),
958 and it is possible to create infinite loops.
959 However, keys which map to themselves are not further remapped,
960 regardless of the setting of the
961 .OP remap
962 option.
963 For example, the command
964 .QT ":map n nz."
965 maps the
966 .QT n
967 key to the
968 .CO n
970 .CO z
971 commands.
973 To exit an infinitely looping map, use the terminal
974 .LI <interrupt>
975 character.
977 .SP Line:
978 Unchanged.
979 .SP Options:
980 Affected by the
981 .OP remap
982 option.
984 .KY mark
985 .KY k
986 .IP "[line] ma[rk] <character>"
987 .Ip "[line] k <character>"
988 Mark the line with the mark
989 .LI <character> .
990 The expressions
991 .QT '<character>
993 .QT `<character>
994 can then be used as an address in any command that uses one.
996 .SP Line:
997 Unchanged.
998 .SP Options:
999 None.
1001 .KY move
1002 .IP "[range] m[ove] line"
1003 Move the specified lines after the target line.
1004 A target line of 0 places the lines at the beginning of the file.
1006 .SP Line:
1007 Set to the first of the moved lines.
1008 .SP Options:
1009 None.
1011 .KY mkexrc
1012 .IP "mk[exrc][!] file"
1013 Write the abbreviations, editor options and maps to the specified
1014 file.
1015 Information is written in a form which can later be read back in
1016 using the
1017 .CO ex
1018 .CO source
1019 command.
1021 .LI file
1022 already exists, the
1023 .CO mkexrc
1024 command will fail.
1025 This check can be overridden by appending a
1026 .QT !
1027 character to the command.
1029 .SP Line:
1030 Unchanged.
1031 .SP Options:
1032 None.
1034 .KY next
1035 .IP "n[ext][!] [file ...]"
1036 Edit the next file from the argument list.
1038 .CO next
1039 command will fail if the file has been modified since the last complete
1040 write.
1041 This check can be overridden by appending the
1042 .QT !
1043 character to the command name.
1044 The argument list can optionally be replaced by specifying a new one
1045 as arguments to this command.
1046 In this case, editing starts with the first file on the new list.
1048 Capitalizing the first letter of the command, i.e.
1049 .CO Next ,
1050 while in
1051 .CO vi
1052 mode, will set the argument list and edit the file in a new screen.
1053 In this case, any modifications to the current file are ignored.
1055 .SP Line:
1056 Set as described for the
1057 .CO edit
1058 command.
1059 .SP Options:
1060 Affected by the options
1061 .OP autowrite
1063 .OP writeany .
1065 .KY open
1066 .IP "[line] o[pen] /pattern/ [flags]"
1067 Enter open mode.
1068 Open mode is the same as being in
1069 .CO vi ,
1070 but with a one-line window.
1071 All the standard
1072 .CO vi
1073 commands are available.
1074 If a match is found for the optional RE argument,
1075 the cursor is set to the start of the matching pattern.
1077 .i "This command is not yet implemented."
1079 .SP Line:
1080 Unchanged, unless the optional RE is specified, in which case it is
1081 set to the line where the matching pattern is found.
1082 .SP Options:
1083 Affected by the
1084 .OP open
1085 option.
1087 .KY preserve
1088 .IP "pre[serve]"
1089 Save the file in a form that can later be recovered using the
1090 .CO ex
1091 .b \-r
1092 option.
1093 When the file is preserved, an email message is sent to the user.
1095 .SP Line:
1096 Unchanged.
1097 .SP Options:
1098 None.
1100 .KY previous
1101 .IP "prev[ious][!]"
1102 Edit the previous file from the argument list.
1104 .CO previous
1105 command will fail if the file has been modified since the last complete
1106 write.
1107 This check can be overridden by appending the
1108 .QT !
1109 character to the command name.
1111 Capitalizing the first letter of the command, i.e.
1112 .CO Previous ,
1113 while in
1114 .CO vi
1115 mode, will edit the file in a new screen.
1116 In this case, any modifications to the current file are ignored.
1118 .SP Line:
1119 Set as described for the
1120 .CO edit
1121 command.
1122 .SP Options:
1123 Affected by the options
1124 .OP autowrite
1126 .OP writeany .
1127 None.
1129 .KY print
1130 .IP "[range] p[rint] [count] [flags]"
1131 Display the specified lines.
1133 .SP Line:
1134 Set to the last line displayed.
1135 .SP Options:
1136 Affected by the
1137 .OP list
1139 .OP number
1140 option.
1142 .KY put
1143 .IP "[line] pu[t] [buffer]"
1144 Append buffer contents to the current line.
1145 If a buffer is specified, its contents are appended to the line,
1146 otherwise, the contents of the unnamed buffer are used.
1148 .SP Line:
1149 Set to the line after the current line.
1150 .SP Options:
1151 None.
1153 .KY quit
1154 .IP "q[uit][!]"
1155 End the editing session.
1156 If the file has been modified since the last complete write, the
1157 .CO quit
1158 command will fail.
1159 This check may be overridden by appending a
1160 .QT !
1161 character to the command.
1163 If there are more files to edit, the
1164 .CO quit
1165 command will fail.
1166 Appending a
1167 .QT !
1168 character to the command name or entering two
1169 .CO quit
1170 commands (i.e.
1171 .CO wq ,
1172 .CO quit ,
1173 .CO xit
1175 .CO ZZ )
1176 in a row) will override this check and the editor will exit.
1178 .SP Line:
1179 Unchanged.
1180 .SP Options:
1181 None.
1183 .KY read
1184 .IP "[line] r[ead][!] [file]"
1185 Read a file.
1186 A copy of the specified file is appended to the line.
1188 .LI line
1189 is 0, the copy is inserted at the beginning of the file.
1190 If no file is specified, the current file is read; if there is no
1191 current file, then
1192 .LI file
1193 becomes the current file.
1194 If there is no current file and no
1195 .LI file
1196 is specified, then the
1197 .CO read
1198 command will fail.
1201 .LI file
1202 is preceded by a
1203 .QT !
1204 character,
1205 .LI file
1206 is treated as if it were a shell command, and passed to the program
1207 named by the
1208 .OP shell
1209 edit option.
1210 The standard and standard error outputs of that command are read into
1211 the file after the specified line.
1212 The special meaning of the
1213 .QT !
1214 character can be overridden by escaping it with a backslash
1215 .PQ \e
1216 character.
1218 .SP Line:
1219 When executed from
1220 .CO ex ,
1221 the current line is set to the last line read.
1222 When executed from
1223 .CO vi ,
1224 the current line is set to the first line read.
1225 .SP Options:
1226 None.
1228 .KY recover
1229 .IP "rec[over] file"
1230 Recover
1231 .LI file
1232 if it was previously saved.
1233 If no saved file by that name exists, the
1234 .CO recover
1235 command behaves equivalently to the
1236 .CO edit
1237 command.
1239 .SP Line:
1240 Set as described for the
1241 .CO edit
1242 command.
1243 .SP Options:
1244 None.
1246 .KY resize
1247 .IP "res[ize] [+|-]size"
1248 .CO Vi
1249 mode only.
1250 Grow or shrink the current screen.
1252 .LI size
1253 is a positive, signed number, the current screen is grown by that many lines.
1255 .LI size
1256 is a negative, signed number, the current screen is shrunk by that many lines.
1258 .LI size
1259 is not signed, the current screen is set to the specified
1260 .LI size .
1261 Applicable only to split screens.
1263 .SP Line:
1264 Unchanged.
1265 .SP Options:
1266 None.
1268 .KY rewind
1269 .IP "rew[ind][!]"
1270 Rewind the argument list.
1271 If the current file has been modified since the last complete write,
1273 .CO rewind
1274 command will fail.
1275 This check may be overridden by appending the
1276 .QT !
1277 character to the command.
1279 Otherwise, the current file is set to the first file in the argument
1280 list.
1282 .SP Line:
1283 Set as described for the
1284 .CO edit
1285 command.
1286 .SP Options:
1287 Affected by the
1288 .OP autowrite
1290 .OP writeany
1291 options.
1293 .KY set
1294 .IP "se[t] [option[=[value]] ...] [nooption ...] [option? ...] [all]"
1295 Display or set editor options.
1296 When no arguments are specified, the editor option
1297 .OP term ,
1298 and any editor options whose values have been changed from the
1299 default settings are displayed.
1300 If the argument
1301 .LI all
1302 is specified, the values of all of editor options are displayed.
1304 Specifying an option name followed by the character
1305 .QT ?
1306 causes the current value of that option to be displayed.
1308 .QT ?
1309 can be separated from the option name by whitespace characters.
1311 .QT ?
1312 is necessary only for Boolean valued options.
1313 Boolean options can be given values by the form
1314 .QT "set option"
1315 to turn them on, or
1316 .QT "set nooption"
1317 to turn them off.
1318 String and numeric options can be assigned by the form
1319 .QT "set option=value" .
1320 Any whitespace characters in strings can be included literally by preceding
1321 each with a backslash.
1322 More than one option can be set or listed by a single set command,
1323 by specifying multiple arguments, each separated from the next by
1324 whitespace characters.
1326 .SP Line:
1327 Unchanged.
1328 .SP Options:
1329 None.
1331 .KY shell
1332 .IP "sh[ell]"
1333 Run the shell program.
1334 The program named by the
1335 .OP shell
1336 option is run with a
1337 .b \-i
1338 (for interactive) flag.
1339 Editing is resumed when that program exits.
1341 .SP Line:
1342 Unchanged.
1343 .SP Options:
1344 Affected by the
1345 .OP shell
1346 option.
1348 .KY source
1349 .IP "so[urce] file"
1350 Read and execute
1351 .CO ex
1352 commands from a file.
1353 .CO Source
1354 commands may be nested.
1356 .SP Line:
1357 Unchanged.
1358 .SP Options:
1359 None.
1361 .KY substitute
1362 .IP "[range] s[ubstitute] [/pattern/replace/] [options] [count] [flags]"
1363 .KY &
1364 .Ip "[range] & [options] [count] [flags]"
1365 .KY ~
1366 .Ip "[range] ~ [options] [count] [flags]"
1367 Make substitutions.
1368 Replace the first instance of
1369 .LI pattern
1370 with the string
1371 .LI replace
1372 on the specified line(s).
1373 If the
1374 .QT /pattern/repl/
1375 argument is not specified, the
1376 .QT /pattern/repl/
1377 from the previous
1378 .CO substitute
1379 command is used.
1380 Any character other than an alphabetic, numeric, <blank> or backslash
1381 character may be used as the delimiter.
1384 .LI options
1385 includes the letter
1386 .QT c
1387 (confirm), you will be prompted for confirmation before each replacement
1388 is done.
1389 An affirmative response (in English, a
1390 .QT y
1391 character) causes the replacement to be made.
1392 A quit response (in English, a
1393 .QT q
1394 character) causes the
1395 .CO substitute
1396 command to be terminated.
1397 Any other response causes the replacement not to be made, and the
1398 .CO substitute
1399 command continues.
1401 .LI options
1402 includes the letter
1403 .QT g
1404 (global), all nonoverlapping instances of
1405 .LI pattern
1406 in the line are replaced.
1409 .CO &
1410 version of the command is the same as not specifying a pattern
1411 or replacement string to the
1412 .CO substitute
1413 command, and the
1414 .QT &
1415 is replaced by the pattern and replacement information from the
1416 previous substitute command.
1419 .CO ~
1420 version of the command is the same as
1421 .CO &
1423 .CO s ,
1424 except that the search pattern used is the last RE used in
1425 .i any
1426 command, not necessarily the one used in the last
1427 .CO substitute
1428 command.
1430 For example, in the sequence
1431 .ft C
1433 s/red/blue/
1434 /green
1437 .ft R
1439 .QT ~
1440 is equivalent to
1441 .QT s/green/blue/ .
1444 .CO substitute
1445 command may be interrupted, using the terminal interrupt character.
1446 All substitutions completed before the interrupt are retained.
1448 .SP Line:
1449 Set to the last line upon which a substitution was made.
1450 .SP Options:
1451 Affected by the
1452 .OP ignorecase
1454 .OP magic
1455 option.
1457 .KY suspend
1458 .IP "su[spend][!]"
1459 .KY stop
1460 .Ip "st[op][!]"
1461 .KY <control-Z>
1462 .Ip <control-Z>
1463 Suspend the edit session.
1464 Appending a
1465 .QT !
1466 character to these commands turns off the
1467 .OP autowrite
1468 option for the command.
1470 .SP Line:
1471 Unchanged.
1472 .SP Options:
1473 Affected by the
1474 .OP autowrite
1476 .OP writeany
1477 options.
1479 .KY tag
1480 .IP "ta[g][!] tagstring"
1481 Edit the file containing the specified tag.
1482 If the tag is in a different file, then the new file is edited.
1483 If the current file has been modified since the last complete write,
1485 .CO tag
1486 command will fail.
1487 This check can be overridden by appending the
1488 .QT !
1489 character to the command name.
1492 .CO tag
1493 command searches for
1494 .LI tagstring
1495 in the tags file(s) specified by the
1496 .Op tags
1497 option.
1498 (See
1499 .XR ctags 1
1500 for more information on tags files.)
1502 Capitalizing the first letter of the command, i.e.
1503 .CO Tag ,
1504 while in
1505 .CO vi
1506 mode, will edit the file in a new screen.
1507 In this case, any modifications to the current file are ignored.
1509 .SP Line:
1510 Set to the line indicated by the tag.
1511 .SP Options:
1512 Affected by the
1513 .OP autowrite ,
1514 .OP taglength ,
1515 .OP tags
1517 .OP writeany
1518 options.
1520 .KY tagnext
1521 .IP "tagn[ext][!]"
1522 Edit the file containing the next context for the current tag.
1523 If the context is in a different file, then the new file is edited.
1524 If the current file has been modified since the last complete write,
1526 .CO tagnext
1527 command will fail.
1528 This check can be overridden by appending the
1529 .QT !
1530 character to the command name.
1532 Capitalizing the first letter of the command, i.e.
1533 .CO Tagnext ,
1534 while in 
1535 .CO vi 
1536 mode, will edit the file in a new screen.
1537 In this case, any modifications to the current file are ignored.
1538 .SS 
1539 .SP Line:
1540 Set to the line indicated by the tag.
1541 .SP Options:
1542 Affected by the 
1543 .OP autowrite
1545 .OP writeany
1546 options.
1548 .KY tagpop
1549 .IP "tagp[op][!] [file | number]"
1550 Pop to the specified tag in the tags stack.
1551 If neither
1552 .LI file
1554 .LI number
1555 is specified, the
1556 .CO tagpop
1557 command pops to the most recent entry on the tags stack.
1559 .LI file
1561 .LI number
1562 is specified, the
1563 .CO tagpop
1564 command pops to the most recent entry in the tags stack for that file,
1565 or numbered entry in the tags stack, respectively.
1566 (See the
1567 .CO display
1568 command for information on displaying the tags stack.)
1570 If the file has been modified since the last complete write, the
1571 .CO tagpop
1572 command will fail.
1573 This check may be overridden by appending a
1574 .QT !
1575 character to the command name.
1577 .SP Line:
1578 Set to the line indicated by the tag.
1579 .SP Options:
1580 Affected by the
1581 .OP autowrite
1583 .OP writeany
1584 options.
1586 .KY tagprev
1587 .IP "tagpr[ev][!]"
1588 Edit the file containing the previous context for the current tag.
1589 If the context is in a different file, then the new file is edited.
1590 If the current file has been modified since the last complete write,
1592 .CO tagprev
1593 command will fail.
1594 This check can be overridden by appending the
1595 .QT !
1596 character to the command name.
1598 Capitalizing the first letter of the command, i.e.
1599 .CO Tagprev ,
1600 while in 
1601 .CO vi 
1602 mode, will edit the file in a new screen.
1603 In this case, any modifications to the current file are ignored.
1604 .SS 
1605 .SP Line:
1606 Set to the line indicated by the tag.
1607 .SP Options:
1608 Affected by the 
1609 .OP autowrite
1611 .OP writeany
1612 options.
1614 .KY tagtop
1615 .IP "tagt[op][!]"
1616 Pop to the least recent tag on the tags stack, clearing the tags stack.
1618 If the file has been modified since the last complete write, the
1619 .CO tagtop
1620 command will fail.
1621 This check may be overridden by appending a
1622 .QT !
1623 character to the command name.
1625 .SP Line:
1626 Set to the line indicated by the tag.
1627 .SP Options:
1628 Affected by the
1629 .OP autowrite
1631 .OP writeany
1632 options.
1634 .KY unabbrev
1635 .IP "una[bbrev] lhs"
1636 Delete an abbreviation.
1637 Delete
1638 .LI lhs
1639 from the current list of abbreviations.
1641 .SP Line:
1642 Unchanged.
1643 .SP Options:
1644 None.
1646 .KY undo
1647 .IP "u[ndo]"
1648 Undo the last change made to the file.
1649 Changes made by
1650 .CO global ,
1651 .CO v ,
1652 .CO visual
1653 and map sequences are considered a single command.
1654 If repeated, the
1655 .CO u
1656 command alternates between these two states, and is its own inverse.
1658 .SP Line:
1659 Set to the last line modified by the command.
1660 .SP Options:
1661 None.
1663 .KY unmap
1664 .IP "unm[ap][!] lhs"
1665 Unmap a mapped string.
1666 Delete the command mode map definition for
1667 .LI lhs .
1668 If a
1669 .QT !
1670 character is appended to the command name, delete the text input mode
1671 map definition instead.
1673 .SP Line:
1674 Unchanged.
1675 .SP Options:
1676 None.
1678 .KY version
1679 .IP "ve[rsion]"
1680 Display the version of the
1681 .CO ex/vi
1682 editor.
1683 .KY visual
1684 .IP "[line] vi[sual] [type] [count] [flags]"
1685 .CO Ex
1686 mode only.
1687 Enter
1688 .CO vi .
1690 .LI type
1691 is optional, and can be
1692 .QT \- ,
1693 .QT +
1695 .QT ^ ,
1696 as in the
1697 .CO ex
1698 .CO z
1699 command, to specify the position of the specified line in the screen
1700 window.
1701 (The default is to place the line at the top of the screen window.)
1703 .LI count
1704 specifies the number of lines that will initially be displayed.
1705 (The default is the value of the
1706 .OP window
1707 editor option.)
1709 .SP Line:
1710 Unchanged unless
1711 .LI line
1712 is specified, in which case it is set to that line.
1713 .SP Options:
1714 None.
1716 .KY visual
1717 .IP "vi[sual][!] [+cmd] [file]"
1718 .CO Vi
1719 mode only.
1720 Edit a new file.
1721 Identical to the
1722 .QT "edit[!] [+cmd] [file]"
1723 command.
1725 Capitalizing the first letter of the command, i.e.
1726 .CO Visual ,
1727 will edit the file in a new screen.
1728 In this case, any modifications to the current file are ignored.
1729 .KY viusage
1730 .IP "viu[sage] [command]"
1731 Display usage for a
1732 .CO vi
1733 command.
1735 .LI command
1736 is specified, a usage statement for that command is displayed.
1737 Otherwise, usage statements for all
1738 .CO vi
1739 commands are displayed.
1741 .SP Line:
1742 Unchanged.
1743 .SP Options:
1744 None.
1746 .KY write
1747 .IP "[range] w[rite][!] [>>] [file]"
1748 .Ip "[range] w[rite] [!] [file]"
1749 .KY wn
1750 .Ip "[range] wn[!] [>>] [file]"
1751 .KY wq
1752 .Ip "[range] wq[!] [>>] [file]"
1753 Write the file.
1754 The specified lines (the entire file, if no range is given) is written
1756 .LI file .
1758 .LI file
1759 is not specified, the current pathname is used.
1761 .LI file
1762 is specified, and it exists, or if the current pathname was set using the
1763 .CO file
1764 command, and the file already exists, these commands will fail.
1765 Appending a
1766 .QT !
1767 character to the command name will override this check and the write
1768 will be attempted, regardless.
1770 Specifying the optional
1771 .QT >>
1772 string will cause the write to be appended to the file, in which case
1773 no tests are made for the file already existing.
1775 If the file is preceded by a
1776 .QT !
1777 character, the program named by the shell edit option is
1778 invoked with file as its second argument, and the specified
1779 lines are passed as standard input to that command.
1781 .QT !
1782 in this usage must be separated from command name by at least one
1783 whitespace character.
1784 The special meaning of the
1785 .QT !
1786 may be overridden by escaping it with a backslash
1787 .PQ \e
1788 character.
1791 .CO wq
1792 version of the write command will exit the editor after writing the file,
1793 if there are no further files to edit.
1794 Appending a
1795 .QT !
1796 character to the command name or entering two
1797 .QQ quit
1798 commands (i.e.
1799 .CO wq ,
1800 .CO quit ,
1801 .CO xit
1803 .CO ZZ )
1804 in a row) will override this check and the editor will exit,
1805 ignoring any files that have not yet been edited.
1808 .CO wn
1809 version of the write command will move to the next file after writing
1810 the file, unless the write fails.
1812 .SP Line:
1813 Unchanged.
1814 .SP Options:
1815 Affected by the
1816 .OP readonly
1818 .OP writeany
1819 options.
1821 .KY xit
1822 .IP "[range] x[it][!] [file]"
1823 Write the file if it has been modified.
1824 The specified lines are written to
1825 .LI file ,
1826 if the file has been modified since the last complete write to any
1827 file.
1828 If no
1829 .LI range
1830 is specified, the entire file is written.
1833 .CO xit
1834 command will exit the editor after writing the file,
1835 if there are no further files to edit.
1836 Appending a
1837 .QT !
1838 character to the command name or entering two
1839 .QQ quit
1840 commands (i.e.
1841 .CO wq ,
1842 .CO quit ,
1843 .CO xit
1845 .CO ZZ )
1846 in a row) will override this check and the editor will exit,
1847 ignoring any files that have not yet been edited.
1849 .SP Line:
1850 Unchanged.
1851 .SP Options:
1852 Affected by the
1853 .OP readonly
1855 .OP writeany
1856 options.
1858 .KY yank
1859 .IP "[range] ya[nk] [buffer] [count]"
1860 Copy the specified lines to a buffer.
1861 If no buffer is specified, the unnamed buffer is used.
1863 .SP Line:
1864 Unchanged.
1865 .SP Options:
1866 None.
1868 .KY z
1869 .IP "[line] z [type] [count] [flags]"
1870 Adjust the window.
1871 If no
1872 .LI type
1873 is specified, then
1874 .LI count
1875 lines following the specified line are displayed.
1876 The default
1877 .LI count
1878 is the value of the
1879 .OP window
1880 option.
1882 .LI type
1883 argument changes the position at which
1884 .LI line
1885 is displayed on the screen by changing the number of lines
1886 displayed before and after
1887 .LI line .
1888 The following
1889 .LI type
1890 characters may be used:
1892 .SP \-
1893 Place the line at the bottom of the screen.
1894 .SP +
1895 Place the line at the top of the screen.
1896 .SP \&.
1897 Place the line in the middle of the screen.
1898 .SP ^
1899 Write out count lines starting
1900 .LI "count * 2"
1901 lines before
1902 .LI line ;
1903 the net effect of this is that a
1904 .QT z^
1905 command following a
1906 .CO z
1907 command writes the previous page.
1908 .SP =
1909 Center
1910 .LI line
1911 on the screen with a line of hyphens displayed immediately before and
1912 after it.
1913 The number of preceding and following lines of text displayed are
1914 reduced to account for those lines.
1917 .SP Line:
1918 Set to the last line displayed, with the exception of the
1919 .Dq Li \&=
1920 .LI type ,
1921 where the current line is set to the line specified by the command.
1922 .SP Options:
1923 Affected by the
1924 .OP scroll
1925 option.