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