Annotation of 43BSDReno/share/doc/usd/15.vi/vi.apwh.ms, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted
                      5: .\" provided that the above copyright notice and this paragraph are
                      6: .\" duplicated in all such forms and that any documentation,
                      7: .\" advertising materials, and other materials related to such
                      8: .\" distribution and use acknowledge that the software was developed
                      9: .\" by the University of California, Berkeley.  The name of the
                     10: .\" University may not be used to endorse or promote products derived
                     11: .\" from this software without specific prior written permission.
                     12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     15: .\"
                     16: .\"    @(#)vi.apwh.ms  6.2 (Berkeley) 11/27/89
                     17: .\"
                     18: .TL
                     19: Vi Command & Function Reference
                     20: .AU CB 2675
                     21: Alan P.W. Hewett
                     22: .sp
                     23: Revised for version 2.12 by Mark Horton
                     24: .CB
                     25: .NH 1
                     26: Author's Disclaimer
                     27: .LP
                     28: This document does not claim to be 100% complete.  There are a
                     29: few commands listed in the original document that I was unable
                     30: to test either because I do not speak \fBlisp\fR, because they
                     31: required programs we don't have, or because I wasn't able to make
                     32: them work.  In these cases I left the command out.  The commands
                     33: listed in this document have been tried and are known to work.
                     34: It is expected that prospective users of this document will read
                     35: it once to get the flavor of everything that \fBvi\fR can do
                     36: and then use it as a reference document.  Experimentation is
                     37: recommended.  If you don't understand a command, try it and
                     38: see what happens.
                     39: .LP
                     40: [Note: In revising this document, I have attempted to make it
                     41: completely reflect version 2.12 of
                     42: .B vi .
                     43: It does not attempt to document the VAX version (version 3),
                     44: but with one or two exceptions (wrapmargin, arrow keys)
                     45: everything said about 2.12 should apply to 3.1.
                     46: .I "Mark Horton" ]
                     47: .NH 1
                     48: Notation
                     49: .LP
                     50: \fB[option]\fR is used to denote optional parts of a command.
                     51: Many \fBvi\fR commands have an optional count.  \fB[cnt]\fR
                     52: means that an optional number may precede the command to
                     53: multiply or iterate the command.
                     54: \fB{variable item}\fR is used to denote parts of the command
                     55: which must appear, but can take a number of different values.
                     56: \fB<character [-character]>\fR means that the character or
                     57: one of the characters in the range described between the
                     58: two angle brackets is to be typed.
                     59: For example \fB<esc>\fR means
                     60: the \fBescape\fR key is to be typed.  \fB<a-z>\fR means that a
                     61: lower case letter is to be typed.  \fB^<character>\fR means that
                     62: the character is to be typed as a \fBcontrol\fR character, that is,
                     63: with the \fB<cntl>\fR key held down while simultaneously typing
                     64: the specified character.  In this document control characters will
                     65: be denoted using the \fIupper case\fR character, but
                     66: ^<uppercase chr> and ^<lowercase chr> are equivalent.  That is, for
                     67: example, \fB<^D>\fR is equal to \fB<^d>\fR.
                     68: The most common character abbreviations
                     69: used in this list are as follows:
                     70: .VL 8
                     71: .IP <esc> 8
                     72: escape, octal 033
                     73: .IP <cr> 8
                     74: carriage return, ^M, octal 015
                     75: .IP <lf> 8
                     76: linefeed ^J, octal 012
                     77: .IP <nl> 8
                     78: newline, ^J, octal 012 (same as linefeed)
                     79: .IP <bs> 8
                     80: backspace, ^H, octal 010
                     81: .IP <tab> 8
                     82: tab, ^I, octal 011
                     83: .IP <bell> 8
                     84: bell, ^G, octal 07
                     85: .IP <ff> 8
                     86: formfeed, ^L, octal 014
                     87: .IP <sp> 8
                     88: space, octal 040
                     89: .IP <del> 8
                     90: delete, octal 0177
                     91: .LE
                     92: .sp 1
                     93: .NH 1
                     94: Basics
                     95: .LP
                     96: To run \fBvi\fR the shell variable \fBTERM\fR must be defined and
                     97: exported to your environment.
                     98: How you do this depends on which shell you are using.
                     99: You can tell which shell you have by the character it
                    100: prompts you for commands with.
                    101: The Bourne shell prompts with `$', and the C shell prompts with `%'.
                    102: For these examples, we will suppose
                    103: that you are using an HP 2621 terminal, whose termcap name is ``2621''.
                    104: .NH 2
                    105: Bourne Shell
                    106: .LP
                    107: To manually set your terminal type to 2621 you would type:
                    108: .DS
                    109: TERM=2621
                    110: export TERM
                    111: .DE
                    112: .PP
                    113: There are various ways of having this automatically or
                    114: semi-automatically done when you log in.
                    115: Suppose you usually dial in on a 2621.
                    116: You want to tell this to the machine, but still have it
                    117: work when you use a hardwired terminal.
                    118: The recommended way, if you have the
                    119: .B tset
                    120: program, is to use the sequence
                    121: .DS
                    122: tset \-s \-d 2621 > tset$$
                    123: \&. tset$$
                    124: rm tset$$
                    125: .DE
                    126: in your .login (for csh) or the same thing using `.' instead of `source'
                    127: in your .profile (for sh).
                    128: The above line says that if you are dialing in you are on a 2621,
                    129: but if you are on a hardwired terminal it figures out your terminal
                    130: type from an on-line list.
                    131: .NH 2
                    132: The C Shell
                    133: .LP
                    134: To manually set your terminal type to 2621 you would type:
                    135: .DS
                    136: setenv TERM 2621
                    137: .DE
                    138: .PP
                    139: There are various ways of having this automatically or
                    140: semi-automatically done when you log in.
                    141: Suppose you usually dial in on a 2621.
                    142: You want to tell this to the machine, but still have it
                    143: work when you use a hardwired terminal.
                    144: The recommended way, if you have the
                    145: .B tset
                    146: program, is to use the sequence
                    147: .DS
                    148: tset \-s \-d 2621 > tset$$
                    149: source tset$$
                    150: rm tset$$
                    151: .DE
                    152: in your .login.*
                    153: .FS
                    154: * On a version 6 system
                    155: without environments, the invocation of tset
                    156: is simpler, just add the line ``tset \-d 2621''
                    157: to your .login or .profile.
                    158: .FE
                    159: The above line says that if you are dialing in you are on a 2621,
                    160: but if you are on a hardwired terminal it figures out your terminal
                    161: type from an on-line list.
                    162: .NH 1
                    163: Normal Commands
                    164: .LP
                    165: \fBVi\fR is a visual editor with a window on the file.  What
                    166: you see on the screen is \fBvi\fR's current notion of
                    167: what your file will contain,
                    168: (at this point in the file),
                    169: when it is written out.
                    170: Most commands do not cause any change in the screen until the
                    171: complete command is typed.  Should you get confused while
                    172: typing a command, you can abort the command by typing an
                    173: <del> character.  You will know you are back to command level
                    174: when you hear a <bell>.  Usually typing an <esc> will produce the
                    175: same result.  When \fBvi\fR gets an improperly formatted command
                    176: it rings the <bell>.
                    177: Following are the \fBvi\fR commands broken down by function.
                    178: .NH 2
                    179: Entry and Exit
                    180: .LP
                    181: To enter
                    182: .B vi
                    183: on a particular
                    184: .I file ,
                    185: type
                    186: .DS
                    187: \fBvi\fP \fIfile\fP
                    188: .DE
                    189: The file will be read in and the cursor will be placed at the beginning
                    190: of the first line.
                    191: The first screenfull of the file will be displayed on the terminal.
                    192: .PP
                    193: To get out of the editor, type
                    194: .DS
                    195: ZZ
                    196: .DE
                    197: If you are in some special mode, such as input mode
                    198: or the middle of a multi-keystroke command, it may
                    199: be necessary to type <esc> first.
                    200: .NH 2
                    201: Cursor and Page Motion
                    202: .LP
                    203: .VL 16
                    204: .B NOTE:
                    205: The arrow keys (see the next four commands)
                    206: on certain kinds of terminals will not work with the
                    207: PDP-11 version of vi.  The control versions or the hjkl versions will
                    208: work on any terminal.  Experienced users prefer the hjkl keys because
                    209: they are always right under their fingers.  Beginners often prefer
                    210: the arrow keys, since they do not require memorization of which hjkl
                    211: key is which.
                    212: The mnemonic value of hjkl is clear from looking at the keyboard of an adm3a.
                    213: .sp
                    214: .IP "[cnt]<bs> or [cnt]h or [cnt]\(<-" 16
                    215: .br
                    216: Move the cursor to the left one character.  Cursor stops at the left
                    217: margin of the page.
                    218: If cnt is given, these commands move that many spaces.
                    219: .IP "[cnt]^N or [cnt]j or [cnt]\(da or [cnt]<lf>" 16
                    220: .br
                    221: Move down one line.
                    222: Moving off the screen scrolls the window to force a new line
                    223: onto the screen.
                    224: Mnemonic: \fBN\fRext
                    225: .IP "[cnt]^P or [cnt]k or [cnt]\(ua" 16
                    226: .br
                    227: Move up one line.
                    228: Moving off the top of the screen forces new text onto the screen.
                    229: Mnemonic: \fBP\fRrevious
                    230: .IP "[cnt]<sp> or [cnt]l or [cnt]\(->" 16
                    231: .br
                    232: Move to the right one character.
                    233: Cursor will not go beyond the end of the line.
                    234: .IP [cnt]- 16
                    235: Move the cursor up the screen to the beginning of the next line.
                    236: Scroll if necessary.
                    237: .IP "[cnt]+ or [cnt]<cr>" 16
                    238: .sp 1
                    239: Move the cursor down the screen to the beginning of the next line.
                    240: Scroll up if necessary.
                    241: .IP "[cnt]$" 16
                    242: Move the cursor to the end of the line.
                    243: If there is a count, move to the end of the line "cnt" lines
                    244: forward in the file.
                    245: .IP "^" 16
                    246: Move the cursor to the beginning of the first word on the line.
                    247: .IP "0" 16
                    248: Move the cursor to the left margin of the current line.
                    249: .IP "[cnt]|" 16
                    250: Move the cursor to the column specified by the count.  The default is
                    251: column zero.
                    252: .IP "[cnt]w" 16
                    253: Move the cursor to the beginning of the next word. If there
                    254: is a count, then move forward that many words and
                    255: position the cursor at the beginning of the word.
                    256: Mnemonic: next-\fBw\fRord
                    257: .IP "[cnt]W" 16
                    258: Move the cursor to the beginning of the next word which follows
                    259: a "white space" (<sp>,<tab>, or <nl>).  Ignore other punctuation.
                    260: .IP "[cnt]b" 16
                    261: Move the cursor to the preceding word.  Mnemonic: \fBb\fRackup-word
                    262: .IP "[cnt]B" 16
                    263: Move the cursor to the preceding word that is separated from the
                    264: current word by a "white space" (<sp>,<tab>, or <nl>).
                    265: .IP "[cnt]e" 16
                    266: Move the cursor to the end of the current word or the end of the
                    267: "cnt"'th word hence.  Mnemonic: \fBe\fRnd-of-word
                    268: .IP "[cnt]E" 16
                    269: Move the cursor to the end of the current word which is delimited by
                    270: "white space" (<sp>,<tab>, or <nl>).
                    271: .IP "[line number]G" 16
                    272: .br
                    273: Move the cursor to the line specified.  Of particular use are the
                    274: sequences "1G" and "G", which move the cursor to the beginning and
                    275: the end of the file respectively.  Mnemonic: \fBG\fRo-to
                    276: .LP
                    277: .B NOTE:
                    278: The next four commands (^D, ^U, ^F, ^B)
                    279: are not true motion commands, in that they
                    280: cannot be used as the object of commands such as delete or change.
                    281: .IP "[cnt]^D" 16
                    282: Move the cursor down in the file by "cnt" lines (or the last "cnt"
                    283: if a new count isn't given.  The initial default is half a page.)  The
                    284: screen is simultaneously scrolled up.  Mnemonic: \fBD\fRown
                    285: .IP "[cnt]^U" 16
                    286: Move the cursor up in the file by "cnt" lines.  The screen is simultaneously
                    287: scrolled down.  Mnemonic: \fBU\fRp
                    288: .IP "[cnt]^F" 16
                    289: Move the cursor to the next page.  A count moves that many pages.
                    290: Two lines of the previous page are kept on the screen for continuity if
                    291: possible.  Mnemonic: \fBF\fRorward-a-page
                    292: .IP "[cnt]^B" 16
                    293: Move the cursor to the previous page.  Two lines of the current page
                    294: are kept if possible.  Mnemonic: \fBB\fRackup-a-page
                    295: .IP "[cnt](" 16
                    296: Move the cursor to the beginning of the next sentence.
                    297: A sentence is defined as ending with a ".", "!", or "?"
                    298: followed by two spaces or a <nl>.
                    299: .IP "[cnt])" 16
                    300: Move the cursor backwards to the beginning of a sentence.
                    301: .IP "[cnt]}" 16
                    302: Move the cursor to the beginning of the next paragraph.  This command
                    303: works best inside \fBnroff\fR documents.  It understands two sets of
                    304: \fBnroff\fR macros, \fB\-ms\fR and \fB\-mm\fR, for which the
                    305: commands ".IP", ".LP", ".PP", ".QP", "P", as well as the nroff command ".bp"
                    306: are considered to be paragraph delimiters.
                    307: A blank line also delimits a paragraph.
                    308: The \fBnroff\fR macros that it accepts as paragraph delimiters is
                    309: adjustable.  See \fBparagraphs\fR under the \fBSet Commands\fR section.
                    310: .IP "[cnt]{" 16
                    311: Move the cursor backwards to the beginning of a paragraph.
                    312: .IP "]]" 16
                    313: Move the cursor to the next "section", where a section is defined by
                    314: two sets of \fBnroff\fR macros, \fB\-ms\fR and \fB\-mm\fR, in which
                    315: ".NH", ".SH", and ".H" delimit a section.  A line beginning with a <ff><nl>
                    316: sequence, or a line beginning with a "{" are also considered to
                    317: be section delimiters.  The last option makes it
                    318: useful for finding the beginnings of C functions.
                    319: The \fBnroff\fR macros that are used for section delimiters can be adjusted.
                    320: See \fBsections\fR under the \fBSet Commands\fR section.
                    321: .IP "[[" 16
                    322: Move the cursor backwards to the beginning of a section.
                    323: .IP "%" 16
                    324: Move the cursor to the matching parenthesis
                    325: or brace.  This is very useful in C or lisp code.  If the
                    326: cursor is sitting on a \fB( ) {\fR or \fB}\fR the cursor
                    327: is moved to the matching character at the other end of the
                    328: section.  If the cursor is not sitting on a brace or a
                    329: parenthesis, \fBvi\fR searches forward until it finds one
                    330: and then jumps to the match mate.
                    331: .IP "[cnt]H" 16
                    332: If there is no count move the cursor to the top left position on the screen.
                    333: If there is a count, then move the cursor to the beginning of the line
                    334: "cnt" lines from the top of the screen.  Mnemonic:  \fBH\fRome
                    335: .IP "[cnt]L" 16
                    336: If there is no count move the cursor to the beginning
                    337: of the last line on the screen.
                    338: If there is a count, then move the cursor to the beginning of the line
                    339: "cnt" lines from the bottom of the screen.  Mnemonic: \fBL\fRast
                    340: .IP "M" 16
                    341: Move the cursor to the beginning of the middle line on the screen.
                    342: Mnemonic: \fBM\fRiddle
                    343: .IP "m<a-z>" 16
                    344: This command does not move the cursor, but it \fBmarks\fR the place
                    345: in the file and the character "<a-z>" becomes the label for referring
                    346: to this location in the file.  See the next two commands.  Mnemonic:
                    347: \fBm\fRark
                    348: .B NOTE:
                    349: The mark command is not a motion, and cannot be used as the target
                    350: of commands such as delete.
                    351: .IP "\(aa<a-z>" 16
                    352: Move the cursor to the beginning of the line that is marked with the label
                    353: "<a-z>".
                    354: .IP "\(ga<a-z>" 16
                    355: Move the cursor to the exact position on the line that was marked with
                    356: with the label "<a-z>".
                    357: .IP "\(aa\(aa" 16
                    358: Move the cursor back to the beginning of the line where it was before the
                    359: last "non-relative" move.  A "non-relative" move is something such as a
                    360: search or a jump to a specific line in the file, rather than moving the
                    361: cursor or scrolling the screen.
                    362: .IP "\(ga\(ga" 16
                    363: Move the cursor back to the exact spot on the line where it was located
                    364: before the last "non-relative" move.
                    365: .LE
                    366: .NH 2
                    367: Searches
                    368: .LP
                    369: The following commands allow you to search for items in a file.
                    370: .VL 16
                    371: .IP [cnt]f{chr} 16
                    372: .sp 1
                    373: Search forward on the line for the next or "cnt"'th occurrence of
                    374: the character "chr".  The cursor is placed \fBat\fR the character
                    375: of interest.  Mnemonic: \fBf\fRind character
                    376: .IP [cnt]F{chr} 16
                    377: .sp 1
                    378: Search backwards on the line for the next or "cnt"'th occurrence of
                    379: the character "chr".  The cursor is placed \fBat\fR the character
                    380: of interest.
                    381: .IP [cnt]t{chr} 16
                    382: .sp 1
                    383: Search forward on the line for the next or "cnt"'th occurrence of
                    384: the character "chr".  The cursor is placed \fBjust preceding\fR
                    385: the character of interest.  Mnemonic: move cursor up \fBt\fRo character
                    386: .IP [cnt]T{chr} 16
                    387: .sp 1
                    388: Search backwards on the line for the next or "cnt"'th occurrence of
                    389: the character "chr".  The cursor is placed \fBjust preceding\fR
                    390: the character of interest.
                    391: .IP "[cnt];" 16
                    392: Repeat the last "f", "F", "t" or "T" command.
                    393: .IP "[cnt]," 16
                    394: Repeat the last "f", "F", "t" or "T" command, but in the opposite
                    395: search direction.  This is useful if you overshoot.
                    396: .IP "[cnt]/[string]/<nl>" 16
                    397: .br
                    398: Search forward for the next occurrence of "string".
                    399: Wrap around at the end of the file
                    400: does occur.
                    401: The final \fB</>\fR is not required.
                    402: .IP "[cnt]?[string]?<nl>" 16
                    403: .br
                    404: Search backwards for the next occurrence of "string".  If a count is
                    405: specified, the count becomes the new window size.  Wrap around at the beginning
                    406: of the file does occur.
                    407: The final \fB<?>\fR is not required.
                    408: .IP n 16
                    409: Repeat the last /[string]/ or ?[string]? search.  Mnemonic: \fBn\fRext
                    410: occurrence.
                    411: .IP N 16
                    412: Repeat the last /[string]/ or ?[string]? search, but in the reverse
                    413: direction.
                    414: .IP ":g/[string]/[editor command]<nl>" 16
                    415: .sp 1
                    416: Using the \fB:\fR syntax it is possible to do global searches ala the
                    417: standard UNIX "ed" editor.
                    418: .LE
                    419: .NH 2
                    420: Text Insertion
                    421: .LP
                    422: The following commands allow for the insertion of text.  All multicharacter
                    423: text insertions are terminated with an <esc> character.
                    424: The last change
                    425: can always be \fBundone\fR by typing a \fBu\fR.
                    426: The text insert in insertion mode can contain newlines.
                    427: .VL 16
                    428: .IP a{text}<esc> 16
                    429: Insert text immediately following the cursor position.
                    430: Mnemonic: \fBa\fRppend
                    431: .IP A{text}<esc> 16
                    432: Insert text at the end of the current line.
                    433: Mnemonic: \fBA\fRppend
                    434: .IP i{text}<esc> 16
                    435: Insert text immediately preceding the cursor position.
                    436: Mnemonic: \fBi\fRnsert
                    437: .IP I{text}<esc> 16
                    438: Insert text at the beginning of the current line.
                    439: .IP o{text}<esc> 16
                    440: Insert a new line after the line on which the cursor appears and
                    441: insert text there.  Mnemonic:  \fBo\fRpen new line
                    442: .IP O{text}<esc> 16
                    443: Insert a new line preceding the line on which the cursor appears
                    444: and insert text there.
                    445: .LE
                    446: .NH 2
                    447: Text Deletion
                    448: .LP
                    449: The following commands allow the user to delete text in various ways.
                    450: All changes can always be \fBundone\fR by typing the \fBu\fR command.
                    451: .VL 16
                    452: .IP "[cnt]x" 16
                    453: Delete the character or characters starting at the cursor position.
                    454: .IP "[cnt]X" 16
                    455: Delete the character or characters starting at the character preceding
                    456: the cursor position.
                    457: .IP "D" 16
                    458: Deletes the remainder of the line starting at the cursor.
                    459: Mnemonic: \fBD\fRelete the rest of line
                    460: .IP "[cnt]d{motion}" 16
                    461: .br
                    462: Deletes one or more occurrences of the specified motion.
                    463: Any motion from sections 4.1 and 4.2 can be used here.
                    464: The d can be stuttered (e.g. [cnt]dd) to delete cnt lines.
                    465: .LE
                    466: .NH 2
                    467: Text Replacement
                    468: .LP
                    469: The following commands allow the user to simultaneously delete and
                    470: insert new text.  All such actions can be \fBundone\fR by typing
                    471: \fBu\fR following the command.
                    472: .VL 16
                    473: .IP "r<chr>" 16
                    474: Replaces the character at the current cursor position with <chr>.  This
                    475: is a one character replacement.  No <esc> is required for termination.
                    476: Mnemonic:  \fBr\fReplace character
                    477: .IP "R{text}<esc>" 16
                    478: Starts overlaying the characters on the screen with whatever you type.
                    479: It does not stop until an <esc> is typed.
                    480: .IP "[cnt]s{text}<esc>" 16
                    481: Substitute for "cnt" characters beginning at the current cursor
                    482: position.  A "$" will appear at the position in the text where the
                    483: "cnt"'th character appears so you will know how much you are erasing.
                    484: Mnemonic: \fBs\fRubstitute
                    485: .IP "[cnt]S{text}<esc>" 16
                    486: Substitute for the entire current line (or lines).  If no count is given,
                    487: a "$" appears at the end of the current line.  If a count of more than
                    488: 1 is given, all the lines to be replaced are deleted before the insertion
                    489: begins.
                    490: .IP "[cnt]c{motion}{text}<esc>" 16
                    491: .br
                    492: Change the specified "motion" by replacing it with the
                    493: insertion text.  A "$" will appear at the end of the last item
                    494: that is being deleted unless the deletion involves whole lines.
                    495: Motion's can be any motion from sections 4.1 or 4.2.
                    496: Stuttering the c (e.g. [cnt]cc) changes cnt lines.
                    497: .LE
                    498: .NH 2
                    499: Moving Text
                    500: .LP
                    501: \fBVi\fR provides a number of ways of moving chunks of text around.
                    502: There are nine buffers into which each piece of text which is deleted
                    503: or "yanked" is put in addition to the "undo" buffer.
                    504: The most recent deletion or yank is in the "undo" buffer and also
                    505: usually in buffer
                    506: 1, the next most recent in buffer 2, and so forth.  Each new deletion
                    507: pushes down all the older deletions.  Deletions older than 9
                    508: disappear.  There is also
                    509: a set of named registers, a-z, into which text can optionally
                    510: be placed.  If any delete or replacement type command is preceded
                    511: by \fB"<a-z>\fR, that named buffer will contain the text deleted
                    512: after the command is executed.  For example, \fB"a3dd\fR will delete
                    513: three lines starting at the current line and put them in buffer \fB"a\fR.*
                    514: .FS
                    515: * Referring to an upper case letter as a buffer name (A-Z) is the
                    516: same as referring to the lower case letter, except that text placed
                    517: in such a buffer is appended to it instead of replacing it.
                    518: .FE
                    519: There are two more basic commands and
                    520: some variations useful in getting and putting text into a file.
                    521: .VL 16
                    522: .IP ["<a-z>][cnt]y{motion} 16
                    523: .sp 1
                    524: Yank the specified item or "cnt" items and put in the "undo" buffer or
                    525: the specified buffer.  The variety of "items" that can be yanked
                    526: is the same as those that can be deleted with the "d" command or
                    527: changed with the "c" command.  In the same way that "dd" means
                    528: delete the current line and "cc" means replace the current line,
                    529: "yy" means yank the current line.
                    530: .IP ["<a-z>][cnt]Y 16
                    531: Yank the current line or the "cnt" lines starting from the current
                    532: line.  If no buffer is specified, they will go into the "undo" buffer,
                    533: like any delete would.  It is equivalent to "yy".
                    534: Mnemonic:  \fBY\fRank
                    535: .IP ["<a-z>]p 16
                    536: Put "undo" buffer or the specified buffer down \fBafter\fR the cursor.
                    537: If whole lines were yanked or deleted into the buffer, then they will be
                    538: put down on the line following the line the cursor is on.  If
                    539: something else was deleted, like a word or sentence, then it will
                    540: be inserted immediately following the cursor.
                    541: Mnemonic:  \fBp\fRut buffer
                    542: .IP
                    543: It should be noted that text in the named buffers remains there when you
                    544: start editing a new file with the \fB:e file<esc>\fR command.  Since
                    545: this is so, it is possible to copy or delete text from one file and
                    546: carry it over to another file in the buffers.
                    547: However, the undo buffer and the ability to undo are lost when
                    548: changing files.
                    549: .IP ["<a-z>]P 16
                    550: Put "undo" buffer or the specified buffer down \fBbefore\fR the cursor.
                    551: If whole lines where yanked or deleted into the buffer, then they will be
                    552: put down on the line preceding the line the cursor is on.  If
                    553: something else was deleted, like a word or sentence, then it will
                    554: be inserted immediately preceding the cursor.
                    555: .IP [cnt]>{motion} 16
                    556: The shift operator will right shift all the text from the line on which
                    557: the cursor is located to the line where the \fBmotion\fR is located.
                    558: The text is shifted by one \fBshiftwidth\fR.  (See section 6.)
                    559: \fB>>\fR means right shift the current line or lines.
                    560: .IP [cnt]<{motion} 16
                    561: The shift operator will left shift all the text from the line on which
                    562: the cursor is located to the line where the \fBitem\fR is located.
                    563: The text is shifted by one \fBshiftwidth\fR.  (See section 6.)
                    564: \fB<<\fR means left shift the current line or lines.
                    565: Once the line has reached the left margin it is not further affected.
                    566: .IP [cnt]={motion} 16
                    567: Prettyprints the indicated area according to
                    568: .B lisp
                    569: conventions.
                    570: The area should be a lisp s-expression.
                    571: .LE
                    572: .NH 2
                    573: Miscellaneous Commands
                    574: .LP
                    575: \fBVi\fR has a number of miscellaneous commands that are very
                    576: useful.  They are:
                    577: .VL 16
                    578: .IP ZZ 16
                    579: This is the normal way to exit from vi.
                    580: If any changes have been made, the file is written out.
                    581: Then you are returned to the shell.
                    582: .IP ^L 16
                    583: Redraw the current screen.  This is useful if someone "write"s you
                    584: while you are in "vi" or if for any reason garbage gets onto the
                    585: screen.
                    586: .IP ^R 16
                    587: On dumb terminals, those not having the "delete line" function
                    588: (the vt100 is such a terminal), \fBvi\fR saves redrawing the
                    589: screen when you delete a line by just marking the line with an
                    590: "@" at the beginning and blanking the line.  If you want to
                    591: actually get rid of the lines marked with "@" and see what the
                    592: page looks like, typing a ^R will do this.
                    593: .IP \s+4.\s0 16
                    594: "Dot" is a particularly useful command.  It repeats the last
                    595: text modifying command.  Therefore you can type a command once and
                    596: then to another place and repeat it by just typing ".".
                    597: .IP u 16
                    598: Perhaps the most important command in the editor,
                    599: u undoes the last command that changed the buffer.
                    600: Mnemonic:  \fBu\fRndo
                    601: .IP U 16
                    602: Undo all the text modifying commands performed on the current line
                    603: since the last time you moved onto it.
                    604: .IP [cnt]J 16
                    605: Join the current line and the following line.  The <nl> is deleted
                    606: and the two lines joined, usually with a space between the
                    607: end of the first line and the beginning of what was the second
                    608: line.  If the first line ended with a "period", then two spaces
                    609: are inserted.
                    610: A count joins the next cnt lines.
                    611: Mnemonic: \fBJ\fRoin lines
                    612: .IP Q 16
                    613: Switch to \fBex\fR editing mode.
                    614: In this mode \fBvi\fR will behave very much like \fBed\fR.
                    615: The editor in this mode will operate on single lines normally and
                    616: will not attempt to keep the "window" up to date.
                    617: Once in this mode it is also possible to switch to the \fBopen\fR
                    618: mode of editing.  By entering the command \fB[line number]open<nl>\fR
                    619: you enter this mode.  It is similar to the normal visual mode
                    620: except the window is only \fBone\fR line long.
                    621: Mnemonic: \fBQ\fRuit visual mode
                    622: .IP ^] 16
                    623: An abbreviation for a tag command.
                    624: The cursor should be positioned at the beginning of a word.
                    625: That word is taken as a tag name, and the tag with that
                    626: name is found as if it had been typed in a :tag command.
                    627: .IP [cnt]!{motion}{UNIX\ cmd}<nl> 16
                    628: .br
                    629: Any UNIX filter
                    630: (e.g. command that reads the standard input and outputs something
                    631: to the standard output) can be sent a section of the current file and
                    632: have the output of the command replace the original text.  Useful
                    633: examples are programs like \fBcb\fR, \fBsort\fR, and
                    634: \fBnroff\fR.  For instance, using \fBsort\fR it would be possible to
                    635: sort a section of the current file into a new list.
                    636: Using \fB!!\fR means take a line or lines starting at the line the
                    637: cursor is currently on and pass them to the UNIX command.
                    638: .B NOTE:
                    639: To just escape to the shell for one command,
                    640: use :!{cmd}<nl>, see section 5.
                    641: .IP z{cnt}<nl> 16
                    642: This resets the current window size to "cnt" lines and redraws the screen.
                    643: .LE
                    644: .NH 2
                    645: Special Insert Characters
                    646: .LP
                    647: There are some characters that have special meanings during
                    648: insert modes.  They are:
                    649: .VL 16
                    650: .IP ^V 16
                    651: During inserts, typing a ^V allows you to quote control characters
                    652: into the file.  Any character typed after the ^V will be inserted
                    653: into the file.
                    654: .IP [^]^D\ or\ [0]^D 16
                    655: <^D> without any argument backs up one \fBshiftwidth\fR.  This is necessary
                    656: to remove indentation that was inserted by the \fBautoindent\fR feature.
                    657: ^<^D> temporarily removes all the autoindentation, thus placing the cursor
                    658: at the left margin.  On the next line, the previous indent level will be
                    659: restored.  This is useful for putting "labels" at the left margin.
                    660: 0<^D> says remove all autoindents and stay that way.  Thus the cursor
                    661: moves to the left margin and stays there on successive lines until
                    662: <tab>'s are typed.  As with the <tab>, the <^D> is only effective before
                    663: any other "non-autoindent" controlling characters are typed.
                    664: Mnemonic: \fBD\fRelete a shiftwidth
                    665: .IP ^W 16
                    666: If the cursor is sitting on a word, <^W> moves the cursor back to the beginning
                    667: of the word, thus erasing the word from the insert.
                    668: Mnemonic: erase \fBW\fRord
                    669: .IP <bs> 16
                    670: The backspace always serves as an erase during insert modes in addition
                    671: to your normal "erase" character.  To insert a <bs> into your file, use
                    672: the <^V> to quote it.
                    673: .LE
                    674: .NH 1
                    675: \fB:\fR Commands
                    676: .LP
                    677: Typing a ":" during command mode causes \fBvi\fR to put the cursor at
                    678: the bottom on the screen in preparation for a command.  In the
                    679: ":" mode, \fBvi\fR can be given most \fBed\fR commands.  It is
                    680: also from this mode that you exit from \fBvi\fR or switch to different
                    681: files.  All commands of this variety are terminated by a <nl>, <cr>,
                    682: or <esc>.
                    683: .VL 16
                    684: .IP ":w[!] [file]" 16
                    685: Causes \fBvi\fR to write out the current text to the disk.  It is
                    686: written to the file you are editing unless "file" is supplied.  If
                    687: "file" is supplied, the write is directed to that file instead.  If
                    688: that file already exists, \fBvi\fR will not perform the write unless
                    689: the "!" is supplied indicating you
                    690: .I really
                    691: want to destroy the older copy of the file.
                    692: .IP :q[!] 16
                    693: Causes \fBvi\fR to exit.  If you have modified the file you are
                    694: looking at currently and haven't written it out, \fBvi\fR will
                    695: refuse to exit unless the "!" is supplied.
                    696: .IP ":e[!] [+[cmd]] [file]" 16
                    697: .sp 1
                    698: Start editing a new file called "file" or start editing the current
                    699: file over again.  The command ":e!" says "ignore the changes I've made
                    700: to this file and start over from the beginning".  It is useful if
                    701: you really mess up the file.  The optional "+" says instead of starting
                    702: at the beginning, start at the "end", or,
                    703: if "cmd" is supplied, execute "cmd" first.
                    704: Useful cases of this are where cmd is "n" (any integer) which starts
                    705: at line number n,
                    706: and "/text", which searches for "text" and starts at the line where
                    707: it is found.
                    708: .IP "^^" 16
                    709: Switch back to the place you were before your last tag command.
                    710: If your last tag command stayed within the file, ^^ returns to that tag.
                    711: If you have no recent tag command, it will return to the
                    712: same place in the previous file that it was showing when you switched
                    713: to the current file.
                    714: .IP ":n[!]" 16
                    715: Start editing the next file in the argument list.  Since \fBvi\fR
                    716: can be called with multiple file names, the ":n" command tells it to
                    717: stop work on the current file and switch to the next file.  If the
                    718: current file was modifies, it has to be written out before the ":n"
                    719: will work or else the "!" must be supplied, which says discard the
                    720: changes I made to the current file.
                    721: .IP ":n[!] file [file file ...]" 16
                    722: .sp
                    723: Replace the current argument list with a new list of files and start
                    724: editing the first file in this new list.
                    725: .IP ":r file" 16
                    726: Read in a copy of "file" on the line after the cursor.
                    727: .IP ":r !cmd" 16
                    728: Execute the "cmd" and take its output and put it into the file after
                    729: the current line.
                    730: .IP ":!cmd" 16
                    731: Execute any UNIX shell command.
                    732: .IP ":ta[!] tag" 16
                    733: .B Vi
                    734: looks in the file named
                    735: .B tags
                    736: in the current directory.
                    737: .B Tags
                    738: is a file of lines in the format:
                    739: .sp 1
                    740: .ti +8
                    741: tag filename \fBvi\fR-search-command
                    742: .sp 1
                    743: If \fBvi\fR finds the tag you specified in the \fB:ta\fR command,
                    744: it stops editing the current file if necessary and if the current file is
                    745: up to date on the disk and switches to the file specified and uses the
                    746: search pattern specified to find the "tagged" item of interest.  This
                    747: is particularly useful when editing multi-file C programs such as the
                    748: operating system.  There is a program called \fBctags\fR which will
                    749: generate an appropriate \fBtags\fR file for C and f77
                    750: programs so that by saying
                    751: \fB:ta function<nl>\fR you will be switched to that function.
                    752: It could also be useful when editing multi-file documents, though the
                    753: \fBtags\fR file would have to be generated manually.
                    754: .LE
                    755: .NH 1
                    756: Special Arrangements for Startup
                    757: .PP
                    758: \fBVi\fR takes the value of \fB$TERM\fR and looks up the characteristics
                    759: of that terminal in the file \fB/etc/termcap\fR.
                    760: If you don't know \fBvi\fR's name for the terminal you are working
                    761: on, look in \fB/etc/termcap\fR.
                    762: .PP
                    763: When \fBvi\fR starts, it attempts to read the variable EXINIT
                    764: from your environment.*
                    765: If that exists, it takes the values in it as the default values
                    766: for certain of its internal constants.  See the section on "Set Values"
                    767: for further details.
                    768: If EXINIT doesn't exist you will get all the normal defaults.
                    769: .FS
                    770: * On version 6 systems
                    771: Instead of EXINIT, put the startup commands in the file .exrc
                    772: in your home directory.
                    773: .FE
                    774: .PP
                    775: Should you inadvertently hang up the phone while inside
                    776: .B vi ,
                    777: or should the computer crash,
                    778: all may not be lost.
                    779: Upon returning to the system, type:
                    780: .DS
                    781: vi \-r file
                    782: .DE
                    783: This will normally recover the file.  If there is more than one
                    784: temporary file for a specific file name, \fBvi\fR recovers the
                    785: newest one.  You can get an older version by recovering the
                    786: file more than once.
                    787: The command "vi -r" without a file name gives you the list of files
                    788: that were saved in the last system crash
                    789: (but
                    790: .I not
                    791: the file just saved when the phone was hung up).
                    792: .NH 1
                    793: Set Commands
                    794: .LP
                    795: \fBVi\fR has a number of internal variables and switches which can be
                    796: set to achieve special affects.
                    797: These options come in three forms, those that are switches, which toggle
                    798: from off to on and back, those that require a numeric value, and those
                    799: that require an alphanumeric string value.
                    800: The toggle options are set by a command of the form:
                    801: .DS
                    802: :set option<nl>
                    803: .DE
                    804: and turned off with the command:
                    805: .DS
                    806: :set nooption<nl>
                    807: .DE
                    808: Commands requiring a value are set with a command of the form:
                    809: .DS
                    810: :set option=value<nl>
                    811: .DE
                    812: To display the value of a specific option type:
                    813: .DS
                    814: :set option?<nl>
                    815: .DE
                    816: To display only those that you have changed type:
                    817: .DS
                    818: :set<nl>
                    819: .DE
                    820: and to display the long table of all the settable parameters and
                    821: their current values type:
                    822: .DS
                    823: :set all<nl>
                    824: .DE
                    825: .PP
                    826: Most of the options have a long form and an abbreviation.  Both are
                    827: listed in the following table as well as the normal default value.
                    828: .PP
                    829: To arrange to have values other than the default used every time you
                    830: enter
                    831: .B vi ,
                    832: place the appropriate
                    833: .B set
                    834: command in EXINIT in your environment, e.g.
                    835: .DS
                    836: EXINIT='set ai aw terse sh=/bin/csh'
                    837: export EXINIT
                    838: .DE
                    839: or
                    840: .DS
                    841: setenv EXINIT 'set ai aw terse sh=/bin/csh'
                    842: .DE
                    843: for
                    844: .B sh
                    845: and
                    846: .B csh ,
                    847: respectively.
                    848: These are usually placed in your .profile or .login.
                    849: If you are running a system without environments (such as version 6)
                    850: you can place the set command in the file .exrc in your home
                    851: directory.
                    852: .VL 16
                    853: .IP autoindent\ ai 16
                    854: Default: noai Type: toggle
                    855: .br
                    856: When in autoindent mode, vi helps you indent code by starting each
                    857: line in the same column as the preceding line.
                    858: Tabbing to the right with <tab> or <^T> will move this boundary to
                    859: the right, and it can be moved to the left with <^D>.
                    860: .IP autoprint\ ap 16
                    861: Default: ap Type: toggle
                    862: .br
                    863: Causes the current line to be printed after each ex text modifying command.
                    864: This is not of much interest in the normal \fBvi\fR visual mode.
                    865: .IP autowrite\ aw 16
                    866: Default: noaw type: toggle
                    867: .br
                    868: Autowrite causes an automatic write to be done if there are unsaved
                    869: changes before certain commands which change files or otherwise
                    870: interact with the outside world.
                    871: These commands are :!, :tag, :next, :rewind, ^^, and ^].
                    872: .IP beautify\ bf 16
                    873: Default: nobf Type: toggle
                    874: .br
                    875: Causes all control characters except <tab>, <nl>, and <ff> to be discarded.
                    876: .IP directory\ dir 16
                    877: Default: dir=/tmp Type: string
                    878: .br
                    879: This is the directory in which \fBvi\fR puts its temporary file.
                    880: .IP errorbells\ eb 16
                    881: Default: noeb Type: toggle
                    882: .br
                    883: Error messages are preceded by a <bell>.
                    884: .IP hardtabs\ ht 16
                    885: Default: hardtabs=8 Type: numeric
                    886: .br
                    887: This option contains the value of hardware tabs in your terminal, or
                    888: of software tabs expanded by the Unix system.
                    889: .IP ignorecase\ ic 16
                    890: Default: noic Type: toggle
                    891: .br
                    892: All upper case characters are mapped to lower case in regular expression
                    893: matching.
                    894: .IP lisp 16
                    895: Default: nolisp Type: toggle
                    896: .br
                    897: Autoindent for \fBlisp\fR code.  The commands \fB( ) [[\fR and \fB]]\fR
                    898: are modified appropriately to affect s-expressions and functions.
                    899: .IP list 16
                    900: Default: nolist Type: toggle
                    901: .br
                    902: All printed lines have the <tab> and <nl> characters displayed visually.
                    903: .IP magic 16
                    904: Default: magic Type: toggle
                    905: .br
                    906: Enable the metacharacters for matching.  These include \fB. * < > [string]
                    907: [^string]\fR and \fB[<chr>-<chr>]\fR.
                    908: .IP number\ nu 16
                    909: Default: nonu Type: toggle
                    910: .br
                    911: Each line is displayed with its line number.
                    912: .IP open 16
                    913: Default: open Type: toggle
                    914: .br
                    915: When set, prevents entering open or visual modes from ex or edit.
                    916: Not of interest from vi.
                    917: .IP optimize\ opt 16
                    918: Default: opt Type: toggle
                    919: .br
                    920: Basically of use only when using the \fBex\fR capabilities.  This
                    921: option prevents automatic <cr>s from taking place,
                    922: and speeds up output of indented lines,
                    923: at the expense of losing typeahead on some versions of UNIX.
                    924: .IP paragraphs\ para 16
                    925: Default: para=IPLPPPQPP\ bp Type: string
                    926: .br
                    927: Each pair of characters in the string indicate \fBnroff\fR macros
                    928: which are to be treated as the beginning of a paragraph for the
                    929: \fB{\fR and \fB}\fR commands.  The default string is for the \fB-ms\fR
                    930: and \fB-mm\fR macros.
                    931: To indicate one letter \fBnroff\fR macros, such as \fB.P\fR or \fB.H\fR,
                    932: quote a space in for the second character position.  For example:
                    933: .sp 1
                    934: .ti +8
                    935: :set paragraphs=P\e bp<nl>
                    936: .sp 1
                    937: would cause \fBvi\fR to consider \fB.P\fR and \fB.bp\fR as paragraph
                    938: delimiters.
                    939: .IP prompt 16
                    940: Default: prompt Type: toggle
                    941: .br
                    942: In
                    943: .B ex
                    944: command mode the prompt character \fB:\fR will be printed when
                    945: \fBex\fR is waiting for a command.  This is not of interest from vi.
                    946: .IP redraw 16
                    947: Default: noredraw Type: toggle
                    948: .br
                    949: On dumb terminals, force the screen to always be up to date,
                    950: by sending great amounts of output.  Useful only at high speeds.
                    951: .IP report 16
                    952: Default: report=5 Type: numeric
                    953: .br
                    954: This sets the threshold for the number of lines modified.  When
                    955: more than this number of lines are modified, removed, or yanked,
                    956: \fBvi\fR will report the number of lines changed at the bottom of
                    957: the screen.
                    958: .IP scroll 16
                    959: Default: scroll={1/2 window} Type: numeric
                    960: .br
                    961: This is the number of lines that the screen scrolls up or down when
                    962: using the <^U> and <^D> commands.
                    963: .IP sections 16
                    964: Default: sections=SHNHH HU Type: string
                    965: .br
                    966: Each two character pair of this string specify \fBnroff\fR macro names
                    967: which are to be treated as the beginning of a section by the
                    968: \fB]]\fR and \fB[[\fR commands.  The default string is for the \fB-ms\fR
                    969: and \fB-mm\fR macros.
                    970: To enter one letter \fBnroff\fR macros, use a quoted space as the
                    971: second character.
                    972: See \fBparagraphs\fR for a fuller explanation.
                    973: .IP shell\ sh 16
                    974: Default: sh=from environment SHELL or /bin/sh   Type: string
                    975: .br
                    976: This is the name of the \fBsh\fR to be used for "escaped" commands.
                    977: .IP shiftwidth\ sw 16
                    978: Default: sw=8 Type: numeric
                    979: .br
                    980: This is the number of spaces that a <^T> or <^D> will move over for
                    981: indenting, and the amount < and > shift by.
                    982: .IP showmatch\ sm 16
                    983: Default: nosm Type: toggle
                    984: .br
                    985: When a \fB)\fR or \fB}\fR is typed, show the matching \fB(\fR or \fB{\fR
                    986: by moving the cursor to it for one second if it is on the current screen.
                    987: .IP slowopen\ slow 16
                    988: Default: terminal dependent Type: toggle
                    989: .br
                    990: On terminals that are slow and unintelligent, this option prevents the
                    991: updating of the screen some of the time to improve speed.
                    992: .IP tabstop\ ts 16
                    993: Default: ts=8 Type: numeric
                    994: .br
                    995: <tab>s are expanded to boundaries that are multiples of this value.
                    996: .IP taglength\ tl 16
                    997: Default: tl=0 Type: numeric
                    998: .br
                    999: If nonzero, tag names are only significant to this many characters.
                   1000: .IP term 16
                   1001: Default: (from environment \fBTERM\fP, else dumb) Type: string
                   1002: .br
                   1003: This is the terminal and controls the visual displays.  It cannot be
                   1004: changed when in "visual" mode,
                   1005: you have to Q to command mode, type a
                   1006: set term command, and do ``vi.'' to get back into visual.
                   1007: Or exit vi, fix $TERM, and reenter.
                   1008: The definitions that drive a particular
                   1009: terminal type are found in the file \fB/etc/termcap\fR.
                   1010: .IP terse 16
                   1011: Default: terse Type: toggle
                   1012: .br
                   1013: When set, the error diagnostics are short.
                   1014: .IP warn 16
                   1015: Default: warn Type: toggle
                   1016: .br
                   1017: The user is warned if she/he tries to escape to
                   1018: the shell without writing out the current changes.
                   1019: .IP window 16
                   1020: Default: window={8 at 600 baud or less, 16 at 1200 baud, and screen
                   1021: size \- 1 at 2400 baud or more} Type: numeric
                   1022: .br
                   1023: This is the number of lines in the window whenever \fBvi\fR must redraw
                   1024: an entire screen.  It is useful to make this size smaller if you are
                   1025: on a slow line.
                   1026: .IP w300,\ w1200,\ w9600
                   1027: .br
                   1028: These set window, but only within the corresponding speed ranges.
                   1029: They are useful in an EXINIT to fine tune window sizes.
                   1030: For example,
                   1031: .DS
                   1032: set w300=4 w1200=12
                   1033: .DE
                   1034: causes a 4 lines window at speed up to 600 baud, a 12 line window at 1200
                   1035: baud, and a full screen (the default) at over 1200 baud.
                   1036: .IP wrapscan\ ws 16
                   1037: Default: ws Type: toggle
                   1038: .br
                   1039: Searches will wrap around the end of the file when is option is set.  When
                   1040: it is off, the search will terminate when it reaches the end or the
                   1041: beginning of the file.
                   1042: .IP wrapmargin\ wm 16
                   1043: Default: wm=0 Type: numeric
                   1044: .br
                   1045: \fBVi\fR will automatically insert a <nl> when it finds a natural
                   1046: break point (usually a <sp> between words) that occurs within
                   1047: "wm" spaces of the right margin.
                   1048: Therefore with "wm=0" the option is off.  Setting it to 10 would
                   1049: mean that any time you are within 10 spaces of the right margin
                   1050: \fBvi\fR would be looking for a <sp> or <tab> which it could
                   1051: replace with a <nl>.  This is convenient for people who forget
                   1052: to look at the screen while they type.
                   1053: (In version 3, wrapmargin behaves more like nroff, in that the
                   1054: boundary specified by the distance from the right edge of the screen
                   1055: is taken as the rightmost edge of the area where a break is allowed,
                   1056: instead of the leftmost edge.)
                   1057: .IP writeany\ wa 16
                   1058: Default: nowa Type: toggle
                   1059: .br
                   1060: \fBVi\fR normally makes a number of checks before it writes out a file.
                   1061: This prevents the user from inadvertently destroying a file.  When the
                   1062: "writeany" option is enabled, \fBvi\fR no longer makes these checks.
                   1063: .LE

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.