__aeabi_ldivmod: fix sign logic
[minix.git] / usr.bin / nvi / docs / USD.doc / vi.ref / vi.cmd.roff
blobd515f971b35d991b5abb49f0ac5c73b0237fa4b6
1 .\"     $NetBSD: vi.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 .\"     @(#)vi.cmd.roff 8.49 (Berkeley) 8/17/96
11 .\"
12 .SH 1 "Vi Description"
13 .pp
14 .CO Vi
15 takes up the entire screen to display the edited file,
16 except for the bottom line of the screen.
17 The bottom line of the screen is used to enter
18 .CO ex
19 commands, and for
20 .CO vi
21 error and informational messages.
22 If no other information is being displayed,
23 the default display can show the current cursor row and cursor column,
24 an indication of whether the file has been modified,
25 and the current mode of the editor.
26 See the
27 .OP ruler
28 and
29 .OP showmode
30 options for more information.
31 .pp
32 Empty lines do not have any special representation on the screen,
33 but lines on the screen that would logically come after the end of
34 the file are displayed as a single tilde
35 .PQ ~
36 character.
37 To differentiate between empty lines and lines consisting of only
38 whitespace characters, use the
39 .OP list
40 option.
41 Historically, implementations of
42 .CO vi
43 have also displayed some lines as single asterisk
44 .PQ @
45 characters.
46 These were lines that were not correctly displayed, i.e. lines on the
47 screen that did not correspond to lines in the file, or lines that did
48 not fit on the current screen.
49 .CO Nvi
50 never displays lines in this fashion.
51 .pp
52 .CO Vi
53 is a modeful editor, i.e. it has two modes,
54 .QQ command
55 mode and
56 .QQ "text input"
57 mode.
58 When
59 .CO vi
60 first starts, it is in command mode.
61 There are several commands that change
62 .CO vi
63 into text input mode.
64 The
65 .LI <escape>
66 character is used to resolve the text input into the file,
67 and exit back into command mode.
69 .CO vi
70 command mode, the cursor is always positioned on the last column of
71 characters which take up more than one column on the screen.
73 .CO vi
74 text insert mode, the cursor is positioned on the first column of
75 characters which take up more than one column on the screen.
76 .pp
77 When positioning the cursor to a new line and column,
78 the type of movement is defined by the distance to the new cursor position.
79 If the new position is close,
80 the screen is scrolled to the new location.
81 If the new position is far away,
82 the screen is repainted so that the new position is on the screen.
83 If the screen is scrolled,
84 it is moved a minimal amount,
85 and the cursor line will usually appear at the top or bottom of the screen.
86 If the screen is repainted,
87 the cursor line will appear in the center of the screen,
88 unless the cursor is sufficiently close to the beginning or end of the file
89 that this isn't possible.
90 If the
91 .OP leftright
92 option is set, the screen may be scrolled or repainted in a horizontal
93 direction as well as in a vertical one.
94 .pp
95 A major difference between the historical
96 .CO vi
97 presentation and
98 .CO nvi
99 is in the scrolling and screen oriented position commands,
100 .CO <control-B> ,
101 .CO <control-D> ,
102 .CO <control-E> ,
103 .CO <control-F> ,
104 .CO <control-U> ,
105 .CO <control-Y> ,
106 .CO H ,
107 .CO L
109 .CO M .
110 In historical implementations of
111 .CO vi ,
112 these commands acted on physical (as opposed to logical, or screen)
113 lines.
114 For lines that were sufficiently long in relation to the size of the
115 screen, this meant that single line scroll commands might repaint the
116 entire screen, scrolling or screen positioning commands might not change
117 the screen or move the cursor at all, and some lines simply could not
118 be displayed, even though
119 .CO vi
120 would edit the file that contained them.
122 .CO nvi ,
123 these commands act on logical, i.e. screen lines.
124 You are unlikely to notice any difference unless you are editing files
125 with lines significantly longer than a screen width.
127 .CO Vi
128 keeps track of the currently
129 .QQ "most attractive"
130 cursor position.
131 Each command description (for commands that alter the current cursor
132 position),
133 specifies if the cursor is set to a specific location in the line,
134 or if it is moved to the
135 .QQ "most attractive cursor position" .
136 The latter means that the cursor is moved to the cursor position that
137 is horizontally as close as possible to the current cursor position.
138 If the current line is shorter than the cursor position
139 .CO vi
140 would select, the cursor is positioned on the last character in the line.
141 (If the line is empty, the cursor is positioned on the first column
142 of the line.)
143 If a command moves the cursor to the most attractive position,
144 it does not alter the current cursor position, and a subsequent
145 movement will again attempt to move the cursor to that position.
146 Therefore, although a movement to a line shorter than the currently
147 most attractive position will cause the cursor to move to the end of
148 that line, a subsequent movement to a longer line will cause the
149 cursor to move back to the most attractive position.
151 In addition, the
152 .CO $
153 command makes the end of each line the most attractive cursor position
154 rather than a specific column.
156 Each
157 .CO vi
158 command described below notes where the cursor ends up after it is
159 executed.
160 This position is described in terms of characters on the line, i.e.
161 .QQ "the previous character" ,
163 .QQ "the last character in the line" .
164 This is to avoid needing to continually refer to on what part of the
165 character the cursor rests.
167 The following words have special meaning for
168 .CO vi
169 commands.
170 .KY "previous context"
171 .IP "previous context"
172 The position of the cursor before the command which caused the
173 last absolute movement was executed.
174 Each 
175 .CO vi
176 command described in the next section that is considered an
177 absolute movement is so noted.
178 In addition, specifying
179 .i any
180 address to an
181 .CO ex
182 command is considered an absolute movement.
183 .KY "motion"
184 .IP "motion"
185 A second
186 .CO vi
187 command can be used as an optional trailing argument to the
188 .CO vi
189 .CO \&< ,
190 .CO \&> ,
191 .CO \&! ,
192 .CO \&c ,
193 .CO \&d ,
194 .CO \&y ,
195 and (depending on the
196 .OP tildeop
197 option)
198 .CO \&~
199 commands.
200 This command indicates the end of the region of text that's affected by
201 the command.
202 The motion command may be either the command character repeated (in
203 which case it means the current line) or a cursor movement command.
204 In the latter case, the region affected by the command is from the
205 starting or stopping cursor position which comes first in the file,
206 to immediately before the starting or stopping cursor position which
207 comes later in the file.
208 Commands that operate on lines instead of using beginning and ending
209 cursor positions operate on all of the lines that are wholly or
210 partially in the region.
211 In addition, some other commands become line oriented depending on
212 where in the text they are used.
213 The command descriptions below note these special cases.
215 The following commands may all be used as motion components for
216 .CO vi
217 commands:
219 .ne 12v
220 .ft C
222 r r r r.
223 <control-A>     <control-H>     <control-J>     <control-M>
224 <control-N>     <control-P>     <space> $
225 %       '<character>    (       )
226 +       ,       -       /
227 0       ;       ?       B
228 E       F       G       H
229 L       M       N       T
230 W       [[      ]]      ^
231 \&_     `<character>    b       e
232 f       h       j       k
233 l       n       t       w
234 {       |       }
236 .ft R
238 The optional count prefix available for some of the
239 .CO vi
240 commands that take motion commands,
241 or the count prefix available for the
242 .CO vi
243 commands that are used as motion components,
244 may be included and is
245 .i always
246 considered part of the motion argument.
247 For example, the commands
248 .QT c2w
250 .QT 2cw
251 are equivalent, and the region affected by the
252 .CO c
253 command is two words of text.
254 In addition,
255 if the optional count prefix is specified for both the
256 .CO vi
257 command and its motion component,
258 the effect is multiplicative and is considered part of the motion argument.
259 For example, the commands
260 .QT 4cw
262 .QT 2c2w
263 are equivalent, and the region affected by the
264 .CO c
265 command is four words of text.
266 .KY "count"
267 .IP "count"
268 A positive number used as an optional argument to most commands,
269 either to give a size or a position (for display or movement commands),
270 or as a repeat count (for commands that modify text).
271 The count argument is always optional and defaults to 1 unless otherwise
272 noted in the command description.
274 When a
275 .CO vi
276 command synopsis shows both a
277 .LI [buffer]
279 .LI [count] ,
280 they may be presented in any order.
281 .KY word
282 .IP word
283 Generally, in languages where it is applicable,
284 .CO vi
285 recognizes two kinds of words.
286 First, a sequence of letters, digits and underscores,
287 delimited at both ends by:
288 characters other than letters, digits, or underscores,
289 the beginning or end of a line, and the beginning or end of the file.
290 Second, a sequence of characters other than letters, digits, underscores,
291 or whitespace characters, delimited at both ends by: a letter, digit,
292 underscore, or whitespace character,
293 the beginning or end of a line, and the beginning or end of the file.
294 For example, the characters
295 .QT " !@#abc$%^ "
296 contain three words:
297 .QT "!@#" ,
298 .QT "abc"
300 .QT "$%^" .
302 Groups of empty lines (or lines containing only whitespace characters)
303 are treated as a single word.
304 .KY "bigword"
305 .IP "bigword"
306 A set of non-whitespace characters preceded and followed by whitespace
307 characters or the beginning or end of the file or line.
308 For example, the characters
309 .QT " !@#abc$%^ "
310 contain one bigword:
311 .QT "!@#abc$%^" .
313 Groups of empty lines (or lines containing only whitespace characters)
314 are treated as a single bigword.
315 .KY "paragraph"
316 .IP "paragraph"
317 An area of text that begins with either the beginning of a file,
318 an empty line, or a section boundary, and continues until either
319 an empty line, section boundary, or the end of the file.
321 Groups of empty lines (or lines containing only whitespace characters)
322 are treated as a single paragraph.
324 Additional paragraph boundaries can be defined using the
325 .OP paragraphs
326 option.
327 .KY "section"
328 .IP "section"
329 An area of text that starts with the beginning of the file or a line
330 whose first character is an open brace
331 .PQ {
332 and continues until the next section or the end of the file.
334 Additional section boundaries can be defined using the
335 .OP sections
336 option.
337 .KY "sentence"
338 .IP "sentence"
339 An area of text that begins with either the beginning of the file or the
340 first nonblank character following the previous sentence, paragraph, or
341 section boundary and continues until the end of the file or a period
342 .PQ \&.
343 exclamation point
344 .PQ !
345 or question mark
346 .PQ ?
347 character,
348 followed by either an end-of-line or two whitespace characters.
349 Any number of closing parentheses
350 .PQ ) ,
351 brackets
352 .PQ ] ,
353 double-quote
354 .PQ """"
355 or single quote
356 .PQ '
357 characters can appear between the period, exclamation point,
358 or question mark and the whitespace characters or end-of-line.
360 Groups of empty lines (or lines containing only whitespace characters)
361 are treated as a single sentence.
362 .SH 1 "Vi Commands"
364 The following section describes the commands available in the command
365 mode of the
366 .CO vi
367 editor.
368 In each entry below, the tag line is a usage synopsis for the command
369 character.
370 In addition, the final line and column the cursor rests upon,
371 and any options which affect the command are noted.
372 .KY <control-A>
373 .IP "[count] <control-A>"
374 Search forward
375 .LI count
376 times for the current word.
377 The current word begins at the first non-whitespace character on or
378 after the current cursor position,
379 and extends up to the next non-word character or the end of the line.
380 The search is literal, i.e. no characters in the word have any special
381 meaning in terms of Regular Expressions.
382 It is an error if no matching pattern is found between the starting position
383 and the end of the file.
386 .CO <control-A>
387 command is an absolute movement.
389 .CO <control-A>
390 command may be used as the motion component of other
391 .CO vi
392 commands, in which case any text copied into a buffer is
393 character oriented.
395 .SP Line:
396 Set to the line where the word is found.
397 .SP Column:
398 Set to the first character of the word.
399 .SP Options:
400 Affected by the
401 .OP ignorecase
403 .OP wrapscan
404 options.
406 .KY <control-B>
407 .IP "[count] <control-B>"
408 Page backward
409 .LI count
410 screens.
411 Two lines of overlap are maintained, if possible,
412 by displaying the window starting at line
413 .LI "(top_line - count * window_size) + 2" ,
414 where
415 .LI window_size
416 is the value of the
417 .OP window
418 option.
419 (In the case of split screens, this size is corrected to the
420 current screen size.)
421 It is an error if the movement is past the beginning of the file.
423 .SP Line:
424 Set to the last line of text displayed on the screen.
425 .SP Column:
426 Set to the first nonblank character of the line.
427 .SP Options:
428 Affected by the
429 .OP window
430 option.
432 .KY <control-D>
433 .IP "[count] <control-D>"
434 Scroll forward
435 .LI count
436 lines.
438 .LI count
439 is not specified, scroll forward the number of lines specified by the last
440 .CO <control-D>
442 .CO <control-U>
443 command.
444 If this is the first
445 .CO <control-D>
447 .CO <control-U>
448 command,
449 scroll forward half the number of lines in the screen.
450 (In the case of split screens, the default scrolling distance is
451 corrected to half the current screen size.)
452 It is an error if the movement is past the end of the file.
454 .SP Line:
455 Set to the current line plus the number of lines scrolled.
456 .SP Column:
457 Set to the first nonblank character of the line.
458 .SP Options:
459 None.
461 .KY <control-E>
462 .IP "[count] <control-E>"
463 Scroll forward
464 .LI count
465 lines, leaving the cursor on the current line and column, if possible.
466 It is an error if the movement is past the end of the file.
468 .SP Line:
469 Unchanged unless the current line scrolls off the screen,
470 in which case it is set to the first line on the screen.
471 .SP Column:
472 Unchanged unless the current line scrolls off the screen,
473 in which case it is set to the most attractive cursor position.
474 .SP Options:
475 None.
477 .KY <control-F>
478 .IP "[count] <control-F>"
479 Page forward
480 .LI count
481 screens.
482 Two lines of overlap are maintained, if possible,
483 by displaying the window starting at line
484 .LI "top_line + count * window_size - 2" ,
485 where
486 .LI window_size
487 is the value of the
488 .OP window
489 option.
490 (In the case of split screens, this size is corrected to the
491 current screen size.)
492 It is an error if the movement is past the end of the file.
494 .SP Line:
495 Set to the first line on the screen.
496 .SP Column:
497 Set to the first nonblank character of the current line.
498 .SP Options:
499 Affected by the
500 .OP window
501 option.
503 .KY <control-G>
504 .IP "<control-G>"
505 Display the file information.
506 The information includes the current pathname, the current line,
507 the number of total lines in the file, the current line as a percentage
508 of the total lines in the file, if the file has been modified,
509 was able to be locked, if the file's name has been changed,
510 and if the edit session is read-only.
512 .SP Line:
513 Unchanged.
514 .SP Column:
515 Unchanged.
516 .SP Options:
517 None.
519 .KY <control-H>
520 .IP "[count] <control-H>"
521 .Ip "[count] h"
522 Move the cursor back
523 .LI count
524 characters in the current line.
525 It is an error if the cursor is on the first character in the line.
528 .CO <control-H>
530 .CO h
531 commands may be used as the motion component of other
532 .CO vi
533 commands,
534 in which case any text copied into a buffer is character oriented.
536 .SP Line:
537 Unchanged.
538 .SP Column:
539 Set to the
540 .LI "current - count"
541 character, or, the first character in the line if
542 .LI count
543 is greater than or equal to the number of characters in the line
544 before the cursor.
545 .SP Options:
546 None.
548 .KY <control-J>
549 .IP "[count] <control-J>"
550 .KY <control-N>
551 .Ip "[count] <control-N>"
552 .KY j
553 .Ip "[count] j"
554 Move the cursor down
555 .LI count
556 lines without changing the current column.
557 It is an error if the movement is past the end of the file.
560 .CO <control-J> ,
561 .CO <control-N>
563 .CO j
564 commands may be used as the motion component of other
565 .CO vi
566 commands, in which case any text copied into a buffer is
567 line oriented.
569 .SP Line:
570 Set to the current line plus
571 .LI count .
572 .SP Column:
573 The most attractive cursor position.
574 .SP Options:
575 None.
577 .KY <control-L>
578 .IP "<control-L>"
579 .KY <control-R>
580 .Ip "<control-R>"
581 Repaint the screen.
583 .SP Line:
584 Unchanged.
585 .SP Column:
586 Unchanged.
587 .SP Options:
588 None.
590 .KY <control-M>
591 .IP "[count] <control-M>"
592 .KY +
593 .Ip "[count] +"
594 Move the cursor down
595 .LI count
596 lines to the first nonblank character of that line.
597 It is an error if the movement is past the end of the file.
600 .CO <control-M>
602 .CO +
603 commands may be used as the motion component of other
604 .CO vi
605 commands, in which case any text copied into a buffer is
606 line oriented.
608 .SP Line:
609 Set to the current line plus
610 .LI count .
611 .SP Column:
612 Set to the first nonblank character in the line.
613 .SP Options:
614 None.
616 .KY <control-P>
617 .IP "[count] <control-P>"
618 .KY k
619 .Ip "[count] k"
620 Move the cursor up
621 .LI count
622 lines, without changing the current column.
623 It is an error if the movement is past the beginning of the file.
626 .CO <control-P>
628 .CO k
629 commands may be used as the motion component of other
630 .CO vi
631 commands, in which case any text copied into a buffer is
632 line oriented.
634 .SP Line:
635 Set to the current line minus
636 .LI count .
637 .SP Column:
638 The most attractive cursor position.
639 .SP Options:
640 None.
642 .KY <control-T>
643 .IP "<control-T>"
644 Return to the most recent tag context.
646 .CO <control-T>
647 command is an absolute movement.
649 .SP Line:
650 Set to the context of the previous tag command.
651 .SP Column:
652 Set to the context of the previous tag command.
653 .SP Options:
654 None.
656 .KY <control-U>
657 .IP "[count] <control-U>"
658 Scroll backward
659 .LI count
660 lines.
662 .LI count
663 is not specified, scroll backward the number of lines specified by the
664 last
665 .CO <control-D>
667 .CO <control-U>
668 command.
669 If this is the first
670 .CO <control-D>
672 .CO <control-U>
673 command,
674 scroll backward half the number of lines in the screen.
675 (In the case of split screens, the default scrolling distance is
676 corrected to half the current screen size.)
677 It is an error if the movement is past the beginning of the file.
679 .SP Line:
680 Set to the current line minus the amount scrolled.
681 .SP Column:
682 Set to the first nonblank character in the line.
683 .SP Options:
684 None.
686 .KY <control-W>
687 .IP "<control-W>"
688 Switch to the next lower screen in the window, or, to the first
689 screen if there are no lower screens in the window.
691 .SP Line:
692 Set to the previous cursor position in the window.
693 .SP Column:
694 Set to the previous cursor position in the window.
695 .SP Options:
696 None.
698 .KY <control-Y>
699 .IP "[count] <control-Y>"
700 Scroll backward
701 .LI count
702 lines, leaving the current line and column as is, if possible.
703 It is an error if the movement is past the beginning of the file.
705 .SP Line:
706 Unchanged unless the current line scrolls off the screen,
707 in which case it is set to the last line of text displayed
708 on the screen.
709 .SP Column:
710 Unchanged unless the current line scrolls off the screen,
711 in which case it is the most attractive cursor position.
712 .SP Options:
713 None.
715 .KY <control-Z>
716 .IP "<control-Z>"
717 Suspend the current editor session.
718 If the file has been modified since it was last completely written,
719 and the
720 .OP autowrite
721 option is set, the file is written before the editor session is
722 suspended.
723 If this write fails, the editor session is not suspended.
725 .SP Line:
726 Unchanged.
727 .SP Column:
728 Unchanged.
729 .SP Options:
730 Affected by the
731 .OP autowrite
732 option.
734 .KY <escape>
735 .IP "<escape>"
736 Execute
737 .CO ex
738 commands or cancel partial commands.
739 If an
740 .CO ex
741 command is being entered (e.g.
742 .CO / ,
743 .CO ? ,
744 .CO :
746 .CO ! ),
747 the command is executed.
748 If a partial command has been entered, e.g.
749 .QT "[0-9]*" ,
751 .QT "[0-9]*[!<>cdy]" ,
752 the command is cancelled.
753 Otherwise, it is an error.
755 .SP Line:
756 When an
757 .CO ex
758 command is being executed, the current line is set as described for
759 that command.
760 Otherwise, unchanged.
761 .SP Column:
762 When an
763 .CO ex
764 command is being executed, the current column is set as described for
765 that command.
766 Otherwise, unchanged.
767 .SP Options:
768 None.
770 .KY <control-]>
771 .IP "<control-]>"
772 Push a tag reference onto the tag stack.
773 The tags files (see the
774 .OP tags
775 option for more information) are searched for a tag matching the
776 current word.
777 The current word begins at the first non-whitespace character on or
778 after the current cursor position,
779 and extends up to the next non-word character or the end of the line.
780 If a matching tag is found, the current file is discarded and the
781 file containing the tag reference is edited.
783 If the current file has been modified since it was last completely
784 written, the command will fail.
786 .CO <control-]>
787 command is an absolute movement.
789 .SP Line:
790 Set to the line containing the matching tag string.
791 .SP Column:
792 Set to the start of the matching tag string.
793 .SP Options:
794 Affected by the
795 .OP tags
797 .OP taglength
798 options.
800 .KY <control-^>
801 .IP "<control-^>"
802 Switch to the most recently edited file.
804 If the file has been modified since it was last completely written,
805 and the
806 .OP autowrite
807 option is set, the file is written out.
808 If this write fails, the command will fail.
809 Otherwise, if the current file has been modified since it was last
810 completely written, the command will fail.
812 .SP Line:
813 Set to the line the cursor was on when the file was last edited.
814 .SP Column:
815 Set to the column the cursor was on when the file was last edited.
816 .SP Options:
817 Affected by the
818 .OP autowrite
819 option.
821 .KY <space>
822 .IP "[count] <space>"
823 .KY l
824 .Ip "[count] l"
825 Move the cursor forward
826 .LI count
827 characters without changing the current line.
828 It is an error if the cursor is on the last character in the line.
831 .CO <space>
833 .CO \&l
834 commands may be used as the motion component of other
835 .CO vi
836 commands, in which case any text copied into a buffer is
837 character oriented.
838 In addition, these commands may be used as the motion components
839 of other commands when the cursor is on the last character in the
840 line, without error.
842 .SP Line:
843 Unchanged.
844 .SP Column:
845 Set to the current character plus the next
846 .LI count
847 characters, or to the last character on the line if
848 .LI count
849 is greater than the number of characters in the line after the
850 current character.
851 .SP Options:
852 None.
854 .KY !
855 .IP "[count] ! motion shell-argument(s)<carriage-return>"
856 Replace text with results from a shell command.
857 Pass the lines specified by the
858 .LI count
860 .LI motion
861 arguments as standard input to the program named by the
862 .OP shell
863 option, and replace those lines with the output (both
864 standard error and standard output) of that command.
866 After the motion is entered,
867 .CO vi
868 prompts for arguments to the shell command.
870 Within those arguments,
871 .QT %
873 .QT #
874 characters are expanded to the current and alternate pathnames,
875 respectively.
877 .QT !
878 character is expanded with the command text of the previous
879 .CO !
881 .CO :!
882 commands.
883 (Therefore, the command
884 .CO !<motion>!
885 repeats the previous
886 .CO !
887 command.)
888 The special meanings of
889 .QT % ,
890 .QT #
892 .QT !
893 can be overridden by escaping them with a backslash.
894 If no
895 .CO !
897 .CO :!
898 command has yet been executed,
899 it is an error to use an unescaped
900 .QT !
901 character as a shell argument.
903 .CO !
904 command does
905 .i not
906 do shell expansion on the strings provided as arguments.
907 If any of the above expansions change the arguments the user entered,
908 the command is redisplayed at the bottom of the screen.
910 .CO Vi
911 then executes the program named by the
912 .OP shell
913 option, with a
914 .b \-c
915 flag followed by the arguments (which are bundled into a single argument).
918 .CO !
919 command is permitted in an empty file.
921 If the file has been modified since it was last completely written,
923 .CO !
924 command will warn you.
926 .SP Line:
927 The first line of the replaced text.
928 .SP Column:
929 The first column of the replaced text.
930 .SP Options:
931 Affected by the
932 .OP shell
933 option.
935 .KY #
936 .IP "[count] # #|+|-"
937 Increment or decrement the number referenced by the cursor.
938 If the trailing character is a
939 .LI \&+
941 .LI \&# ,
942 the number is incremented by
943 .LI count .
944 If the trailing character is a
945 .LI \&- ,
946 the number is decremented by
947 .LI count .
949 A leading
950 .QT \&0X
952 .QT \&0x
953 causes the number to be interpreted as a hexadecimal number.
954 Otherwise, a leading
955 .QT \&0
956 causes the number to be interpreted as an octal number, unless a non-octal
957 digit is found as part of the number.
958 Otherwise, the number is interpreted as a decimal number, and may
959 have a leading
960 .LI \&+
962 .LI \&-
963 sign.
964 The current number begins at the first non-blank character at or after
965 the current cursor position, and extends up to the end of the line or
966 the first character that isn't a possible character for the numeric type.
967 The format of the number (e.g. leading 0's, signs) is retained unless
968 the new value cannot be represented in the previous format.
970 Octal and hexadecimal numbers, and the result of the operation, must fit
971 into an
972 .QT "unsigned long" .
973 Similarly, decimal numbers and their result must fit into a
974 .QT "signed long" .
975 It is an error to use this command when the cursor is not positioned at
976 a number.
979 .SP Line:
980 Unchanged.
981 .SP Column:
982 Set to the first character in the cursor number.
983 .SP Options:
984 None.
986 .KY $
987 .IP "[count] $"
988 Move the cursor to the end of a line.
990 .LI count
991 is specified, the cursor moves down
992 .LI "count - 1"
993 lines.
995 It is not an error to use the
996 .CO $
997 command when the cursor is on the last character in the line or
998 when the line is empty.
1001 .CO $
1002 command may be used as the motion component of other
1003 .CO vi
1004 commands, in which case any text copied into a buffer is
1005 character oriented, unless the cursor is at, or before the first
1006 nonblank character in the line, in which case it is line oriented.
1007 It is not an error to use the
1008 .CO $
1009 command as a motion component when the cursor is on the last character
1010 in the line, although it is an error when the line is empty.
1012 .SP Line:
1013 Set to the current line plus
1014 .LI count
1015 minus 1.
1016 .SP Column:
1017 Set to the last character in the line.
1018 .SP Options:
1019 None.
1021 .KY %
1022 .IP %
1023 Move to the matching character.
1024 The cursor moves to the bracket character that
1025 .i matches
1026 the bracket found at the current cursor position
1027 or which is the closest one to the right of the cursor on the line.
1028 The bracket characters are defined by the
1029 .OP matchchars
1030 option.
1031 An error will be reported if none of the
1032 .OP matchchars
1033 characters is found, or if no matching character is found.
1034 If the open and close brackes are identical (e.g.: if they are
1035 .QT '
1037 .QT " ),
1038 then repeating a
1039 .CO %
1040 command will perform a backwards search from the original opening bracket.
1041 Historically, any
1042 .LI count
1043 specified to the
1044 .CO %
1045 command was ignored.
1048 .CO %
1049 command is an absolute movement.
1051 .CO %
1052 command may be used as the motion component of other
1053 .CO vi
1054 commands, in which case any text copied into a buffer is
1055 character oriented, unless the starting point of the region is at
1056 or before the first nonblank character on its line, and the ending
1057 point is at or after the last nonblank character on its line, in
1058 which case it is line oriented.
1060 .SP Line:
1061 Set to the line containing the matching character.
1062 .SP Column:
1063 Set to the matching character.
1064 .SP Options:
1065 None.
1067 .KY &
1068 .IP "&"
1069 Repeat the previous substitution command on the current line.
1071 Historically, any
1072 .LI count
1073 specified to the
1074 .CO &
1075 command was ignored.
1077 .SP Line:
1078 Unchanged.
1079 .SP Column:
1080 Unchanged if the cursor was on the last character in the line,
1081 otherwise, set to the first nonblank character in the line.
1082 .SP Options:
1083 Affected by the
1084 .OP edcompatible ,
1085 .OP extended ,
1086 .OP ignorecase
1088 .OP magic
1089 options.
1091 .KY SQUOTE<character>
1092 .IP \'<character>
1093 .KY `<character>
1094 .Ip `<character>
1095 Return to a context marked by the character
1096 .LI <character> .
1098 .LI <character>
1099 is the
1100 .QT '
1102 .QT `
1103 character, return to the previous context.
1105 .LI <character>
1106 is any other character,
1107 return to the context marked by that character (see the
1108 .CO m
1109 command for more information).
1110 If the command is the
1111 .CO \'
1112 command, only the line value is restored,
1113 and the cursor is placed on the first nonblank character of that line.
1114 If the command is the
1115 .CO `
1116 command, both the line and column values are restored.
1118 It is an error if the context no longer exists because of
1119 line deletion.
1120 (Contexts follow lines that are moved, or which are deleted
1121 and then restored.)
1124 .CO \'
1126 .CO `
1127 commands are both absolute movements.
1128 They may be used as a motion component for other
1129 .CO vi
1130 commands.
1131 For the
1132 .CO \'
1133 command, any text copied into a buffer is line oriented.
1134 For the
1135 .CO `
1136 command,
1137 any text copied into a buffer is character oriented,
1138 unless it both starts and stops at the first character in the line,
1139 in which case it is line oriented.
1140 In addition, when using the
1141 .CO `
1142 command as a motion component,
1143 commands which move backward and started at the first character in the line,
1144 or move forward and ended at the first character in the line,
1145 are corrected to the last character of the line preceding the starting and
1146 ending lines, respectively.
1148 .SP Line:
1149 Set to the line from the context.
1150 .SP Column:
1151 Set to the first nonblank character in the line, for the
1152 .CO \'
1153 command, and set to the context's column for the
1154 .CO `
1155 command.
1156 .SP Options:
1157 None.
1159 .KY (
1160 .IP "[count] ("
1161 Back up
1162 .LI count
1163 sentences.
1166 .CO (
1167 command is an absolute movement.
1169 .CO (
1170 command may be used as the motion component of other
1171 .CO vi
1172 commands,
1173 in which case any text copied into a buffer is character oriented,
1174 unless the starting and stopping points of the region are the first
1175 character in the line,
1176 in which case it is line oriented.
1177 If it is line oriented,
1178 the starting point of the region is adjusted to be the end of the line
1179 immediately before the starting cursor position.
1181 .SP Line:
1182 Set to the line containing the beginning of the sentence.
1183 .SP Column:
1184 Set to the first nonblank character of the sentence.
1185 .SP Options:
1186 Affected by the
1187 .OP lisp
1188 option.
1190 .KY )
1191 .IP "[count] )"
1192 Move forward
1193 .LI count
1194 sentences.
1197 .CO )
1198 command is an absolute movement.
1200 .CO )
1201 command may be used as the motion component of other
1202 .CO vi
1203 commands, in which case any text copied into a buffer is
1204 character oriented, unless the starting point of the region is the
1205 first character in the line, in which case it is line oriented.
1206 In the latter case, if the stopping point of the region is also
1207 the first character in the line, it is adjusted to be the end of the
1208 line immediately before it.
1210 .SP Line:
1211 Set to the line containing the beginning of the sentence.
1212 .SP Column:
1213 Set to the first nonblank character of the sentence.
1214 .SP Options:
1215 Affected by the
1216 .OP lisp
1217 option.
1219 .KY ,
1220 .IP "[count] ,"
1221 Reverse find character
1222 .LI count
1223 times.
1224 Reverse the last
1225 .CO F ,
1226 .CO f ,
1227 .CO T
1229 .CO t
1230 command, searching the other way in the line,
1231 .LI count
1232 times.
1233 It is an error if a
1234 .CO F ,
1235 .CO f ,
1236 .CO T
1238 .CO t
1239 command has not been performed yet.
1242 .CO ,
1243 command may be used as the motion component of other
1244 .CO vi
1245 commands, in which case any text copied into a buffer is
1246 character oriented.
1248 .SP Line:
1249 Unchanged.
1250 .SP Column:
1251 Set to the searched-for character for the
1252 .CO F
1254 .CO f
1255 commands,
1256 before the character for the
1257 .CO t
1258 command
1259 and after the character for the
1260 .CO T
1261 command.
1262 .SP Options:
1263 None.
1265 .KY MINUSSIGN
1266 .IP "[count] \-"
1267 Move to the first nonblank of the previous line,
1268 .LI count
1269 times.
1271 It is an error if the movement is past the beginning of the file.
1274 .CO -
1275 command may be used as the motion component of other
1276 .CO vi
1277 commands, in which case any text copied into a buffer is
1278 line oriented.
1280 .SP Line:
1281 Set to the current line minus
1282 .LI count .
1283 .SP Column:
1284 Set to the first nonblank character in the line.
1285 .SP Options:
1286 None.
1288 .KY \&.
1289 .IP "[count] \&."
1290 Repeat the last
1291 .CO vi
1292 command that modified text.
1293 The repeated command may be a command and motion component combination.
1295 .LI count
1296 is specified, it replaces
1297 .i both
1298 the count specified for the repeated command, and, if applicable, for
1299 the repeated motion component.
1301 .LI count
1302 is not specified, the counts originally specified to the command being
1303 repeated are used again.
1305 As a special case, if the
1306 .CO \.
1307 command is executed immediately after the
1308 .CO u
1309 command, the change log is rolled forward or backward, depending on
1310 the action of the
1311 .CO u
1312 command.
1314 .SP Line:
1315 Set as described for the repeated command.
1316 .SP Column:
1317 Set as described for the repeated command.
1318 .SP Options:
1319 None.
1321 .KY /RE/
1322 .IP "/RE<carriage-return>"
1323 .Ip "/RE/ [offset]<carriage-return>"
1324 .KY ?RE?
1325 .Ip "?RE<carriage-return>"
1326 .Ip "?RE? [offset]<carriage-return>"
1327 .KY N
1328 .Ip "N"
1329 .KY n
1330 .Ip "n"
1331 Search forward or backward for a regular expression.
1332 The commands beginning with a slash
1333 .PQ /
1334 character are forward searches, the commands beginning with a
1335 question mark
1336 .PQ ?
1337 are backward searches.
1338 .CO Vi
1339 prompts with the leading character on the last line of the screen
1340 for a string.
1341 It then searches forward or backward in the file for the next
1342 occurrence of the string, which is interpreted as a Basic Regular
1343 Expression.
1346 .CO /
1348 .CO ?
1349 commands are absolute movements.
1350 They may be used as the motion components of other
1351 .CO vi
1352 commands, in which case any text copied into a buffer is
1353 character oriented, unless the search started and ended on
1354 the first column of a line, in which case it is line oriented.
1355 In addition, forward searches ending at the first character of a line,
1356 and backward searches beginning at the first character in the line,
1357 are corrected to begin or end at the last character of the previous line.
1358 (Note, forward and backward searches can occur for both
1359 .CO /
1361 .CO ?
1362 commands, if the
1363 .OP wrapscan
1364 option is set.)
1366 If an offset from the matched line is specified (i.e. a trailing
1367 .QT /
1369 .QT ?
1370 character is followed by a signed offset), the buffer will always
1371 be line oriented (e.g.
1372 .QT /string/+0
1373 will always guarantee a line orientation).
1376 .CO N
1377 command repeats the previous search, but in the reverse direction.
1379 .CO n
1380 command repeats the previous search.
1381 If either the
1382 .CO N
1384 .CO n
1385 commands are used as motion components for the 
1386 .CO !
1387 command, you will not be prompted for the text of the bang command,
1388 instead the previous bang command will be executed.
1390 Missing RE's (e.g.
1391 .QT //<carriage-return> ,
1392 .QT /<carriage-return> ,
1393 .QT ??<carriage-return> ,
1395 .QT ?<carriage-return>
1396 search for the last search RE, in the indicated direction.
1398 Searches may be interrupted using the
1399 .LI <interrupt>
1400 character.
1402 Multiple search patterns may be grouped together by delimiting
1403 them with semicolons and zero or more whitespace characters, e.g.
1404 .LI "/foo/ ; ?bar?"
1405 searches forward for
1406 .LI foo
1407 and then, from that location, backwards for
1408 .LI bar .
1409 When search patterns are grouped together in this manner,
1410 the search patterns are evaluated left to right with the
1411 final cursor position determined by the last search pattern.
1413 It is also permissible to append a
1414 .CO z
1415 command to the search strings, e.g.
1416 .LI "/foo/ z."
1417 searches forward for the next occurrence of
1418 .LI foo ,
1419 and then positions that line in the middle of screen.
1421 .SP Line:
1422 Set to the line in which the match occurred.
1423 .SP Column:
1424 Set to the first character of the matched string.
1425 .SP Options:
1426 Affected by the
1427 .OP edcompatible ,
1428 .OP extended ,
1429 .OP ignorecase ,
1430 .OP magic ,
1432 .OP wrapscan
1433 options.
1435 .KY 0
1436 .IP "0"
1437 Move to the first character in the current line.
1438 It is not an error to use the
1439 .CO 0
1440 command when the cursor is on the first character in the line,
1443 .CO 0
1444 command may be used as the motion component of other
1445 .CO vi
1446 commands,
1447 in which case it is an error if the cursor is on the first character
1448 in the line,
1449 and any text copied into a buffer is character oriented.
1451 .SP Line:
1452 Unchanged.
1453 .SP Column:
1454 Set to the first character in the line.
1455 .SP Options:
1456 None.
1458 .KY :
1459 .IP ":"
1460 Execute an
1461 .CO ex
1462 command.
1463 .CO Vi
1464 prompts for an
1465 .CO ex
1466 command on the last line of the screen, using a colon
1467 .PQ :
1468 character.
1469 The command is terminated by a
1470 .LI <carriage-return> ,
1471 .LI <newline>
1473 .LI <escape>
1474 character; all of these characters may be escaped by using a
1475 .LI "<literal-next>"
1476 character.
1477 The command is then executed.
1479 If the
1480 .CO ex
1481 command writes to the screen,
1482 .CO vi
1483 will prompt the user for a
1484 .LI <carriage-return>
1485 before continuing
1486 when the
1487 .CO ex
1488 command finishes.
1489 Large amounts of output from the
1490 .CO ex
1491 command will be paged for the user, and the user prompted for a
1492 .LI <carriage-return>
1494 .LI <space>
1495 key to continue.
1496 In some cases, a quit (normally a
1497 .QQ q
1498 character) or
1499 .LI <interrupt>
1500 may be entered to interrupt the
1501 .CO ex
1502 command.
1504 When the
1505 .CO ex
1506 command finishes, and the user is prompted to resume visual mode,
1507 it is also possible to enter another
1508 .QT :
1509 character followed by another
1510 .CO ex
1511 command.
1513 .SP Line:
1514 The current line is set as described for the
1515 .CO ex
1516 command.
1517 .SP Column:
1518 The current column is set as described for the
1519 .CO ex
1520 command.
1521 .SP Options:
1522 Affected as described for the
1523 .CO ex
1524 command.
1526 .KY ;
1527 .IP "[count] ;"
1528 Repeat the last character find
1529 .LI count
1530 times.
1531 The last character find is one of the
1532 .CO F ,
1533 .CO f ,
1534 .CO T
1536 .CO t
1537 commands.
1538 It is an error if a
1539 .CO F ,
1540 .CO f ,
1541 .CO T
1543 .CO t
1544 command has not been performed yet.
1547 .CO ;
1548 command may be used as the motion component of other
1549 .CO vi
1550 commands, in which case any text copied into a buffer is
1551 character oriented.
1553 .SP Line:
1554 Unchanged.
1555 .SP Column:
1556 Set to the searched-for character for the
1557 .CO F
1559 .CO f
1560 commands,
1561 before the character for the
1562 .CO t
1563 command
1564 and after the character for the
1565 .CO T
1566 command.
1567 .SP Options:
1568 None.
1570 .KY <
1571 .IP "[count] < motion"
1572 .KY >
1573 .Ip "[count] > motion"
1574 Shift lines left or right.
1575 Shift the number of lines in the region specified by the
1576 .LI count
1578 .LI motion
1579 left (for the
1580 .CO <
1581 command) or right (for the
1582 .CO >
1583 command) by the number of columns specified by the
1584 .OP shiftwidth
1585 option.
1586 Only whitespace characters are deleted when shifting left.
1587 Once the first character in the line no longer contains a whitespace
1588 character, the command will succeed,
1589 but the line will not be modified.
1591 .SP Line:
1592 Unchanged.
1593 .SP Column:
1594 Set to the first nonblank character in the line.
1595 .SP Options:
1596 Affected by the
1597 .OP shiftwidth
1598 option.
1600 .KY @
1601 .IP "@ buffer"
1602 Execute a named buffer.
1603 Execute the named buffer as
1604 .CO vi
1605 commands.
1606 The buffer may include
1607 .CO ex
1608 commands, too, but they must be expressed as a
1609 .CO :
1610 command.
1611 If the buffer is line oriented,
1612 .LI <newline>
1613 characters are logically appended to each line of the buffer.
1614 If the buffer is character oriented,
1615 .LI <newline>
1616 characters are logically appended to all but the last line in the buffer.
1618 If the buffer name is
1619 .QT @ ,
1621 .QT * ,
1622 then the last buffer executed shall be used.
1623 It is an error to specify
1624 .QT @@
1626 .QT @*
1627 if there were no previous buffer executions.
1628 The text of a buffer may contain a
1629 .CO @
1630 command,
1631 and it is possible to create infinite loops in this manner.
1632 (The
1633 .LI <interrupt>
1634 character may be used to interrupt the loop.)
1636 .SP Line:
1637 The current line is set as described for the command(s).
1638 .SP Column:
1639 The current column is set as described for the command(s).
1640 .SP Options:
1641 None.
1643 .KY A
1644 .IP "[count] A"
1645 Enter input mode, appending the text after the end of the line.
1647 .LI count
1648 is specified, the text is repeatedly input
1649 .LI "count - 1"
1650 more times after input mode is exited.
1652 .SP Line:
1653 Set to the last line upon which characters were entered.
1654 .SP Column:
1655 Set to the last character entered.
1656 .SP Options:
1657 Affected by the
1658 .OP altwerase ,
1659 .OP autoindent ,
1660 .OP beautify ,
1661 .OP showmatch ,
1662 .OP ttywerase
1664 .OP wrapmargin
1665 options.
1667 .KY B
1668 .IP "[count] B"
1669 Move backward
1670 .LI count
1671 bigwords.
1672 Move the cursor backward to the beginning of a bigword by repeating the
1673 following algorithm: if the current position is at the beginning of a
1674 bigword or the character at the current position cannot be part of a bigword,
1675 move to the first character of the preceding bigword.
1676 Otherwise, move to the first character of the bigword at the current position.
1677 If no preceding bigword exists on the current line, move to the first
1678 character of the last bigword on the first preceding line that contains a
1679 bigword.
1682 .CO B
1683 command may be used as the motion component of other
1684 .CO vi
1685 commands, in which case any text copied into a buffer is
1686 character oriented.
1688 .SP Line:
1689 Set to the line containing the word selected.
1690 .SP Column:
1691 Set to the first character of the word selected.
1692 .SP Options:
1693 None.
1695 .KY C
1696 .IP "[buffer] [count] C"
1697 Change text from the current position to the end-of-line.
1699 .LI count
1700 is specified, the input text replaces from the current position to
1701 the end-of-line, plus
1702 .LI "count - 1"
1703 subsequent lines.
1705 .SP Line:
1706 Set to the last line upon which characters were entered.
1707 .SP Column:
1708 Set to the last character entered.
1709 .SP Options:
1710 Affected by the
1711 .OP altwerase ,
1712 .OP autoindent ,
1713 .OP beautify ,
1714 .OP showmatch ,
1715 .OP ttywerase
1717 .OP wrapmargin
1718 options.
1720 .KY D
1721 .IP "[buffer] D"
1722 Delete text from the current position to the end-of-line.
1724 It is not an error to execute the
1725 .CO D
1726 command on an empty line.
1728 .SP Line:
1729 Unchanged.
1730 .SP Column:
1731 Set to the character before the current character, or, column 1 if
1732 the cursor was on column 1.
1733 .SP Options:
1734 None.
1736 .KY E
1737 .IP "[count] E"
1738 Move forward
1739 .LI count
1740 end-of-bigwords.
1741 Move the cursor forward to the end of a bigword by repeating the
1742 following algorithm: if the current position is the end of a
1743 bigword or the character at that position cannot be part of a bigword,
1744 move to the last character of the following bigword.
1745 Otherwise, move to the last character of the bigword at the current
1746 position.
1747 If no succeeding bigword exists on the current line,
1748 move to the last character of the first bigword on the next following
1749 line that contains a bigword.
1752 .CO E
1753 command may be used as the motion component of other
1754 .CO vi
1755 commands, in which case any text copied into a buffer is
1756 character oriented.
1758 .SP Line:
1759 Set to the line containing the word selected.
1760 .SP Column:
1761 Set to the last character of the word selected.
1762 .SP Options:
1763 None.
1765 .KY F
1766 .IP "[count] F <character>"
1767 Search
1768 .LI count
1769 times backward through the current line for
1770 .LI <character> .
1773 .CO F
1774 command may be used as the motion component of other
1775 .CO vi
1776 commands, in which case any text copied into a buffer is
1777 character oriented.
1779 .SP Line:
1780 Unchanged.
1781 .SP Column:
1782 Set to the searched-for character.
1783 .SP Options:
1784 None.
1786 .KY G
1787 .IP "[count] G"
1788 Move to line
1789 .LI count ,
1790 or the last line of the file if
1791 .LI count
1792 not specified.
1795 .CO G
1796 command is an absolute movement.
1798 .CO \&G
1799 command may be used as the motion component of other
1800 .CO vi
1801 commands, in which case any text copied into a buffer is
1802 line oriented.
1804 .SP Line:
1805 Set to
1806 .LI count ,
1807 if specified, otherwise, the last line.
1808 .SP Column:
1809 Set to the first nonblank character in the line.
1810 .SP Options:
1811 None.
1813 .KY H
1814 .IP "[count] H"
1815 Move to the screen line
1816 .LI "count - 1"
1817 lines below the top of the screen.
1820 .CO H
1821 command is an absolute movement.
1823 .CO H
1824 command may be used as the motion component of other
1825 .CO vi
1826 commands, in which case any text copied into a buffer is
1827 line oriented.
1829 .SP Line:
1830 Set to the line
1831 .LI "count - 1"
1832 lines below the top of the screen.
1833 .SP Column:
1834 Set to the first nonblank character of the
1835 .i screen
1836 line.
1837 .SP Options:
1838 None.
1840 .KY I
1841 .IP "[count] I"
1842 Enter input mode, inserting the text at the beginning of the line.
1844 .LI count
1845 is specified, the text input is repeatedly input
1846 .LI "count - 1"
1847 more times.
1849 .SP Line:
1850 Set to the last line upon which characters were entered.
1851 .SP Column:
1852 Set to the last character entered.
1853 .SP Options:
1854 None.
1856 .KY J
1857 .IP "[count] J"
1858 Join lines.
1860 .LI count
1861 is specified,
1862 .LI count
1863 lines are joined; a minimum of two lines are always joined,
1864 regardless of the value of
1865 .LI count .
1867 If the current line ends with a whitespace character, all whitespace
1868 is stripped from the next line.
1869 Otherwise, if the next line starts with a open parenthesis
1870 .PQ (
1871 do nothing.
1872 Otherwise, if the current line ends with a question mark
1873 .PQ ? ,
1874 period
1875 .PQ \&.
1876 or exclamation point
1877 .PQ ! ,
1878 insert two spaces.
1879 Otherwise, insert a single space.
1881 It is not an error to join lines past the end of the file,
1882 i.e. lines that do not exist.
1884 .SP Line:
1885 Unchanged.
1886 .SP Column:
1887 Set to the character after the last character of the next-to-last
1888 joined line.
1889 .SP Options:
1890 None.
1892 .KY L
1893 .IP "[count] L"
1894 Move to the screen line
1895 .LI "count - 1"
1896 lines above the bottom of the screen.
1899 .CO L
1900 command is an absolute movement.
1902 .CO L
1903 command may be used as the motion component of other
1904 .CO vi
1905 commands, in which case any text copied into a buffer is
1906 line oriented.
1908 .SP Line:
1909 Set to the line
1910 .LI "count - 1"
1911 lines above the bottom of the screen.
1912 .SP Column:
1913 Set to the first nonblank character of the
1914 .i screen
1915 line.
1916 .SP Options:
1917 None.
1919 .KY  M
1920 .IP " M"
1921 Move to the screen line in the middle of the screen.
1924 .CO M
1925 command is an absolute movement.
1927 .CO M
1928 command may be used as the motion component of other
1929 .CO vi
1930 commands, in which case any text copied into a buffer is
1931 line oriented.
1933 Historically, any
1934 .LI count
1935 specified to the
1936 .CO M
1937 command was ignored.
1939 .SP Line:
1940 Set to the line in the middle of the screen.
1941 .SP Column:
1942 Set to the first nonblank character of the
1943 .i screen
1944 line.
1945 .SP Options:
1946 None.
1948 .KY O
1949 .IP "[count] O"
1950 Enter input mode, appending text in a new line above the current line.
1952 .LI count
1953 is specified, the text input is repeatedly input
1954 .LI "count - 1"
1955 more times.
1957 Historically, any
1958 .LI count
1959 specified to the
1960 .CO O
1961 command was ignored.
1963 .SP Line:
1964 Set to the last line upon which characters were entered.
1965 .SP Column:
1966 Set to the last character entered.
1967 .SP Options:
1968 Affected by the
1969 .OP altwerase ,
1970 .OP autoindent ,
1971 .OP beautify ,
1972 .OP showmatch ,
1973 .OP ttywerase
1975 .OP wrapmargin
1976 options.
1978 .KY P
1979 .IP "[buffer] P"
1980 Insert text from a buffer.
1981 Text from the buffer (the unnamed buffer by default) is inserted
1982 before the current column or, if the buffer is line oriented,
1983 before the current line.
1985 .SP Line:
1986 Set to the lowest numbered line insert,
1987 if the buffer is line oriented, otherwise unchanged.
1988 .SP Column:
1989 Set to the first nonblank character of the appended text,
1990 if the buffer is line oriented, otherwise, the last character
1991 of the appended text.
1992 .SP Options:
1993 None.
1995 .KY Q
1996 .IP "Q"
1997 Exit
1998 .CO vi
1999 (or visual) mode and switch to
2000 .CO ex
2001 mode.
2003 .SP Line:
2004 Unchanged.
2005 .SP Column:
2006 No longer relevant.
2007 .SP Options:
2008 None.
2010 .KY R
2011 .IP "[count] R"
2012 Enter input mode, replacing the characters in the current line.
2014 .LI count
2015 is specified, the text input is repeatedly input
2016 .LI "count - 1"
2017 more times.
2019 If the end of the current line is reached, no more characters are
2020 replaced and any further characters input are appended to the line.
2022 .SP Line:
2023 Set to the last line upon which characters were entered.
2024 .SP Column:
2025 Set to the last character entered.
2026 .SP Options:
2027 Affected by the
2028 .OP altwerase ,
2029 .OP autoindent ,
2030 .OP beautify ,
2031 .OP showmatch ,
2032 .OP ttywerase
2034 .OP wrapmargin
2035 options.
2037 .KY S
2038 .IP "[buffer] [count] S"
2039 Substitute
2040 .LI count
2041 lines.
2043 .SP Line:
2044 Set to the last line upon which characters were entered.
2045 .SP Column:
2046 Set to the last character entered.
2047 .SP Options:
2048 Affected by the
2049 .OP altwerase ,
2050 .OP autoindent ,
2051 .OP beautify ,
2052 .OP showmatch ,
2053 .OP ttywerase
2055 .OP wrapmargin
2056 options.
2058 .KY T
2059 .IP "[count] T <character>"
2060 Search backward,
2061 .LI count
2062 times,
2063 through the current line for the character
2064 .i after
2065 the specified
2066 .LI <character> .
2069 .CO T
2070 command may be used as the motion component of other
2071 .CO vi
2072 commands, in which case any text copied into a buffer is
2073 character oriented.
2075 .SP Line:
2076 Unchanged.
2077 .SP Column:
2078 Set to the character
2079 .i after
2080 the searched-for character.
2081 .SP Options:
2082 None.
2084 .KY U
2085 .IP "U"
2086 Restore the current line to its state before the cursor last
2087 moved to it.
2089 .SP Line:
2090 Unchanged.
2091 .SP Column:
2092 The first character in the line.
2093 .SP Options:
2094 None.
2096 .KY W
2097 .IP "[count] W"
2098 Move forward
2099 .LI count
2100 bigwords.
2101 Move the cursor forward to the beginning of a bigword by repeating the
2102 following algorithm: if the current position is within a bigword or the
2103 character at that position cannot be part of a bigword, move to the first
2104 character of the next bigword.
2105 If no subsequent bigword exists on the current line,
2106 move to the first character of the first bigword on the first following
2107 line that contains a bigword.
2110 .CO W
2111 command may be used as the motion component of other
2112 .CO vi
2113 commands, in which case any text copied into a buffer is
2114 character oriented.
2116 .SP Line:
2117 The line containing the word selected.
2118 .SP Column:
2119 The first character of the word selected.
2120 .SP Options:
2121 None.
2123 .KY X
2124 .IP "[buffer] [count] X"
2125 Delete
2126 .LI count
2127 characters before the cursor.
2128 If the number of characters to be deleted is greater than or equal to
2129 the number of characters to the beginning of the line, all of the
2130 characters before the current cursor position, to the beginning of the
2131 line, are deleted.
2133 .SP Line:
2134 Unchanged.
2135 .SP Column:
2136 Set to the current character minus
2137 .LI count ,
2138 or the first character if count is greater than the number of
2139 characters in the line before the cursor.
2140 .SP Options:
2141 None.
2143 .KY Y
2144 .IP "[buffer] [count] Y"
2145 Copy (or
2146 .QQ yank )
2147 .LI count
2148 lines into the specified buffer.
2150 .SP Line:
2151 Unchanged.
2152 .SP Column:
2153 Unchanged.
2154 .SP Options:
2155 None.
2157 .KY ZZ
2158 .IP "ZZ"
2159 Write the file and exit
2160 .CO vi .
2161 The file is only written if it has been modified since the last
2162 complete write of the file to any file.
2165 .CO ZZ
2166 command will exit the editor after writing the file,
2167 if there are no further files to edit.
2168 Entering two
2169 .QQ quit
2170 commands (i.e.
2171 .CO wq ,
2172 .CO quit ,
2173 .CO xit
2175 .CO ZZ )
2176 in a row will override this check and the editor will exit,
2177 ignoring any files that have not yet been edited.
2179 .SP Line:
2180 Unchanged.
2181 .SP Column:
2182 Unchanged.
2183 .SP Options:
2184 None.
2186 .KY [[
2187 .IP "[count] [["
2188 Back up
2189 .LI count
2190 section boundaries.
2193 .CO [[
2194 command is an absolute movement.
2196 .CO [[
2197 command may be used as the motion component of other
2198 .CO vi
2199 commands, in which case any text copied into a buffer is
2200 character oriented, unless the starting position is column 0,
2201 in which case it is line oriented.
2203 It is an error if the movement is past the beginning of the file.
2205 .SP Line:
2206 Set to the previous line that is
2207 .LI count
2208 section boundaries back,
2209 or the first line of the file if no more section boundaries exist
2210 preceding the current line.
2211 .SP Column:
2212 Set to the first nonblank character in the line.
2213 .SP Options:
2214 Affected by the
2215 .OP sections
2216 option.
2218 .KY ]]
2219 .IP "[count] ]]"
2220 Move forward
2221 .LI count
2222 section boundaries.
2225 .CO ]]
2226 command is an absolute movement.
2228 .CO ]]
2229 command may be used as the motion component of other
2230 .CO vi
2231 commands, in which case any text copied into a buffer is
2232 character oriented, unless the starting position is column 0,
2233 in which case it is line oriented.
2235 It is an error if the movement is past the end of the file.
2237 .SP Line:
2238 Set to the line that is
2239 .LI count
2240 section boundaries forward,
2241 or to the last line of the file if no more section
2242 boundaries exist following the current line.
2243 .SP Column:
2244 Set to the first nonblank character in the line.
2245 .SP Options:
2246 Affected by the
2247 .OP sections
2248 option.
2250 .KY ^
2251 .IP "\&^"
2252 Move to first nonblank character on the current line.
2255 .CO ^
2256 command may be used as the motion component of other
2257 .CO vi
2258 commands, in which case any text copied into a buffer is
2259 character oriented.
2261 .SP Line:
2262 Unchanged.
2263 .SP Column:
2264 Set to the first nonblank character of the current line.
2265 .SP Options:
2266 None.
2268 .KY _
2269 .IP "[count] _"
2270 Move down
2271 .LI "count - 1"
2272 lines, to the first nonblank character.
2274 .CO _
2275 command may be used as the motion component of other
2276 .CO vi
2277 commands, in which case any text copied into a buffer is
2278 line oriented.
2280 It is not an error to execute the
2281 .CO _
2282 command when the cursor is on the first character in the line.
2284 .SP Line:
2285 The current line plus
2286 .LI "count - 1" .
2287 .SP Column:
2288 The first nonblank character in the line.
2289 .SP Options:
2290 None.
2292 .KY a
2293 .IP "[count] a"
2294 Enter input mode, appending the text after the cursor.
2296 .LI count
2297 is specified, the text input is repeatedly input
2298 .LI "count - 1"
2299 more times.
2301 .SP Line:
2302 Set to the last line upon which characters were entered.
2303 .SP Column:
2304 Set to the last character entered.
2305 .SP Options:
2306 Affected by the
2307 .OP altwerase ,
2308 .OP autoindent ,
2309 .OP beautify ,
2310 .OP showmatch ,
2311 .OP ttywerase
2313 .OP wrapmargin
2314 options.
2316 .KY b
2317 .IP "[count] b"
2318 Move backward
2319 .LI count
2320 words.
2321 Move the cursor backward to the beginning of a word by repeating the
2322 following algorithm: if the current position is at the beginning of a word,
2323 move to the first character of the preceding word.
2324 Otherwise, the current position moves to the first character of the word
2325 at the current position.
2326 If no preceding word exists on the current line, move to the first
2327 character of the last word on the first preceding line that contains
2328 a word.
2331 .CO b
2332 command may be used as the motion component of other
2333 .CO vi
2334 commands, in which case any text copied into a buffer is
2335 character oriented.
2337 .SP Line:
2338 Set to the line containing the word selected.
2339 .SP Column:
2340 Set to the first character of the word selected.
2341 .SP Options:
2342 None.
2344 .KY c
2345 .IP "[buffer] [count] c motion"
2346 Change the region of text specified by the
2347 .LI count
2349 .LI motion .
2350 If only part of a single line is affected, then the last character
2351 being changed is marked with a
2352 .QT $ .
2353 Otherwise, the region of text is deleted, and input mode is entered.
2355 .SP Line:
2356 Set to the last line upon which characters were entered.
2357 .SP Column:
2358 Set to the last character entered.
2359 .SP Options:
2360 Affected by the
2361 .OP altwerase ,
2362 .OP autoindent ,
2363 .OP beautify ,
2364 .OP showmatch ,
2365 .OP ttywerase
2367 .OP wrapmargin
2368 options.
2370 .KY d
2371 .IP "[buffer] [count] d motion"
2372 Delete the region of text specified by the
2373 .LI count
2375 .LI motion .
2377 .SP Line:
2378 Set to the line where the region starts.
2379 .SP Column:
2380 Set to the first character in the line after the last character in the
2381 region.
2382 If no such character exists, set to the last character before the region.
2383 .SP Options:
2384 None.
2386 .KY e
2387 .IP "[count] e"
2388 Move forward
2389 .LI count
2390 end-of-words.
2391 Move the cursor forward to the end of a word by repeating the following
2392 algorithm: if the current position is the end of a word,
2393 move to the last character of the following word.
2394 Otherwise, move to the last character of the word at the current position.
2395 If no succeeding word exists on the current line, move to the last character
2396 of the first word on the next following line that contains a word.
2399 .CO e
2400 command may be used as the motion component of other
2401 .CO vi
2402 commands, in which case any text copied into a buffer is
2403 character oriented.
2405 .SP Line:
2406 Set to the line containing the word selected.
2407 .SP Column:
2408 Set to the last character of the word selected.
2409 .SP Options:
2410 None.
2412 .KY f
2413 .IP "[count] f <character>"
2414 Search forward,
2415 .LI count
2416 times, through the rest of the current line for
2417 .LI <character> .
2420 .CO f
2421 command may be used as the motion component of other
2422 .CO vi
2423 commands, in which case any text copied into a buffer is
2424 character oriented.
2426 .SP Line:
2427 Unchanged.
2428 .SP Column:
2429 Set to the searched-for character.
2430 .SP Options:
2431 None.
2433 .KY i
2434 .IP "[count] i"
2435 Enter input mode, inserting the text before the cursor.
2437 .LI count
2438 is specified, the text input is repeatedly input
2439 .LI "count - 1"
2440 more times.
2442 .SP Line:
2443 Set to the last line upon which characters were entered.
2444 .SP Column:
2445 Set to the last character entered.
2446 .SP Options:
2447 Affected by the
2448 .OP altwerase ,
2449 .OP autoindent ,
2450 .OP beautify ,
2451 .OP showmatch ,
2452 .OP ttywerase
2454 .OP wrapmargin
2455 options.
2457 .KY m
2458 .IP "m <character>"
2459 Save the current context (line and column) as
2460 .LI <character> .
2461 The exact position is referred to by
2462 .QT `<character> .
2463 The line is referred to by
2464 .QT '<character> .
2466 Historically,
2467 .LI <character>
2468 was restricted to lower-case letters.
2469 .CO Nvi
2470 permits the use of any character.
2472 .SP Line:
2473 Unchanged.
2474 .SP Column:
2475 Unchanged.
2476 .SP Options:
2477 None.
2479 .KY o
2480 .IP "[count] o"
2481 Enter input mode, appending text in a new line under the current line.
2483 .LI count
2484 is specified, the text input is repeatedly input
2485 .LI "count - 1"
2486 more times.
2488 Historically, any
2489 .LI count
2490 specified to the
2491 .CO o
2492 command was ignored.
2494 .SP Line:
2495 Set to the last line upon which characters were entered.
2496 .SP Column:
2497 Set to the last character entered.
2498 .SP Options:
2499 Affected by the
2500 .OP altwerase ,
2501 .OP autoindent ,
2502 .OP beautify ,
2503 .OP showmatch ,
2504 .OP ttywerase
2506 .OP wrapmargin
2507 options.
2509 .KY p
2510 .IP "[buffer] p"
2511 Append text from a buffer.
2512 Text from the buffer (the unnamed buffer by default) is appended
2513 after the current column or, if the buffer is line oriented,
2514 after the current line.
2516 .SP Line:
2517 Set to the first line appended, if the buffer is line oriented,
2518 otherwise unchanged.
2519 .SP Column:
2520 Set to the first nonblank character of the appended text if the buffer
2521 is line oriented, otherwise, the last character of the appended text.
2522 .SP Options:
2523 None.
2525 .KY r
2526 .IP "[count] r <character>"
2527 Replace characters.
2528 The next
2529 .LI count
2530 characters in the line are replaced with
2531 .LI <character> .
2532 Replacing characters with
2533 .LI <newline>
2534 characters results in creating new, empty lines into the file.
2537 .LI <character>
2539 .LI <escape> ,
2540 the command is cancelled.
2542 .SP Line:
2543 Unchanged unless the replacement character is a
2544 .LI <newline> ,
2545 in which case it is set to the current line plus
2546 .LI "count - 1" .
2547 .SP Column:
2548 Set to the last character replaced,
2549 unless the replacement character is a
2550 .LI <newline> ,
2551 in which case the cursor is in column 1 of the last line inserted.
2552 .SP Options:
2553 None.
2555 .KY s
2556 .IP "[buffer] [count] s"
2557 Substitute
2558 .LI count
2559 characters in the current line starting with the current character.
2561 .SP Line:
2562 Set to the last line upon which characters were entered.
2563 .SP Column:
2564 Set to the last character entered.
2565 .SP Options:
2566 Affected by the
2567 .OP altwerase ,
2568 .OP autoindent ,
2569 .OP beautify ,
2570 .OP showmatch ,
2571 .OP ttywerase
2573 .OP wrapmargin
2574 options.
2576 .KY t
2577 .IP "[count] t <character>"
2578 Search forward,
2579 .LI count
2580 times, through the current line for the character immediately
2581 .i before
2582 .LI <character> .
2585 .CO t
2586 command may be used as the motion component of other
2587 .CO vi
2588 commands, in which case any text copied into a buffer is
2589 character oriented.
2591 .SP Line:
2592 Unchanged.
2593 .SP Column:
2594 Set to the character
2595 .i before
2596 the searched-for character.
2597 .SP Options:
2598 None.
2600 .KY u
2601 .IP "u"
2602 Undo the last change made to the file.
2603 If repeated, the
2604 .CO u
2605 command alternates between these two states, and is its own inverse.
2606 When used after an insert that inserted text on more than one line,
2607 the lines are saved in the numeric buffers.
2610 .CO \&.
2611 command, when used immediately after the
2612 .CO u
2613 command, causes the change log to be rolled forward or backward,
2614 depending on the action of the
2615 .CO u
2616 command.
2618 .SP Line:
2619 Set to the position of the first line changed, if the reversal affects
2620 only one line or represents an addition or change; otherwise, the line
2621 preceding the deleted text.
2622 .SP Column:
2623 Set to the cursor position before the change was made.
2624 .SP Options:
2625 None.
2627 .KY w
2628 .IP "[count] w"
2629 Move forward
2630 .LI count
2631 words.
2632 Move the cursor forward to the beginning of a word by repeating the
2633 following algorithm: if the current position is at the
2634 beginning of a word, move to the first character of the next word.
2635 If no subsequent word exists on the current line, move to the first
2636 character of the first word on the first following line that contains
2637 a word.
2640 .CO w
2641 command may be used as the motion component of other
2642 .CO vi
2643 commands, in which case any text copied into a buffer is
2644 character oriented.
2646 .SP Line:
2647 Set to the line containing the word selected.
2648 .SP Column:
2649 Set to the first character of the word selected.
2650 .SP Options:
2651 None.
2653 .KY x
2654 .IP "[buffer] [count] x"
2655 Delete
2656 .LI count
2657 characters.
2658 The deletion is at the current character position.
2659 If the number of characters to be deleted is greater than or equal to
2660 the number of characters to the end of the line, all of the characters
2661 from the current cursor position to the end of the line are deleted.
2663 .SP Line:
2664 Unchanged.
2665 .SP Column:
2666 Unchanged unless the last character in the line is deleted and the cursor
2667 is not already on the first character in the line, in which case it is
2668 set to the previous character.
2669 .SP Options:
2670 None.
2672 .KY y
2673 .IP "[buffer] [count] y motion"
2674 Copy (or
2675 .QQ yank )
2676 the text region specified by the
2677 .LI count
2679 .LI motion ,
2680 into a buffer.
2682 .SP Line:
2683 Unchanged, unless the region covers more than a single line,
2684 in which case it is set to the line where the region starts.
2685 .SP Column:
2686 Unchanged, unless the region covers more than a single line,
2687 in which case it is set to the character were the region starts.
2688 .SP Options:
2689 None.
2691 .KY z
2692 .IP "[count1] z [count2] type"
2693 Redraw the screen with a window
2694 .LI count2
2695 lines long, with line
2696 .LI count1
2697 placed as specified by the
2698 .LI type
2699 character.
2701 .LI count1
2702 is not specified, it defaults to the current line.
2704 .LI count2
2705 is not specified, it defaults to the current window size.
2707 The following
2708 .LI type
2709 characters may be used:
2711 .SP +
2713 .LI count1
2714 is specified, place the line
2715 .LI count1
2716 at the top of the screen.
2717 Otherwise, display the screen after the current screen, similarly to the
2718 .CO <control-F>
2719 command.
2720 .SP <carriage-return>
2721 Place the line
2722 .LI count1
2723 at the top of the screen.
2724 .SP \&.
2725 Place the line
2726 .LI count1
2727 in the center of the screen.
2728 .SP \-
2729 Place the line
2730 .LI count1
2731 at the bottom of the screen.
2732 .SP ^
2734 .LI count1
2735 is specified, place the line that is at the top of the screen 
2736 when
2737 .LI count1
2738 is at the bottom of the screen, at the bottom of the screen,
2739 i.e. display the screen before the screen before
2740 .LI count1 .
2741 Otherwise, display the screen before the current screen, similarly to the
2742 .CO <control-B>
2743 command.
2746 .SP Line:
2747 Set to
2748 .LI count1
2749 unless
2750 .LI count1
2751 is not specified and the
2752 .LI type
2753 character was either
2754 .QT ^
2756 .QT + ,
2757 in which case it is set to the line before the first line on the
2758 previous screen or the line after the last line on the previous
2759 screen, respectively.
2760 .SP Column:
2761 Set to the first nonblank character in the line.
2762 .SP Options:
2763 None.
2765 .KY {
2766 .IP "[count] {"
2767 Move backward
2768 .LI count
2769 paragraphs.
2772 .CO {
2773 command is an absolute movement.
2775 .CO {
2776 command may be used as the motion component of other
2777 .CO vi
2778 commands, in which case any text copied into a buffer is
2779 character oriented, unless the starting character is the first
2780 character on its line, in which case it is line oriented.
2782 .SP Line:
2783 Set to the line containing the beginning of the previous paragraph.
2784 .SP Column:
2785 Set to the first nonblank character in the line.
2786 .SP Options:
2787 Affected by the
2788 .OP paragraph
2789 option.
2791 .KY |
2792 .IP "[count] |"
2793 Move to a specific
2794 .i column
2795 position on the current line.
2798 .CO |
2799 command may be used as the motion component of other
2800 .CO vi
2801 commands, in which case any text copied into a buffer is
2802 character oriented.
2803 It is an error to use the
2804 .CO |
2805 command as a motion component and for the cursor not to move.
2807 .SP Line:
2808 Unchanged.
2809 .SP Column:
2810 Set to the character occupying the column position identified by
2811 .LI count ,
2812 if the position exists in the line.
2813 If the column length of the current line is less than
2814 .LI count ,
2815 the cursor is moved to the last character in the line.
2816 .SP Options:
2817 None.
2819 .KY }
2820 .IP "[count] }"
2821 Move forward
2822 .LI count
2823 paragraphs.
2826 .CO }
2827 command is an absolute movement.
2829 .CO }
2830 command may be used as the motion component of other
2831 .CO vi
2832 commands, in which case any text copied into a buffer is
2833 character oriented, unless the starting character is at or
2834 before any nonblank characters in its line,
2835 in which case it is line oriented.
2837 .SP Line:
2838 Set to the line containing the beginning of the next paragraph.
2839 .SP Column:
2840 Set to the first nonblank character in the line.
2841 .SP Options:
2842 Affected by the
2843 .OP paragraph
2844 option.
2846 .KY ~
2847 .IP "[count] ~"
2848 Reverse the case of the next
2849 .LI count
2850 character(s).
2851 This is the historic semantic for the
2852 .CO ~
2853 command and it is only in effect if the
2854 .OP tildeop
2855 option is not set.
2857 Lowercase alphabetic characters are changed to uppercase,
2858 and uppercase characters are changed to lowercase.
2859 No other characters are affected.
2861 Historically, the
2862 .CO ~
2863 command did not take an associated count, nor did it move past the
2864 end of the current line.
2865 As it had no associated motion it was difficult to change the case
2866 of large blocks of text.
2868 .CO nvi ,
2869 if the cursor is on the last character of a line, and there are
2870 more lines in the file, the cursor moves to the next line.
2872 It is not an error to specify a count larger than the number of
2873 characters between the cursor and the end of the file.
2875 .SP Line:
2876 Set to the line of the character after
2877 .LI count
2878 characters, or, end of file.
2879 .SP Column:
2880 Set to the character after
2881 .LI count
2882 characters, or, end-of-file.
2883 .SP Options:
2884 Affected by the
2885 .OP tildeop
2886 option.
2888 .KY ~
2889 .IP "[count] ~ motion"
2890 Reverse the case of the characters in a text region specified by the
2891 .LI count
2893 .LI motion .
2894 Only in effect if the
2895 .OP tildeop
2896 option is set.
2898 Lowercase characters are changed to uppercase,
2899 and uppercase characters are changed to lowercase.
2900 No other characters are affected.
2902 .SP Line:
2903 Set to the line of the character after the last character in the region.
2904 .SP Column:
2905 Set to the character after the last character in the region.
2906 .SP Options:
2907 Affected by the
2908 .OP tildeop
2909 option.
2911 .KY <interrupt>
2912 .IP "<interrupt>"
2913 Interrupt the current operation.
2914 Many of the potentially long-running
2915 .CO vi
2916 commands may be interrupted using the terminal interrupt character.
2917 These operations include searches, file reading and writing, filter
2918 operations and map character expansion.
2919 Interrupts are also enabled when running commands outside of
2920 .CO vi .
2922 If the
2923 .LI <interrupt>
2924 character is used to interrupt while entering an
2925 .CO ex
2926 command, the command is aborted, the cursor returns to its previous
2927 position, and
2928 .CO vi
2929 remains in command mode.
2931 Generally, if the
2932 .LI <interrupt>
2933 character is used to interrupt any
2934 operation, any changes made before the interrupt are left in place.
2936 .SP Line:
2937 Dependent on the operation being interrupted.
2938 .SP Column:
2939 Dependent on the operation being interrupted.
2940 .SP Options:
2941 None.
2942 .SH 1 "Vi Text Input Commands"
2944 The following section describes the commands available in the text
2945 input mode of the
2946 .CO vi
2947 editor.
2949 Historically,
2950 .CO vi
2951 implementations only permitted the characters inserted on the current
2952 line to be erased.
2953 In addition, only the
2954 .LI <control-D>
2955 erase character and the
2956 .QT 0<control-D>
2958 .QT ^<control-D>
2959 erase strings could erase autoindent characters.
2960 (Autoindent characters include both the characters inserted automatically
2961 at the beginning of an input line as well as characters inserted using the
2962 .LI <control-T>
2963 command.)
2964 This implementation permits erasure to continue past the beginning
2965 of the current line, and back to where text input mode was entered.
2966 In addition, autoindent characters may be erased using the standard
2967 erase characters.
2968 For the line and word erase characters, reaching the autoindent
2969 characters forms a
2970 .QQ soft
2971 boundary, denoting the end of the current word or line erase.
2972 Repeating the word or line erase key will erase the autoindent characters.
2974 Historically,
2975 .CO vi
2976 always used
2977 .LI <control-H>
2979 .LI <control-W>
2980 as character and word erase characters, respectively, regardless of
2981 the current terminal settings.
2982 This implementation accepts, in addition to these two characters,
2983 the current terminal characters for those operations.
2984 .KY <nul>
2985 .IP "<nul>"
2986 If the first character of the input is a
2987 .LI <nul> ,
2988 the previous input is replayed, as if just entered.
2989 .KY <control-D>
2990 .IP "<control-D>"
2991 If the previous character on the line was an autoindent character,
2992 erase characters to move the cursor back to the column immediately
2993 after the previous (1-based) column which is a multiple of the
2994 .OP shiftwidth
2995 edit option.
2996 This may result in any number of
2997 .LI <tab>
2999 .LI <space>
3000 characters preceding the cursor being changed.
3002 Otherwise, if the
3003 .OP autoindent
3004 option is set and the user is entering the first character in the line,
3005 .LI <control-D>
3006 is ignored.
3007 Otherwise, a literal
3008 .LI <control-D>
3009 character is entered.
3010 .KY ^<control-D>
3011 .IP "^<control-D>"
3012 If the previous character on the line was an autoindent character,
3013 erase all of the autoindent characters on the line.
3014 In addition, the autoindent level is reset to 0.
3015 .KY 0<control-D>
3016 .IP "0<control-D>"
3017 If the previous character on the line was an autoindent character,
3018 erase all of the autoindent characters on the line.
3019 The autoindent level is not altered.
3020 .KY <control-T>
3021 .IP "<control-T>"
3022 Insert sufficient
3023 .LI <tab>
3025 .LI <space>
3026 characters to move the cursor forward to the column immediately
3027 after the next (1-based) column which is a multiple of the
3028 .OP shiftwidth
3029 edit option.
3030 This may result in any number of
3031 .LI <tab>
3033 .LI <space>
3034 characters preceding the cursor being changed.
3036 Historically,
3037 .CO vi
3038 did not permit the
3039 .LI <control-T>
3040 command to be used unless the cursor was at the first column of a new
3041 line or it was preceded only by autoindent characters.
3042 .CO Nvi
3043 permits it to be used at any time during insert mode.
3044 .KY <erase>
3045 .IP <erase>
3046 .KY <control-H>
3047 .Ip <control-H>
3048 Erase the last character.
3049 .KY "<literal-next>"
3050 .IP "<literal-next>"
3051 Quote the next character.
3052 The next character will not be mapped (see the
3053 .CO map
3054 command for more information)
3055 or interpreted specially.
3056 A carat
3057 .PQ ^
3058 character will be displayed immediately as a placeholder,
3059 but will be replaced by the next character.
3060 .KY <escape>
3061 .IP <escape>
3062 If on the colon command line, and the
3063 .OP filec
3064 edit option is set, behave as described for that option.
3065 Otherwise, if on the colon command line,
3066 execute the command.
3067 Otherwise, if not on the colon command line,
3068 resolve all text input into the file, and return to command mode.
3069 .KY "<line erase>"
3070 .IP "<line erase>"
3071 Erase the current line.
3072 .KY "<control-W>"
3073 .IP "<control-W>"
3074 .KY "<word erase>"
3075 .Ip "<word erase>"
3076 Erase the last word.
3077 The definition of word is dependent on the
3078 .OP altwerase
3080 .OP ttywerase
3081 options.
3082 .KY "<control-X>"
3083 .IP "<control-X>[0-9A-Fa-f]+"
3084 Insert a character with the specified hexadecimal value into the text.
3085 The value is delimited by any non-hexadecimal character or the input
3086 of the maximum number of characters that can be translated into a single
3087 character value.
3088 .KY <interrupt>
3089 .IP "<interrupt>"
3090 Interrupt text input mode, returning to command mode.
3091 If the
3092 .LI <interrupt>
3093 character is used to interrupt inserting text into the file,
3094 it is as if the
3095 .LI <escape>
3096 character was used; all text input up to the interruption is
3097 resolved into the file.