home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d591 / vim.lha / Vim / reference.doc < prev    next >
Text File  |  1992-01-31  |  78KB  |  2,006 lines

  1.  
  2.  
  3.  
  4.             VIM reference manual
  5.  
  6.              By Bram Moolenaar
  7.  
  8.                version 1.13
  9.  
  10.  
  11.  1. Introduction
  12.  2. Notation
  13.  3. Starting VIM
  14.  4. Modes
  15.  5. Editing files
  16.  6. Cursor motions
  17.  7. Scrolling
  18.  8. Inserting text
  19.  9. Deleting text
  20. 10. Changing text
  21. 11. Copying and moving text
  22. 12. Various commands
  23. 13. Repeating commands
  24. 14. Undo and redo
  25. 15. Key mapping
  26. 16. Recovery after a crash
  27. 17. Options
  28. 18. Differences from Vi and Ex
  29. 19. Credits
  30.  
  31.  
  32.     1. Introduction
  33.  
  34. VIM stands for Vi Imitation. VIM is a text editor which includes almost all the 
  35. commands from the Unix program "Vi". It is very useful for editing programs and 
  36. other ASCII text.
  37.  
  38. A large number of the "Ex" commands (the commands that start with a colon) are 
  39. included. However, there is no Ex mode. Throughout this manual the differences 
  40. are mentioned in curly braces. Read the chapter "Differences from Vi and Ex" 
  41. for a summary of the differences.
  42.  
  43. This manual refers to VIM on the Commodore Amiga computer. On other computers 
  44. and on terminals there may be small differences.
  45.  
  46. This manual is a reference for all the VIM commands and options. A basic 
  47. knowledge of "Vi" is assumed. A summary of this manual can be found in the file 
  48. vim:vim.hlp. It can be accessed from within VIM with the <HELP> key and with 
  49. the command ":help".
  50.  
  51.  
  52.     2. Notation
  53.  
  54. []        Characters in square brackets are optional.
  55.  
  56. [cnt]        An optional number that may precede the command to multiply or 
  57.         iterate the command. If no number is given a count of one is 
  58.         used, unless otherwise noted. Note that in this manual the 
  59.         [cnt] is not mentioned in the description of the command, but 
  60.         only in the explanation. This was done to make the commands 
  61.         more easy to lookup. The (partially) entered count is shown at 
  62.         the bottom of the window. You can use <DEL> to erase the last 
  63.         digit.
  64.  
  65. ["x]        An optional named register designation to put deleted text 
  66.         into. The x is a single character between <a> and <z> or <A> 
  67.         and <Z>. The uppercase and lower case letter designate the same 
  68.         register, but the lower case letter is used to overwrite the 
  69.         previous register contents, while the uppercase letter is used 
  70.         to append to the previous register contents. Without the ["x] 
  71.         the deleted text is put into the unnamed register. The ["x] 
  72.         must precede the [cnt].
  73.  
  74. {}        Curly braces denote parts of the command which must appear, but 
  75.         can take a number of different values. The differences between 
  76.         VIM and Vi are also given in curly braces.
  77.  
  78. {motion}    A command that moves the cursor. They are listed in chapter 6.
  79.         This is used after an "operator" command to move over the text 
  80.         that is to be operated upon. If the motion includes a count and 
  81.         the operator also had a count, the two counts are multiplied. 
  82.         For example: "2d3w" deletes six words.
  83.  
  84. <character>    A special character from the table below or a single ASCII 
  85.         character.
  86.  
  87. <char1-char2>    A single character from the range <char1> to <char2>. For 
  88.         example: <a-z> is a lower case letter. Multiple ranges may be 
  89.         concatenated. For example: <a-zA-Z0-9> is any alphanumeric 
  90.         character.
  91.  
  92. CTRL-<char>    <char> typed as a control character, that is, typing <char> 
  93.         while holding the CTRL key down. The case of <char> does not 
  94.         matter, thus CTRL-A and CTRL-a are equivalent.
  95.  
  96.  
  97. notation    meaning             equivalent hex value
  98. -----------------------------------------------------------------------
  99. <BELL>      bell            CTRL-G    0x07
  100. <BS>        backspace        CTRL-H    0x08
  101. <TAB>       tab            CTRL-I    0x09
  102. <LF>        linefeed        CTRL-J    0x0a
  103. <NL>        newline            CTRL-J    0x0a (same as linefeed)
  104. <FF>        formfeed        CTRL-L    0x0c
  105. <CR>        carriage return        CTRL-M    0x0d
  106. <ESC>       escape            CTRL-[    0x1b
  107. <SPACE>        space                0x20
  108. <DEL>       delete                0x7f
  109. <HELP>        help key            0x80
  110. <C_UP>        cursor-up            0x84
  111. <C_DOWN>    cursor-down            0x85
  112. <C_LEFT>    cursor-left            0x86
  113. <C_RIGHT>    cursor-right            0x87
  114. <SC_UP>        shift-cursor-up            0x88
  115. <SC_DOWN>    shift-cursor-down        0x89
  116. <SC_LEFT>    shift-cursor-left        0x8a
  117. <SC_RIGHT>    shift-cursor-right        0x8b
  118. <F1> - <F10>    function keys 1 to 10        0x8c - 0x95
  119. <SF1> - <SF10>    shift-function keys 1 to 10    0x96 - 0x9f
  120. -----------------------------------------------------------------------
  121.  
  122.  
  123.     3. Starting VIM
  124.  
  125. 3.1 Command line
  126.  
  127. Most often VIM is started to edit a single file with the command 
  128.  
  129.     vim file
  130.  
  131. More generally VIM is started with:
  132.  
  133.     vim [options] [filelist]
  134.  
  135. If the filelist is missing, the editor will start with an empty buffer.
  136. Otherwise exactly one out of the following four may be used to choose one or 
  137. more files to be edited.
  138.  
  139. file ..        A list of file names. The first one (alphabetically) will be 
  140.         the current file and read into the buffer. The cursor will be 
  141.         positioned on the first line of the buffer.
  142.  
  143. +[num] file ..    Same as the above, but the cursor will be positioned on line 
  144.         "num". If "num" is missing, the cursor will be positioned on 
  145.         the last line.
  146.  
  147. +/pat file ..    Same as the above, but the cursor will be positioned on the 
  148.         first occurrence of "pat" in the current file (see the section 
  149.         "pattern searches" for the available search patterns).
  150.  
  151. -t {tag}    A tag. {tag} is looked up in the tags file, the associated file 
  152.         becomes the current file and the associated command is 
  153.         executed. Mostly this is used for C programs. {tag} then should 
  154.         be a function name. The effect is that the file containing that 
  155.         function becomes the current file and the cursor is positioned 
  156.         on the start of the function (see the section "tag searches").
  157.  
  158. -e        QuickFix mode. The error file "AztecC.Err" is read and the first 
  159.         error is displayed. See 5.6.
  160.  
  161. The options, if present, must precede the filelist. The options may be given in 
  162. any order.
  163.  
  164. -r        Recovery mode. The autoscript file is read to recover a crashed 
  165.         editing session. It has almost the same effect as "-s file.vim". 
  166.         See the chapter "Recovery after a crash".
  167.  
  168. -v        View mode. The readonly option will be set. You can still edit 
  169.         the buffer, but will be prevented from accidental overwriting a 
  170.         file. If you do want to overwrite a file, add an exclamation mark 
  171.         to the Ex command, as in ":w!". The readonly option can be 
  172.         reset with ":set noro" (see the options chapter).
  173.  
  174. -n        No autoscript file will be written. Recovery after a crash will 
  175.         be impossible. Handy if you want to edit a file on a very slow 
  176.         medium (e.g. floppy). Can also be done with ":set uc=0".
  177.  
  178. -s {scriptin}    The script file {scriptin} is read. The characters in the file 
  179.         are interpreted as if you had typed them. The same can be done 
  180.         with the command ":source! {scriptin}". If the end of the file 
  181.         is reached before the editor exits, further characters are read 
  182.         from the keyboard.
  183.  
  184. -w {scriptout}    All the characters that you type are recorded in the file 
  185.         {scriptout}, until you exit VIM. This is useful if you want to 
  186.         create a script file to be used with "vim -s" or ":source!".
  187.  
  188. Example use of script file usage to change a name in several files:
  189.     Create a file "sub.vi" containing substitute commands and a :wq command:
  190.  
  191.         :%s/Jones/Smith/g
  192.         :%s/Allen/Peter/g
  193.         :wq
  194.  
  195.     Execute VIM on all files you want to change:
  196.  
  197.         foreach i ( *.let ) vim -s sub.vi $i
  198.  
  199.  
  200. 3.2 Workbench (Amiga only)
  201.  
  202. Vim can be started from the workbench by clicking on its icon twice. It will 
  203. then start with an empty buffer.
  204.  
  205. Vim can be started to edit one or more files by using a "Project" icon. The 
  206. "Default Tool" of the icon must be the full pathname of the Vim executable. The 
  207. name of the ".info" file must be the same as the name of the text file. By 
  208. clicking on this icon twice, Vim will be started with the filename as current 
  209. filename, which will be read into the buffer (if it exists). You can edit 
  210. multiple files by pressing the shift key while clicking on icons, and clicking 
  211. twice on the last one. The "Default Tool" for all these icons must be the same.
  212.  
  213. It is not possible to give arguments to Vim, other than filenames, from the 
  214. workbench.
  215.  
  216.  
  217. 3.3 Vim window
  218.  
  219. VIM will run in the CLI window where it is started. If VIM is started with the 
  220. "run" or "runback" command, or if VIM is started from the workbench, it will 
  221. open a window of its own.
  222.  
  223. To open the new window a little trick is used. As soon as VIM recognizes that it
  224. does not run in a normal CLI window, it will create a script file in t:. This
  225. script file contains the same command as how VIM was started, and an "endcli"
  226. command. This script file is then executed with a "newcli" command. The script
  227. file will hang around until reboot, or until you delete it. The "c:run" and
  228. "c:newcli" commands are required for this to work. This method is required to 
  229. get the ":sh" and ":!" commands to work correctly. It is not done if Vim was 
  230. started with the -e option (the ":sh" and ":!" commands are not available then).
  231.  
  232. VIM will automatically recognize the window size and react to window resizing.
  233. It is advised to use the fastfonts program "FF", included in DOS 1.3, to speed 
  234. up the display.
  235.  
  236.  
  237. 3.4 Initialization
  238.  
  239. When VIM starts running it does initializations in this order:
  240.  
  241. 1. The environment variable EXINIT, if it exists, is executed as an Ex command. 
  242. 2. If the EXINIT environment variable does not exist, the file "s:.exrc", if it 
  243.    exists, is read and each line is executed as an Ex command.
  244. 3. The file ".exrc" in the current directory, if it exists, is read and each 
  245.    line is executed as an Ex command.
  246. 4. The environment variable SHELL, if it exists, is used to set the shell 
  247.    option.
  248.  
  249. This can be used to set your default settings and mappings for all edit 
  250. sessions or for sessions in a certain directory. See the section "Saving 
  251. settings" for how to create a file with commands to recreate the current 
  252. settings.
  253.  
  254. On the Amiga two types of environment variables exist. The ones set with the 
  255. DOS 1.3 setenv command are recognized. See the AmigaDos 1.3 manual. The 
  256. environment variables set with the old Manx Set command are not recognized.
  257.  
  258.  
  259.     4. Modes
  260.  
  261. 4.1 Introduction
  262.  
  263. VIM has four basic modes:
  264.  
  265. command mode        In command mode you can enter all the editor commands. 
  266.             If you start the editor you get into this mode.
  267.  
  268. insert mode        In insert mode the text you type is inserted into the 
  269.             buffer. If the showmode option is set (which is 
  270.             default), the string "-- INSERT --" is shown at the 
  271.             bottom of the window.
  272.  
  273. replace mode        Replace mode is a special case of insert mode. You can 
  274.             do the same things as in insert mode, but for each 
  275.             character you enter (except some special characters) 
  276.             one character of the existing text is deleted. If the 
  277.             showmode option is set (which is default), the string 
  278.             "-- REPLACE --" is shown at the bottom of the window.
  279.  
  280. command line mode    In command line mode you can enter one line of text at 
  281.             the bottom of the window. This is for the Ex commands, 
  282.             the pattern search commands and the filter command.
  283.  
  284. More explanation on the insert, replace and command line mode is further on in 
  285. this chapter.
  286.  
  287.  
  288. 4.2 Switching from mode to mode
  289.  
  290. If for any reason you do not know in which mode you are, you can always get 
  291. back to command mode by typing <ESC> twice. You will know you are back in
  292. command mode when you see the screen flash or hear the bell after you type 
  293. <ESC>.
  294.  
  295. - go from command mode to insert mode by giving one of the commands "iIaAoOcCsS".
  296. - go from command mode to replace mode with the "R" command (not the "r" 
  297.   command!).
  298. - go from command mode to command line mode with the one of the commands ":/?!".
  299.  
  300. - go from insert or replace mode to command mode with <ESC> (twice in some rare 
  301.   cases).
  302. - go from command line mode to command mode with <CR> (which causes the entered 
  303.   command to be executed), by deleting the complete line (e.g. with "@") and 
  304.   giving a final <BS>, or by hitting <ESC> twice. In the last case the first 
  305.   <ESC> will also be used to start filename completion, but you can ignore 
  306.   that.
  307.  
  308.  
  309. 4.3 Insert and replace mode
  310.  
  311. In insert and replace mode the following characters have a special meaning, 
  312. other characters are inserted directly. To insert one of these special 
  313. characters into the buffer, precede it with CTRL-V.
  314.  
  315. char        action
  316. -----------------------------------------------------------------------
  317. CTRL-@        Insert previously inserted text and stop insert. {Vi: only when 
  318.         typed as first char, only upto 128 chars}
  319. CTRL-D        Delete one shiftwidth after auto-indent, delete the character 
  320.         before the cursor otherwise. {Vi: only after auto-indent; also 
  321.         accepts preceding <^> and <0>}
  322. CTRL-E        Insert the character which is below the cursor. {not in Vi}
  323. CTRL-H <BS>    Delete the character before the cursor (the newline character 
  324.         if the cursor is in column 1 and the backspace option is set). 
  325.         {Vi: does not cross lines, does not delete autoindents}
  326. CTRL-J <LF>    Begin new line.
  327. CTRL-M <CR>    Begin new line.
  328. CTRL-R        Insert the character which is above the cursor. {not in Vi}
  329. CTRL-T        Insert one shiftwidth after auto-indent, TAB otherwise. {Vi: no 
  330.         TAB}
  331. CTRL-U        Delete all entered characters in the current line.
  332. CTRL-V        Insert next character literally.
  333. CTRL-W        Delete word before the cursor (see the section "word motions" 
  334.         for the definition of a word).
  335. CTRL-[ <ESC>    End insert or replace mode, back to command mode.
  336. -----------------------------------------------------------------------
  337.  
  338. The textwidth option can be used to automatically break a line before it is 
  339. getting too long. Set the textwidth option to the maximum line length. If you 
  340. then type more characters (not being spaces or tabs), the last word will be put 
  341. on a new line (unless it is the only word on the line). {Vi has the wrapmargin 
  342. option, but it does not do what you want}.
  343.  
  344. If you want to format a few lines do the following. First join them together 
  345. into a single line. Set the textwidth option to the desired maximum width. Then 
  346. append one character to the end of the line with "Ax". The text will be 
  347. separated into several lines, each less than the maximum width. The extra 
  348. character can be deleted with "<BS><ESC>".
  349.  
  350.  
  351. 4.4 Command line mode
  352.  
  353. Command line mode is used to enter Ex commands, search patterns and <!> 
  354. commands.
  355.  
  356.  
  357. 4.4.1 Command line editing
  358.  
  359. Normal characters are inserted in front of the cursor position. You can move 
  360. around in the command line with the cursor keys. {Vi: can only alter the last 
  361. character in the line}
  362.  
  363. The command lines that you enter are remembered in a history table. You can 
  364. recall them with the up and down cursor keys. Use the history option to set the 
  365. number of lines that are remembered (default 20).
  366.  
  367. CTRL-V        insert next character literally {Vi: type the CTRL-V twice to 
  368.         get one}
  369. <C_LEFT>    cursor left
  370. <C_RIGHT>    cursor right
  371. <SC_LEFT>    cursor one word left
  372. <SC_RIGHT>    cursor one word right
  373.  
  374. <BS>        delete the character in front of the cursor
  375. <DEL>        delete the character under the cursor
  376. @        remove all characters
  377.  
  378. <C_UP>        recall older command line from history
  379. <C_DOWN>    recall more recent command line from history
  380.  
  381. CTRL-D        list filenames that match the pattern in front of the cursor
  382. <ESC>        do filename completion on the pattern in front of the cursor
  383.  
  384. For the last two you need arp.library in the libs: directory. Standard Amiga 
  385. wildcards are accepted, plus the <*> and <?> characters.
  386.  
  387. For filename completion you can use the suffixes option to set a priority 
  388. between files with almost the same name. If there are multiple matches, those 
  389. files with a file extension that is in the suffixes option are ignored. The 
  390. default is ".bak.o.h.info", which means that files with the extensions ".bak",
  391. ".o", ".h" and ".info" are sometimes ignored. It is impossible to ignore 
  392. suffixes with two dots. Examples:
  393.  
  394. pattern:    files:                match: 
  395. test*        test.c test.h test.o        test.c
  396. test*        test.h test.o            (two matches)
  397. test*        test.i test.h test.c        (two matches)
  398.  
  399.  
  400. 4.4.2 Ex command lines
  401.  
  402. The Ex commands have a few specialities:
  403.  
  404. <"> or <#> at the start of a line cause the whole line to be ignored. <"> after 
  405. a command causes the rest of the line to be ignored. This can be used to add 
  406. comments.
  407.  
  408. <|> can be used to separate commands, so you can give multiple commands in one 
  409. line. The commands ":global", ":vglobal" and ":!" see the <|> as their 
  410. argument, and can therefore not be followed by another command.
  411.  
  412. When the characters <%> and <#> are used where a filename is expected, they are 
  413. expanded to the current and alternate filename (see the chapter "editing 
  414. files").
  415.  
  416. Embedded and trailing spaces in filenames are allowed if one filename is 
  417. expected as argument (":next {file..}" uses the space to separate filenames).
  418.  
  419. When you want to use the special characters <"> or  <|> in a command, or want 
  420. to use <%> or <#> in a filename, precede them with a backslash. The backslash 
  421. is not required in a range and in the ":substitute" command.
  422.  
  423.  
  424. 4.4.3 Ex command line ranges
  425.  
  426. Some Ex commands accept a line range in front of them. This is noted as 
  427. [range]. It consists of one or more line specifiers, separated with ',' or ';'. 
  428. When separated with ';' the cursor position will be set to that line before 
  429. interpreting the next line specifier. The default line specifier for most 
  430. commands is the Cursor position, but the commands ":write" and ":global" have 
  431. the whole file (1,$) as default. If more line specifiers are given than 
  432. required for the command, the first one(s) will be ignored.
  433.  
  434. Line numbers may be specified with:
  435.     {number}    an absolute line number
  436.     .        the current line
  437.     $        the last line in the file
  438.     %        equal to 1,$ (the entire file)
  439.     't        position of mark t
  440.     /{pattern}    the next line where {pattern} matches
  441.     ?{pattern}    the previous line where {pattern} matches
  442.  
  443. Each may be followed (several times) by '+' or '-' and an optional number. This 
  444. number is added or subtracted from the preceding line number. If the number is 
  445. omitted, 1 is used.
  446.  
  447. Examples:
  448.     .+3        three lines below the cursor
  449.     /that+1        the line below the next line containing "that"
  450.     .,$        from current line until end of file
  451.  
  452. Some commands allow for a count after the command. This count is used as the 
  453. number of lines to be used, starting with the line given in the last line 
  454. specifier (the default is the cursor line).
  455.  
  456. Examples:
  457.     :s/x/X/g 5    substitute <x> by <X> in the current line and four more
  458.     :23d 4        delete lines 23, 24, 25 and 26
  459.  
  460.  
  461. 4.5 The window contents
  462.  
  463. In command and insert/replace mode the screen window will show the current 
  464. contents of the buffer: What You See Is What You Get. {Vi: when changing text a 
  465. <$> is placed on the last changed character; The window is not always updated 
  466. on slow terminals} Lines longer than the window width will wrap.
  467. The bottom lines in the window may start with one of these two characters:
  468.  
  469. <@>     The next line is too long to fit in the window.
  470. <~>    Below the last line of the buffer.
  471.  
  472. All normal ASCII characters are displayed directly on the screen. The <TAB> is 
  473. replaced by the number of spaces that it represents. Other non-printing 
  474. characters are replaced by "^<char>", where <char> is the non-printing 
  475. character with 64 added. Thus character 7 (bell) will be shown as "^G".
  476. Characters between 127 and 160 are replaced by "~<char>", where <char> is the 
  477. character with 64 subtracted. These characters occupy more than one position on 
  478. the screen. The cursor can only be positioned on the last one.
  479.  
  480. If you set the number option, all lines will be preceded with their number.
  481.  
  482. If you set the list option, <TAB> characters will not be shown as several 
  483. spaces, but as "^I". A <$> will be placed at the end of the line, so you can 
  484. find trailing blanks.
  485.  
  486. In command line mode only the command line itself is shown correctly. The 
  487. display of the buffer contents is updated as soon as you go back to command 
  488. mode.
  489.  
  490. Some commands hand over the window to external commands (e.g. ":shell" and 
  491. "="). After these commands are finished the window may be clobbered with output 
  492. from the external command, so it needs to be redrawn. If you are expected to 
  493. have a look at the output of the external command, you are requested to hit 
  494. <CR> when you want to continue. In fact <SP> and <NL> will also have the same 
  495. effect. If you hit <:> instead, you are returned into command line mode.
  496.  
  497. The last line of the window is used for messages, showing the current mode and 
  498. displaying the command characters that you typed but were not used yet. {Vi: 
  499. does not show the characters you typed} If there is an error, an error message 
  500. will be shown for at least one second (in reverse video). {Vi: error messages 
  501. may be overwritten with other messages before you have a chance to read them}
  502.  
  503. Some commands show how many lines were affected. Above which threshold this 
  504. happens can be controlled with the report option (default 5).
  505.  
  506. On the Amiga VIM will run in a CLI window. The name VIM and the full name of 
  507. the current filename will be shown in the title bar. When the window is 
  508. resized, VIM will automatically redraw the window. You may make the window as 
  509. small as you like, but if it gets too small not a single line will fit in it. 
  510. Make it at least 40 characters wide to be able to read most messages on the 
  511. last line.
  512.  
  513.  
  514.     5. Editing files
  515.  
  516. 5.1 Introduction
  517.  
  518. Editing a file with VIM means:
  519.  
  520. 1. reading the file into the internal buffer 
  521. 2. changing the buffer with editor commands
  522. 3. writing the buffer into a file
  523.  
  524. As long as you don't write the buffer, the original file remains unchanged. If 
  525. you start editing a file (read a file into the buffer), the file name is 
  526. remembered as the "current filename".
  527.  
  528. If there already was a current filename, then that one becomes the alternate 
  529. file name. Older alternate filenames are remembered in a list. When you start
  530. editing a new file, the filenames shift one down in this list. {Vi: no list of 
  531. alternate filenames}
  532.  
  533. In Ex commands (the ones that start with a colon) you can refer to the current 
  534. filename with <%> and refer to the alternate filename with <#> or "#0".
  535. The older alternate filenames are "#1", "#2", etc.
  536.  
  537. CTRL-G or :f[ile]    Prints the current filename and the cursor position.
  538. :f[ile] {name}        Sets the current filename to {name}.
  539. :files            Lists the alternate filenames.
  540.  
  541. When writing the buffer, the default is to use the current filename. Thus when 
  542. you give the "ZZ" or ":wq" command, the original file will be overwritten.
  543. If you do not want this, the buffer can be written into another file by 
  544. giving a filename argument to the ":write" command. For example:
  545.     
  546.     vim testfile
  547.     [change the buffer with editor commands]
  548.     :w newfile
  549.     :q
  550.  
  551. This will create a file "newfile", that is a modified copy of "testfile". The 
  552. file "testfile" will remain unchanged. Anyway, if the "backup" option is set, 
  553. VIM renames the original file to end in ".bak" before it will be overwritten. 
  554. You can use this file if you discover that you need the original file.
  555.  
  556. VIM remembers whether you have changed the buffer. You are protected from 
  557. loosing the changes you made. If you try to quit without writing, or want to 
  558. start editing another file, this will be refused. In order to overrule this 
  559. protection add a <!> to the command. The changes will then be lost. For 
  560. example: ":q" will not work if the buffer was changed, but ":q!" will. To see 
  561. whether the buffer was changed use the "CTRL-G" command. The message includes 
  562. the string "[Modified]" if the buffer has been changed.
  563.  
  564.  
  565. 5.2 Editing a file
  566.  
  567. :e [+pat]        Edit the current file, unless changes have been made.
  568.  
  569. :e! [+pat]        Edit the current file always. Discard any changes to 
  570.             the buffer.
  571.  
  572. :e[dit] [+pat] {file}    Edit {file}, unless changes have been made.
  573.  
  574. :e[dit]! [+pat] {file}    Edit {file} always. Discard any changes to the buffer.
  575.  
  576. :ex [+pat] [file]    Same as :edit.
  577.  
  578. :vi[sual] [+pat] [file]    Same as :edit. {Vi: go from Ex to visual mode}
  579.  
  580. CTRL-^            Edit [cnt]th (default 0) alternate file (equivalent to 
  581.             ":e #[cnt]"). If the autowrite option is set and the 
  582.             buffer was changed, write it.
  583.  
  584. :cd            Print the current directory name. {Vi: not}
  585.  
  586. :cd {path}        Change the current directory to {path}.
  587.  
  588. :chd[ir] [path]        Same as :cd.
  589.  
  590. These commands are used to start editing a single file. This means that the 
  591. file is read into the buffer and the current filename is set. You may use the 
  592. ":cd" command if you want to get to another directory, so you will not have to 
  593. type that directory name in front of the filenames.
  594.  
  595. You can use the ":e!" command if you messed up the buffer and want to start all 
  596. over again. The ":e" command is only useful if you have changed the current 
  597. filename.
  598.  
  599. The [+pat] can be used to position the cursor in the newly opened file:
  600.     +        Start at the last line.
  601.     +{num}        Start at line {num}.
  602.     +/{pat}        Start at first line containing {pat}. {pat} must not
  603.             contain any spaces.
  604.     +{command}    Execute {command} after opening the new file. {command}
  605.             must not contain spaces. {Vi: accepts an Ex command 
  606.             instead}
  607.  
  608.  
  609. 5.3 Tag searches
  610.  
  611. :ta[g] {ident}        Jump to the definition of {ident}, using the 
  612.             information in the tags file. Won't work if changes 
  613.             have been made and the autowrite option is off.
  614.  
  615. :ta[g]! {ident}        Jump to the definition of {ident}, using the 
  616.             information in the tags file. Discard any changes to 
  617.             the buffer.
  618.  
  619. CTRL-]            ":ta" to the identifier under cursor. {Vi: identifier 
  620.             after the cursor}
  621.  
  622. A tag is an identifier that appears in the "tags" file. It is a sort of label 
  623. that can be jumped to. For example: In C programs each function can get a tag 
  624. with the name of the function.
  625.  
  626. With the ":tag" command the cursor will be positioned on the tag. If the tag is 
  627. in the current file this will always work. Otherwise the performed actions 
  628. depend on whether the current file was changed and on the autowrite option:
  629.  
  630.   tag in       file    autowrite
  631. current file  changed   option      action
  632. -----------------------------------------------------------------------------
  633.     yes         x      x      goto tag
  634.     no         no      x      read other file, goto tag
  635.     no        yes      on      write current file, read other file, goto tag
  636.     no        yes     off      fail
  637. -----------------------------------------------------------------------------
  638.  
  639. - If the tag is in the current file, the command will always work.
  640. - If the tag is in another file and the current file was not changed, the other 
  641.   file will be made the current file and read into the buffer.
  642. - If the tag is in another file, the current file was changed and the autowrite 
  643.   option is set, the current file will be written, the other file will be made 
  644.   the current file and read into the buffer.
  645. - If the tag is in another file, the current file was changed and the autowrite
  646.   option is not set, the command will fail. If you want to save the changes, 
  647.   use the ":w" command and then try again. If you want loose the changes you 
  648.   can use the ":tag!" command.
  649.  
  650. The ":tag" command works very well for C programs. If you see a call to a 
  651. function and wonder what that function does, position the cursor inside of the 
  652. function name and hit CTRL-]. This will bring you to the function definition. 
  653. An easy way back is with the "''" command, or, if the definition is in another 
  654. file, with the CTRL-^ command.
  655.  
  656. A tags file can be created with the external command 'ctags'. It will contain a 
  657. tag for each function. Some versions of 'ctags' will also make a tag for each 
  658. "#defined" macro.
  659.  
  660. The lines in the tags file should have this format:
  661.  
  662.     {tag}{separator}{filename}{separator}{command}
  663.  
  664. {tag}        the identifier
  665. {separator}    a single <TAB> or space character
  666. {filename}    the file that contains the definition of {tag}
  667. {command}    the VIM command that positions the cursor on the tag (it can be 
  668.         any command, but normally it is a search command like "/^tag").
  669.  
  670. The tags option is a list of file names separated by spaces. Each of these 
  671. files is searched for the tag. This can be used to use a different file than 
  672. the default file "tags". It can also be used to access a common tags file. For 
  673. example:
  674.  
  675. :set tags=tags\ s:commontags
  676.  
  677. The tag will first be searched for in the file "tags" in the current directory. 
  678. If it is not found there the file "s:commontags" will be searched for the tag. 
  679. The backslash is required for the space to be include in the string option.
  680.  
  681.  
  682. 5.4 The file list
  683.  
  684. If you give more than one filename when starting VIM, this list is remembered 
  685. as the file list. You can use this list with the following commands:
  686.  
  687. :ar[gs]            Print the file list, with the current file in "[]".
  688.  
  689. :n[ext]            Edit next file, unless changes have been made and the 
  690.             autowrite option is off.
  691.  
  692. :n[ext]!        Edit next file, discard any changes to the buffer.
  693.  
  694. :n[ext] [+pat] {filelist}
  695.             Define {filelist} as the new list of files and edit
  696.             the first one, unless changes have been made and the 
  697.             autowrite option is off.
  698.  
  699. :n[ext]! [+pat] {filelist}
  700.             Define {filelist} as the new list of files and edit
  701.             the first one. Discard any changes to the buffer. 
  702.  
  703. :N[ext]            Edit previous file in file list, unless changes have
  704.             been made and the autowrite option is off.
  705.  
  706. :N[ext]!        Edit previous file in file list. Discard any changes to 
  707.             the buffer.
  708.  
  709. :pre[vious]        Same as :Next.
  710.  
  711. :rew[ind]        Start editing the first file in the file list, unless
  712.             changes have been made and the autowrite option is off.
  713.  
  714. :rew[ind]!        Start editing the first file in the file list. Discard 
  715.             any changes to the buffer.
  716.  
  717. The wildcards in the file list are expanded and the filenames are sorted. 
  718. Thus you can use the command "vim *.c" to edit all the C files. From within VIM 
  719. the command ":n *.c" does the same.
  720.  
  721. You are protected from leaving VIM if you are not editing the last file in the 
  722. file list. This prevents you from accidental forgetting that you were 
  723. editing several files. You can exit anyway, and save any changes, with the 
  724. ":wq!" command. To loose any changes use the ":q!" command.
  725.  
  726.  
  727. 5.5 Writing and quitting
  728.  
  729. :[range]w[rite][!]    Write the specified lines to the current file.
  730.  
  731. :[range]w[rite]    {file}    Write the specified lines to {file}, unless it
  732.             already exists and the writeany option is off.
  733.  
  734. :[range]w[rite]! {file}    Write the specified lines to {file}. Overwrite an 
  735.             existing file.
  736.  
  737. :[range]w[rite][!] >>    Append the specified lines to the current file.
  738.  
  739. :[range]w[rite][!] >> {file}
  740.             Append the specified lines to {file}.
  741.  
  742. :[range]w[rite] !{cmd}    Execute {cmd} with [range] lines as standard input 
  743.             (note the space in front of the <!>).
  744.  
  745. The default [range] for the ":w" command is the whole buffer (1,$).
  746.  
  747.  
  748. :q[uit]         Quit, unless changes have been made or not editing the 
  749.             last file in the file list.
  750.  
  751. :q[uit]!        Quit always, without writing.
  752.  
  753. :cq            Quit always, without writing, and return an error code. 
  754.             Used for Manx's QuickFix option (see 5.6).
  755.  
  756. :wq            Write the current file. Exit if not editing the 
  757.             last file in the file list.
  758.  
  759. :wq!            Write the current file and exit.
  760.  
  761. :wq {file}        Write to {file}. Exit if not editing the last 
  762.             file in the file list.
  763.  
  764. :wq! {file}        Write to {file} and exit.
  765.  
  766. :x[it][!] [file]    Like ":wq", but write only when changes have been made.
  767.  
  768. ZZ            Store current file, if modified, and exit (same as ":x").
  769.  
  770.  
  771. 5.6 using Manx's QuickFix option
  772.  
  773. Manx's Aztec C compiler on the Amiga has a speciality to speedup the 
  774. edit-compile-edit cycle. This is called the QuickFix option. VIM includes 
  775. support for this handy feature which is almost identical to Manx's editor "Z". 
  776. What you should do is:
  777.  
  778. - Set the CCEDIT environment variable with the command
  779.     mset "CCEDIT=vim -e"
  780.  
  781. - Compile with the -qf option. If the compiler finds any errors, Vim is started 
  782. and the cursor is positioned on the first error. The error message will be 
  783. displayed on the last line. You can go to other errors with the commands 
  784. mentioned below. You can fix the errors and write the file(s).
  785.  
  786. - If you exit Vim normally the compiler will re-compile the same file. If you 
  787. exit with the :cq command, the compiler will terminate. Do this if you cannot 
  788. fix the error, or if another file needs to be compiled first.
  789.  
  790. The following commands can be used if you are in QuickFix mode:
  791.  
  792. :cc [nr]        Display error [nr]. If [nr] is omitted, the same error 
  793.             is displayed again.
  794.  
  795. :cn            Display the next error in the list.
  796.  
  797. :cp            Display the previous error in the list.
  798.  
  799. :cq            Quit Vim with an error code, so that the compiler will 
  800.             not compile the same file again.
  801.  
  802. :cf            Read the error file. This is done automatically when 
  803.             Vim is started with the -e option.
  804.  
  805. :cl            List all errors.
  806.  
  807.  
  808. The name of the file can be set with the errorfile option. The default is
  809. "AztecC.Err". The format of the file is:
  810.  
  811.     filename>linenumber:columnnumber:errortype:errornumber:errormessage
  812.  
  813.     filename    name of the file in which the error was detected
  814.     linenumber    line number where the error was detected
  815.     columnnumber    column number where the error was detected
  816.     errortype    type of the error, normally a single 'E'
  817.     errornumber    number of the error
  818.     errormessage    description of the error
  819.  
  820. There are some restrictions to the Quickfix option. Only the first 25 errors 
  821. are recognized (Manx's documentation does not say how to get the others). If 
  822. Vim was started with the -e option the :sh and :! commands will not work, 
  823. because Vim is then running in the same process as the compiler and these two 
  824. commands may guru the machine then.
  825.  
  826. If you insert or delete lines, mostly the correct error location is still found 
  827. because hidden marks are used (Manx's Z editor does not do this). Sometimes, 
  828. when the mark has been deleted for some reason, the message "line changed" is 
  829. shown to warn you that the error location may not be correct. If you edit 
  830. another file the marks are lost and the error locations may not be correct 
  831. anymore.
  832.  
  833.  
  834.     6. Cursor motions
  835.  
  836. These commands move the cursor position. If the new position is off of the 
  837. screen, the screen is scrolled to show the cursor.
  838.  
  839. The motion commands can be used after other commands, called operators, to 
  840. have the command operate on the text that was moved over. That is the text 
  841. between the cursor position before and after the motion. If the motion 
  842. includes a count and the operator also had a count, the two counts are 
  843. multiplied. For example: "2d3w" deletes six words.
  844.     The operator either affects whole lines, or the characters between the 
  845. cursor positions. Generally, motions that move between lines affect lines, and 
  846. motions that move within a line affect characters. However, there are some 
  847. exceptions.
  848.     The motion is either inclusive or exclusive. When inclusive, the start 
  849. and end positions of the motion are included in the operation. When exclusive, 
  850. the last character towards the end of the buffer is not included. Line wise 
  851. motions are always inclusive.
  852.     Which motions are linewise, inclusive or exclusive is mentioned below.
  853.  
  854. NOTE: Experienced users prefer the hjkl keys because they are always right 
  855. under their fingers. Beginners often prefer the arrow keys, since they do not 
  856. require memorization of which hjkl key is which. The mnemonic value of hjkl is 
  857. clear from looking at the keyboard. Think of j as an arrow pointing downwards. 
  858.  
  859.  
  860. 6.1 Left-right motions
  861.  
  862. h or <C_LEFT> or CTRL-H or <BS>
  863.             [cnt] characters to the left (exclusive).
  864.  
  865. l or <C_RIGHT> or <SPACE>
  866.             [cnt] characters to the right (exclusive).
  867.  
  868. 0            To the first character of the line (inclusive).
  869.  
  870. ^            To the first non-blank character of the line 
  871.             (inclusive).
  872.  
  873. $            To the end of line [cnt] from the cursor (inclusive).
  874.  
  875. |            To column [cnt] (inclusive).
  876.  
  877. f<char>            To [cnt]'th occurrence of <char> to the right. The 
  878.             cursor is placed on <char> (inclusive).
  879.  
  880. F<char>            To the [cnt]'th occurrence of <char> to the left. The 
  881.             cursor is placed on <char> (inclusive).
  882.  
  883. t<char>            Till before [cnt]'th occurrence of <char> to the right. 
  884.             The cursor is placed on the character left of <char> 
  885.             (inclusive).
  886.  
  887. T<char>            Till after [cnt]'th occurrence of <char> to the left.
  888.             The cursor is placed on the character right of <char>
  889.             (inclusive).
  890.  
  891. ;            Repeat latest f, t, F or T [cnt] times.
  892.  
  893. ,            Repeat latest f, t, F or T in opposite direction [cnt] 
  894.             times.
  895.  
  896. These commands move the cursor to the specified column in the current line. 
  897. They stop at the first column and at the end of the line, except '$', which may 
  898. move to one of the next lines.
  899.  
  900.  
  901. 6.2 Up-down motions
  902.  
  903. k or <C_UP> or CTRL-P    [cnt] lines upward (linewise).
  904.  
  905. j or <C_DOWN> or CTRL-J or <LF> or CTRL-N
  906.             [cnt] lines downward (linewise).
  907.  
  908. -            [cnt] lines upward, on the first non-blank character 
  909.             (linewise).
  910.  
  911. + or CTRL-M or <CR>    [cnt] lines downward, on the first non-blank character 
  912.             (linewise).
  913.  
  914. _            [cnt] - 1 lines downward, on the first non-blank 
  915.             character (linewise).
  916.  
  917. G            Goto line [cnt], default last line, on the first 
  918.             non-blank character (linewise).
  919.  
  920. :[range]        Set the cursor on the (last) specified line number 
  921.             (cannot be used with an operator).
  922.  
  923. These commands move to the specified line. They stop when reaching the first or 
  924. the last line. The first two commands put the cursor in the same column (if 
  925. possible) as it was after the last command that changed the column, except 
  926. after the '$' command, then the cursor will be put on the last character of the 
  927. line.
  928.  
  929.  
  930. 6.3 Word motions
  931.  
  932. w            [cnt] words forward (exclusive).
  933.  
  934. W            [cnt] WORDS forward (exclusive).
  935.  
  936. e            Forward to the end of word [cnt] (inclusive).
  937.  
  938. E            Forward to the end of WORD [cnt] (inclusive).
  939.  
  940. b            [cnt] words backward (exclusive).
  941.  
  942. B            [cnt] WORDS backward (exclusive).
  943.  
  944. These commands move over words or WORDS. A word consists of a sequence of letters,
  945. digits and underscores, or a sequence of other non-blank characters, separated
  946. with blank space. A WORD consists of a sequence of non-blank characters, separated
  947. with blank space. The end of a line is also considered to be blank space. An empty
  948. line is also considered to be a word and a WORD.
  949.  
  950. Special case: "cw" and "cW" are treated like "ce" and "cE" if the cursor is on 
  951. a non-blank. This is because "cw" is interpreted as change-word, and a word 
  952. does not include the following blank space.
  953.  
  954.  
  955. 6.4 Text object motions
  956.  
  957. (            [cnt] sentences backward (exclusive).
  958.  
  959. )            [cnt] sentences forward (exclusive).
  960.  
  961. {            [cnt] paragraphs backward (exclusive).
  962.  
  963. }            [cnt] paragraphs forward (exclusive).
  964.  
  965. ]]            [cnt] sections forward, except when used after an 
  966.             operator, then [cnt] SECTIONS forward (linewise).
  967.  
  968. ][            [cnt] SECTIONS forward (linewise).
  969.  
  970. [[            [cnt] sections backward (linewise).
  971.  
  972. []            [cnt] SECTIONS backward (linewise).
  973.  
  974. These commands move over three kinds of text objects.
  975.  
  976. A sentence is defined as ending at a '.', '!' or '?' followed by either the end 
  977. of a line, or by a space. {Vi: two spaces} Any number of closing ')', ']', '"' 
  978. and ''' characters my appear after the '.', '!' or '?' before the spaces or end 
  979. of line. A paragraph and section boundary is also a sentence boundary.
  980.  
  981. A paragraph begins after each empty line, and also at each of a set of paragraph 
  982. macros, specified by the pairs of characters in the paragraphs option. The 
  983. default is "IPLPPPQPP LIpplpipbp", which corresponds to the macros ".IP", ".LP", 
  984. etc..  A section boundary is also a paragraph boundary.
  985.  
  986. A section begins after a form-feed in the first column, a '{' in the first 
  987. column, and also at each of a set of section macros, specified by the pairs of 
  988. characters in the sections option. The default is "SHNHH HUnhsh". A SECTION is 
  989. the same as a section, except that a '}' replaces the '{'. This is useful to 
  990. find the end of C-language functions.
  991.  
  992.  
  993. 6.5 Pattern searches
  994.  
  995. /{pattern}[/]        Search forward for the [cnt]'th occurrence of {pattern} 
  996.             (exclusive).
  997.  
  998. /{pattern}/{offset}    Search forward for the [cnt]'th occurrence of {pattern} 
  999.             and go {offset} lines up or down (see below). 
  1000.             (linewise).
  1001.  
  1002. /            Search forward for the [cnt]'th latest used pattern.
  1003.  
  1004. *            Search forward for the [cnt]'th occurrence of the ident 
  1005.             under the cursor (exclusive). {not in Vi}
  1006.  
  1007. #            Search backward for the [cnt]'th occurrence of the ident
  1008.             under the cursor (exclusive). {not in Vi}
  1009.  
  1010. ?{pattern}[?]        Search backward for the [cnt]'th previous occurrence of 
  1011.             {pattern} (exclusive).
  1012.  
  1013. ?{pattern}?{offset}    Search backward for the [cnt]'th previous occurrence of 
  1014.             {pattern} and go {offset} lines up or down (see below)
  1015.             (linewise).
  1016.  
  1017. ?            Search backward for the [cnt]'th latest used pattern.
  1018.  
  1019. n            Repeat the latest '/' or '?' [cnt] times. {Vi: no count}
  1020.  
  1021. N            Repeat the latest '/' or '?' [cnt] times in opposite
  1022.             direction. {Vi: no count}
  1023.  
  1024. CTRL-C            Interrupt current (search) command.
  1025.  
  1026. These commands search for the specified pattern. With "/" and "?" an additional 
  1027. offset may be given. There are two types of offsets: line offsets and 
  1028. character offsets. {the character offsets are not in Vi}
  1029.  
  1030. The offset gives the cursor positition relative to the found match:
  1031.     +[num]    [num] lines downwards, in column 1
  1032.     -[num]    [num] lines upwards, in column 1
  1033.     e[+num]    [num] characters to the right of the end of the match
  1034.     e[-num]    [num] characters to the left of the end of the match
  1035.     s[+num]    [num] characters to the right of the start of the match
  1036.     s[-num]    [num] characters to the left of the start of the match
  1037.  
  1038. If [num] is omitted it is assumed to be zero. Examples:
  1039.  
  1040. pattern            cursor position
  1041. /test/+1        one line below "test", in column 1
  1042. /test/e            on the last t of "test"
  1043. /test/s+2        on the "s" of "test"
  1044.  
  1045. If one of these commands is used after an operator, the characters between the 
  1046. cursor position before and after the search is affected. However, if a line 
  1047. offset is given, the whole lines between the two cursor positions are affected.
  1048.  
  1049. The last used <pattern> and <offset> are remembered. They can be used to 
  1050. repeat the search, possibly in another direction or with another count.
  1051.  
  1052. If the option wrapscan is set (which is the default), searches wrap around the 
  1053. end of the buffer. If wrapscan is not set, the backward search stops at the 
  1054. beginning and the forward search stops at the end of the buffer. If the pattern 
  1055. was not found the error message "pattern not found" is given, and the cursor 
  1056. will not be moved.
  1057.  
  1058. Patterns may contain special characters, depending on the setting of the 
  1059. 'magic' option. The '*' and '#' commands search for the pattern currently under 
  1060. the cursor. This pattern may only contain letters, digits and underscores. Note 
  1061. that if you type with ten fingers, the characters are easy to remember: the '#' 
  1062. is under your left hand middle finger and the '*' is under your right hand
  1063. middle finger.
  1064.  
  1065. The definition of a pattern:
  1066.  
  1067. 1.  A pattern is one or more branches, separated by '\|'. It matches anything 
  1068.     that matches one of the branches.
  1069.  
  1070. 2.  A branch is one or more pieces, concatenated. It matches a match for the 
  1071.     first, followed by a match for the second, etc.
  1072.  
  1073. 3.  A piece is an atom, possibly followed by:
  1074.       magic    nomagic
  1075.     *      \*        matches 0 or more of the preceding atom
  1076.     \+      \+        matches 1 or more of the preceding atom {not in Vi}
  1077.     \?      \?        matches 0 or 1 of the preceding atom {not in Vi}
  1078.  
  1079. 4.  An atom can be:
  1080.     - One of these five:
  1081.       magic    nomagic
  1082.     .      \.        matches any single character
  1083.     \<      \<        matches the beginning of a word
  1084.     \>      \>        matches the end of a word
  1085.     ^      ^        at beginning of pattern, matches beginning of line
  1086.     $      $        at end of pattern, matches end of line
  1087.     - A pattern enclosed by escaped parentheses (e.g. "\(^a\)").
  1088.     - A single character, with no special meaning, matches itself
  1089.     - A backslash followed by a single character, with no special meaning, 
  1090.       matches the single character.
  1091.     - A range. This is a sequence of characters enclosed in '[]' with the magic 
  1092.       option, or enclosed in '\[\]' with the nomagic option. It normally 
  1093.       matches any single character from the sequence. If the sequence begins 
  1094.       with '^', it matches any single character NOT in the sequence. If two 
  1095.       characters in the sequence are separated by '-', this is shorthand for 
  1096.       the full list of ASCII characters between them (e.g. '[0-9]' matches any 
  1097.       decimal digit). To include a literal ']' in the sequence, make it the 
  1098.       first character (following a possible '^'). To include a literal '\-', 
  1099.       make it the first or last character.
  1100.  
  1101. If the 'ignorecase' option is set, the case of letters is ignored.
  1102.  
  1103. Examples:
  1104. ^func(            Probably the start of a C function.
  1105.  
  1106. [a-zA-Z]$        Any alphabetic character at the end of a line.
  1107.  
  1108. \(^\|[^a-zA-Z0-9_]\)[a-zA-Z_]\+[a-zA-Z0-9_]*
  1109.             A C identifier (will stop in front of it).
  1110.  
  1111. [.!?][])"']*\($\|[ ]\)    A search pattern that finds the end of a sentence, with 
  1112.             almost the same definition as the <)> command.
  1113.  
  1114.  
  1115.  
  1116. 6.6 Various motions
  1117.  
  1118. m<a-z>            Set mark <a-z> at cursor position (does not move the 
  1119.             cursor, this is not a motion command).
  1120.  
  1121. '<a-z>            To the first non-blank character on the line with mark 
  1122.             <a-z> (linewise).
  1123.  
  1124. `<a-z>            To the mark <a-z> (inclusive).
  1125.  
  1126. A mark is not visible in any way. It is just a position in the file that is 
  1127. remembered. If you change a character in a line, or delete a line that contains 
  1128. a mark, that mark is erased. Do not confuse marks with named registers, they 
  1129. are totally unrelated.
  1130.  
  1131. ''            To the first non-blank character of the line where the 
  1132.             cursor was before the latest jump (linewise).
  1133.  
  1134. ``            To the position before latest jump (inclusive).
  1135.  
  1136. If you make the cursor "jump" with one of the following commands, the position 
  1137. of the cursor before the move is remembered. You can return to that position 
  1138. with the two commands above, unless the line containing that position was 
  1139. changed or deleted. The "jump" commands are: "'", "`", "G", "/", "?", "n", "N", 
  1140. "%", "(", ")", "[[", "]]", "{", "}", ":s" and the commands that start editing a 
  1141. new file.
  1142.  
  1143. %            Find the next parenthesis or (curly/square) bracket on 
  1144.             this line and go to its match (inclusive).
  1145.  
  1146. H            To line [cnt] from top (Home) of screen (default: first 
  1147.             line on the screen) on the first non-blank character 
  1148.             (linewise).
  1149.  
  1150. M            To Middle line of screen, on the first non-blank 
  1151.             character (linewise).
  1152.  
  1153. L            To line [cnt] from bottom of screen (default: Last line 
  1154.             on the screen) on the first non-blank character 
  1155.             (linewise).
  1156.  
  1157.  
  1158.     7. Scrolling
  1159.  
  1160. CTRL-E            Window [cnt] lines downwards in the buffer ([cnt] lines 
  1161.             Extra).
  1162.  
  1163. CTRL-D            Window [cnt] lines Downwards in the buffer (default: 
  1164.             previous [cnt] or half a screen).
  1165.  
  1166. CTRL-F            Window [cnt] pages Forwards (downwards) in the buffer.
  1167.  
  1168. CTRL-Y            Window [cnt] lines upwards in the buffer.
  1169.  
  1170. CTRL-U            Window [cnt] lines Upwards in the buffer (default: 
  1171.             previous [cnt] or half a screen).
  1172.  
  1173. CTRL-B            Window [cnt] pages Backwards (upwards) in the buffer.
  1174.  
  1175. z<CR>            Redraw, cursor line at top of window. {Vi: a number in 
  1176.             front of the <CR> causes the window to be that tall}
  1177.  
  1178. z.            Redraw, cursor line at center of window.
  1179.  
  1180. z-            Redraw, cursor line at bottom of window.
  1181.  
  1182. These commands move the contents of the window. If the cursor position is moved
  1183. off of the window, the cursor is moved onto the window. A page is the number of 
  1184. lines in the window minus two. The mnemonics for these commands may be a bit 
  1185. confusing. Remember that the commands refer to moving the window upwards or 
  1186. downwards in the buffer. But when the window moves upwards in the buffer, the 
  1187. text in the window moves downwards on your screen.
  1188.  
  1189.  
  1190.     8. Inserting text
  1191.  
  1192. a            Append text after the cursor [cnt] times.
  1193.  
  1194. A            Append text at the end of the line [cnt] times.
  1195.  
  1196. i            Insert text before the cursor [cnt] times.
  1197.  
  1198. I            Insert text before the first CHAR on the line [cnt] 
  1199.             times.
  1200.  
  1201. o            Begin a new line below the cursor and insert text, repeat
  1202.             [cnt] times. {Vi: blank [cnt] screen lines}
  1203.  
  1204. O            Begin a new line above the cursor and insert text, repeat
  1205.             [cnt] times. {Vi: blank [cnt] screen lines}
  1206.  
  1207. These commands are used to start inserting text. They can be undone and 
  1208. repeated. You can end insert mode with <ESC>. See the section "Insert and 
  1209. replace mode" for the other special characters in insert mode. The effect of 
  1210. [cnt] takes place after insert mode is exited.
  1211.  
  1212. :r[ead] {name}        Insert the file {name} below the cursor.
  1213.  
  1214. :r[ead]!{cmd}        Execute {cmd} and insert its standard output below the 
  1215.             cursor.
  1216.  
  1217. These commands insert the contents of a file, or the output of a command, into 
  1218. the buffer. They can be undone. They cannot be repeated with the "." command. 
  1219. They work on a line basis, insertion starts below the line in which the cursor 
  1220. is. To insert text above the first line, you will first have to create a line 
  1221. with the "O" command, insert the text with the ":r" command, and then delete 
  1222. the first line again.
  1223.  
  1224.  
  1225.     9. Deleting text
  1226.  
  1227. ["x]x            Delete [cnt] characters under and after the cursor [into
  1228.             register x] (not linewise).
  1229.  
  1230. ["x]X            Delete [cnt] characters before the cursor [into 
  1231.             register x] (not linewise).
  1232.  
  1233. ["x]d{motion}        Delete text that is moved over [into register x].
  1234.  
  1235. ["x]dd            Delete [cnt] lines [into register x] (linewise).
  1236.  
  1237. ["x]D            Delete the characters under the cursor until the end of
  1238.             the line and [cnt]-1 more lines [into register x]; 
  1239.             synonym for d$ (not linewise).
  1240.  
  1241. :[range]d[elete] ["x]    Delete [range] lines (default: current line) [into 
  1242.             register x].
  1243.  
  1244. :[range]d[elete] ["x] {count}
  1245.             Delete {count} lines, starting with [range] (default: 
  1246.             current line, see 4.4.3) [into register x].
  1247.  
  1248. J            Join [cnt] lines, with a minimum of two lines. One 
  1249.             space is inserted in place of the <NL>. If the 
  1250.             uppermost line had trailing blank space it is deleted 
  1251.             first. {Vi: insert two spaces after a period}
  1252.  
  1253. :[range]j[oin][!]    Join [range] lines. Same as 'J', except when [!] is 
  1254.             given, then no spaces will be inserted or deleted.
  1255.  
  1256. :[range]j[oin][!] {count}
  1257.             Join {count} lines, starting with [range] (default:
  1258.             current line, see 4.4.3). Same as 'J', except when [!] 
  1259.             is given, then no spaces will be inserted or deleted.
  1260.  
  1261. These commands delete text. They can be repeated (except ":d" and ":j") and 
  1262. undone. See "copying" for an explanation of registers.
  1263.  
  1264.  
  1265.     10. Changing text
  1266.  
  1267. The following commands can be used to change text, that is delete some text and 
  1268. insert something else, with one command. They can all be undone. The non-Ex 
  1269. commands can be repeated with the "." command.
  1270.  
  1271.  
  1272. 10.1 Delete and insert
  1273.  
  1274. R            Enter replace mode: each character you type replaces 
  1275.             an existing character, starting with the character 
  1276.             under the cursor. Repeat the entered text [cnt]-1 
  1277.             times.
  1278.  
  1279. ["x]c{motion}        Delete {motion} text [into register x] and start 
  1280.             insert.
  1281.  
  1282. ["x]cc            Delete [cnt] lines [into register x] and start insert 
  1283.             (linewise).
  1284.  
  1285. ["x]C            Delete from the cursor position to the end of the line
  1286.             and [cnt]-1 more lines [into register x], and start 
  1287.             insert. Synonym for c$ (not linewise).
  1288.  
  1289. ["x]s            Delete [cnt] characters [into register x] and start
  1290.             insert (s stands for Substitute). Synonym for "cl" (not 
  1291.             linewise).
  1292.  
  1293. ["x]S            Delete [cnt] lines [into register x] and start insert. 
  1294.             Synonym for "^cc" or "0cc", depending on autoindent 
  1295.             (not linewise).
  1296.  
  1297. You can end insert and replace mode with <ESC>. See the section "Insert and 
  1298. replace mode" for the other special characters in these modes. The effect of 
  1299. [cnt] takes place after insert or replace mode is exited. {Vi: does not 
  1300. directly delete the text, but puts a '$' at the last deleted character}
  1301. See "copying" for an explanation of registers.
  1302.  
  1303. Replace mode is just like insert mode, except that for every character you 
  1304. enter, one character is deleted. If the end of a line is reached is behaves the 
  1305. same as insert mode. In replace mode the backspace key only moves the cursor 
  1306. positition, no characters are deleted.
  1307.  
  1308. Special case: "cw" and "cW" are translated into "ce" and "cE" if the cursor is 
  1309. on a word (you are expected to want to change the word, not any following 
  1310. blanks).
  1311.  
  1312.  
  1313. 10.2 Simple changes
  1314.  
  1315. r<char>            Replace [cnt] characters by <char>.
  1316.  
  1317. ~            Option notildeop: switch case of [cnt] characters under 
  1318.             the cursor and move the cursor [cnt] characters to the 
  1319.             right. {Vi: no count}
  1320.  
  1321. ~{motion}        Option tildeop: switch case of {motion} text. {Vi: no 
  1322.             tildeop option}
  1323.  
  1324. <{motion}        Shift the {motion} lines one shiftwidth leftwards.
  1325.  
  1326. <<            Shift [cnt] lines one shiftwidth leftwards.
  1327.  
  1328. >{motion}        Shift {motion} lines one shiftwidth rightwards.
  1329.  
  1330. >>            Shift [cnt] lines one shiftwidth rightwards.
  1331.  
  1332. :[range]<        Shift [range] lines left.
  1333.  
  1334. :[range]< {count}    Shift {count} lines left, starting with [range] 
  1335.             (default current line, see 4.4.3).
  1336.  
  1337. :[range]>        Shift {count} [range] lines right.
  1338.  
  1339. :[range]> {count}    Shift {count} lines right, starting with [range] 
  1340.             (default current line, see 4.4.3).
  1341.  
  1342. The ">" and "<" commands are handy for changing the indent within programs. 
  1343. The size of the blank space which is inserted or deleted can be set with the 
  1344. option shiftwidth. Normally the shiftwidth option is set to 8, but you can set 
  1345. it to e.g. 3 to make smaller indents. The shift leftwards stops when there is 
  1346. no indent. The shift right does not do anything with empty lines.
  1347.  
  1348.  
  1349. 10.3 Complex changes
  1350.  
  1351. !{motion}{filter}    Filter {motion} text through the external program 
  1352.             {filter}.
  1353.  
  1354. !!{filter}        Filter [cnt] lines through the external program 
  1355.             {filter}.
  1356.  
  1357. :{range}![!]{filter} [!][arg]
  1358.             Filter {range} lines through the external program 
  1359.             {filter}. The optional bangs are replaced with the 
  1360.             latest given command. The optional [arg] is appended.
  1361.  
  1362. ={motion}        Filter {motion} lines through "indent". {Vi: when 
  1363.             option 'lisp' is set autoindent {motion} lines}
  1364.  
  1365. ==            Filter [cnt] lines through "indent".
  1366.  
  1367. A filter is a program that accepts text at standard input, changes it in some 
  1368. way, and sends it to standard output. The commands above can be used to send 
  1369. some text through a filter. An example of a filter is "sort", which sorts lines 
  1370. alphabetically. The "indent" program is used to pretty indent C programs (you 
  1371. need a version of indent that works like a filter, not all versions do that).
  1372.  
  1373. :[range]s[ubstitute]/{pattern}/{string}/[g][c] [count]
  1374.             For each line in [range] replace the first occurrence of
  1375.             {pattern} by {string}. With option [g] all occurrences 
  1376.             in the line are replaced. With option [c] each replace 
  1377.             has to be confirmed (<y> to replace, <q> to quit 
  1378.             replacing, anything else to skip). With [count] that 
  1379.             many lines are are searched, starting with the last 
  1380.             line number in [range] (default current line, see 
  1381.             4.4.3).
  1382.  
  1383. :[range]s[ubstitute] [g][c] [count]
  1384.             Repeat last :substitute with new options and possibly 
  1385.             on other lines.
  1386.  
  1387. :[range]&[/{pattern}/{string}/][g][c] [count]
  1388.             Same as for :substitute.
  1389.  
  1390. &            Synonym for ":s".
  1391.  
  1392.  
  1393.     11. Copying and moving text
  1394.  
  1395. "<a-zA-Z0-9>        Use register <a-zA-Z0-9> for next delete, yank or put
  1396.             (uppercase to append).
  1397.  
  1398. :di[splay]        Display the contents of numbered and named registers.
  1399.             {Vi: no such command}
  1400.  
  1401. ["x]y{motion}        Yank {motion} text [into register x].
  1402.  
  1403. ["x]yy            Yank [cnt] lines [into register x] (linewise).
  1404.  
  1405. ["x]Y            With option noyankendofline: yank [cnt] lines [into 
  1406.             register x] (synonym for yy, linewise); with option 
  1407.             yankendofline: yank until end of line (synonym for y$, 
  1408.             not linewise).
  1409.  
  1410. :[range]y[ank] ["x]    Yank [range] lines [into register x].
  1411.  
  1412. :[range]y[ank] ["x] {count}
  1413.             Yank {count} lines, starting with [range] (default: 
  1414.             current line, see 4.4.3), [into register x].
  1415.  
  1416. ["x]p            Put the text [from register x] after the cursor [cnt] 
  1417.             times.
  1418.  
  1419. ["x]P            Put the text [from register x] before the cursor [cnt] 
  1420.             times.
  1421.  
  1422. :[line]pu[t] ["x]    Put the text [from register x] after [line] (default 
  1423.             current line).
  1424.  
  1425. These commands can be used to copy text from one place to another. This is done 
  1426. by first getting the text into a register with a yank, delete or change command. 
  1427. The register can than be inserted with a put command. 
  1428.  
  1429. The put commands can be repeated (except for :put) and undone. If the 
  1430. command that was used to get the text into the register was linewise, the text 
  1431. will be inserted below or above the line where the cursor is. Otherwise the 
  1432. text will be inserted before or after the cursor. With the ":put" command the 
  1433. text will always be inserted in the next line. You can exchange single 
  1434. characters with the command sequence "xp". You can exchange single lines with 
  1435. the command sequence "ddp".
  1436.  
  1437. There are three types of registers: one unnamed, nine numbered and 26 named 
  1438. registers.
  1439.     The unnamed register is filled with the text of each yank, delete or 
  1440. change command. It can be put by using the "p" or "P" command without a ["x].
  1441.     Numbered register "1" is filled with the text of each delete or 
  1442. change (not yank) command, unless a ["x] is used. The contents of register "1" is 
  1443. put in "2", "2" in "3", and so forth. The contents of register "9" is lost.
  1444.     The named registers are only filled when you say so. They are named 'a' 
  1445. to 'z' normally. If you use the uppercase letter, the same registers as with 
  1446. the lower case letter is used, but the text is appended to the previous register 
  1447. contents. With a lower case letter the previous contents is lost.
  1448.     {Vi: unnamed register contents is lost when changing files}
  1449.  
  1450.  
  1451.     12. Various commands
  1452.  
  1453. CTRL-L            Clear and redraw the screen.
  1454.  
  1455. CTRL-Z            Error. {Vi: suspend program}
  1456.  
  1457. &            Repeat last :s.
  1458.  
  1459. :            Ex command (see below).
  1460.  
  1461. <HELP>            Show the file vim:vim.hlp page by page. {Vi: no help}
  1462.  
  1463. :h[elp]            Show the file vim:vim.hlp page by page. {Vi: no help}
  1464.  
  1465. <DEL>            When entering a number: remove the last digit.
  1466.  
  1467. :[range]p[rint]        Print [range] lines (default current line).
  1468.  
  1469. :[range]p[rint] {count}
  1470.             Print {count} lines, starting with [range] (default 
  1471.             current line, see 4.4.3).
  1472.  
  1473. :=            Print the line number.
  1474.  
  1475. :sh[ell]        Escape to a shell (name from option 'shell').
  1476.  
  1477. :![!]{cmd} [!][arg]    Execute {cmd} with the shell. The optional bangs are 
  1478.             replaced with the previously given command. The optional 
  1479.             [arg] is appended.
  1480.  
  1481. :ve[rsion]        Print the version number of the editor.
  1482.  
  1483.  
  1484.     13. Repeating commands
  1485.  
  1486. 13.1 Single repeats
  1487.  
  1488. .            Repeat last change with count replaced by [cnt].
  1489.  
  1490. Simple changes can be repeated with the '.' command. Without a count, the count 
  1491. of the last change is used. If you enter a count, it will replace the last one. 
  1492. If the last change included a specification of a numbered register, the 
  1493. register number will be incremented. See the section on undo and redo for an 
  1494. example how to use this.
  1495.  
  1496.  
  1497. 13.2 Multiple repeats
  1498.  
  1499. :[range]g[lobal]/{pattern}/[cmd]
  1500.             Execute the Ex command [cmd] (default ":p") on the 
  1501.             lines within [range] where {pattern} matches.
  1502.  
  1503. :[range]g[lobal]!/{pattern}/[cmd]
  1504.             Execute the Ex command [cmd] (default ":p") on the 
  1505.             lines within [range] where {pattern} does NOT match.
  1506.  
  1507. :[range]v[global]/{pattern}/[cmd]
  1508.             Same as :g!.
  1509.  
  1510. The global commands work by first scanning through the [range] lines and 
  1511. marking each line where a match occurs. In a second scan the [cmd] is executed 
  1512. for each marked line with its line number prepended. If a line is changed or 
  1513. deleted its mark disappears. The default for [range] is the whole buffer (1,$).
  1514. Use "CTRL-C" to interrupt the command. To repeat non-Ex commands, you will have 
  1515. to put the commands in a file and use the Ex command ":source!". The undo/redo 
  1516. command will undo/redo the whole global command at once.
  1517.  
  1518.  
  1519. 13.3 Complex repeats
  1520.  
  1521. v<a-zA-Z>        Record typed characters into named register <a-zA-Z> 
  1522.             (uppercase to append).
  1523.  
  1524. v            Stops recording. {Vi: no recording}
  1525.  
  1526. @<a-z>            Execute the contents of named register <a-z> [cnt] 
  1527.             times.
  1528.  
  1529. @@            Repeat the previous @<a-z> [cnt] times.
  1530.  
  1531. :so[urce] {file}    Read Ex commands from {file}.
  1532.  
  1533. :so[urce]! {file}    Read VIM commands from {file}. {Vi: not}
  1534.  
  1535. All commands and command sequences can be repeated by putting them in a named
  1536. register and then executing it. There are two ways to get the commands in the
  1537. register:
  1538. - Use the record command. You type the commands once, and while they are being
  1539.   executed they are stored in a register. Easy, because you can see what you are
  1540.   doing. If you make a mistake, 'put' the register into the file, edit the command
  1541.   sequence, and then delete it into the register again. You can continue recording
  1542.   by appending to the register (use an uppercase letter).
  1543. - Delete or yank the command sequence into the register.
  1544.  
  1545. Often used command sequences can be put under a function key with the ':map' 
  1546. command.
  1547.  
  1548. An alternative is to put the commands in a file, and execute them with the 
  1549. ':source!' command. Useful for long command sequences. Can be combined with the 
  1550. ':map' command to put complicated commands under a funcion key.
  1551.  
  1552. The ':source' command reads Ex commands from a file line by line. You will have 
  1553. to type any needed keyboard input. The ':source!' command reads from a script 
  1554. file character by character, interpreting each character as if you typed it.
  1555.  
  1556. Example: When you give the ":!ls" command you are asked to "hit return to 
  1557. continue". If you ':source' a file with the line "!ls" in it, you will have to 
  1558. type the return yourself. But if you ':source!' a file with the line ":!ls" in 
  1559. it, the next characters from that file are read until a <CR> is found. You will 
  1560. not have to type <CR> yourself, unless ":!ls" was the last line in the file.
  1561.  
  1562. It is possible to put ':source[!]' commands in the script file, so you can make 
  1563. a top-down hierachy of script files. The ':source' command can be nested as 
  1564. deep as the number of files that can be opened at one time (about 15). The 
  1565. ':source!' command can be nested up to 15 levels deep.
  1566.  
  1567.  
  1568.     14. Undo and redo
  1569.  
  1570. u or :u[ndo]        Undo changes. {Vi: only one level}
  1571.  
  1572. CTRL-R            Redo changes which were undone with 'u'. {Vi: redraw 
  1573.             screen}
  1574.  
  1575. U            Undo all latest changes on one line. {Vi: while not moved
  1576.             off of it}
  1577.  
  1578. The last changes are remembered. You can go back in time with the 'u' command. 
  1579. You can then go forward again with the 'CTRL-R' command. If you make a new 
  1580. change after the 'u' command, the 'CTRL-R' will not be possible anymore. The 
  1581. number of changes that are remembered is set with the "undolevels" option. If 
  1582. it is zero, the old fashioned Vi undo is present: one level of undo and undo 
  1583. undoes itself.
  1584.  
  1585. The 'U' command is treated by undo/redo just like any other command. Thus a 'u' 
  1586. command undos a 'U' command and a 'CTRL-R' command redoes it again. When mixing 
  1587. 'U', 'u' and 'CTRL-R' you will notice that the 'U' command will restore the 
  1588. situation of a line to before the previous 'U' command. This may be confusing. 
  1589. Try it out to get used to it.
  1590.  
  1591. The numbered registers can also be used for undoing deletes. Each time you 
  1592. delete text, it is put into register "1. The contents of register "1 is shifted 
  1593. to "2, etc. The contents of register "9 is lost. You can now get back the most 
  1594. recent deleted text with the put command: '"1P'. You can get back the text of 
  1595. three deletes ago with '"3P'.
  1596.  
  1597. If you want to get back more than one part of deleted text, you can use a
  1598. special feature of the repeat command '.'. It will increase the number of the
  1599. register used. So if you first do '"1P', the following '.' will result in a 
  1600. '"2P'. Repeating this will result in all numbered registers to be inserted.
  1601.  
  1602. Example:    If you deleted text with 'dd....' it can be restored with
  1603.         '"1P....'.
  1604.  
  1605. If you don't know in which register the deleted text is, you can use the 
  1606. :display command. An alternative is to try the first register with '"1P', and 
  1607. if it is not what you want do 'u.'. This will result in the contents of the 
  1608. first put to be removed, and a repeat of the put command for the second 
  1609. register. Repeat the 'u.' until you got what you want.
  1610.  
  1611.  
  1612.     15. Key mapping
  1613.  
  1614. :ma[p] {lhs} {rhs}    Map the key sequence {lhs} to {rhs} in normal mode.
  1615.  
  1616. :ma[p]! {lhs} {rhs}    Map the key sequence {lhs} to {rhs} in insert and 
  1617.             command line mode.
  1618.  
  1619. :unm[ap] {lhs}        Remove the mapping of {lhs} for normal mode.
  1620.  
  1621. :unm[ap]! {lhs}        Remove the mapping of {lhs} for insert and command line 
  1622.             mode.
  1623.  
  1624. :map            List all key mappings for normal mode.
  1625.  
  1626. :map!            List all key mappings for insert and command line mode.
  1627.  
  1628. :map {lhs}        List the key mappings for the key sequences starting 
  1629.             with {lhs} in normal mode.
  1630.  
  1631. :map! {lhs}        List the key mappings for the key sequences starting 
  1632.             with {lhs} in insert and command line mode.
  1633.  
  1634. These commands are used to map a key or key sequence to a string of characters. 
  1635. You can use this to put command sequences under function keys, translate one 
  1636. key into another, etc. See the "Options" chapter below for how to save and 
  1637. restore the current mapping.
  1638.  
  1639. Important: Everything from the first non-blank after {lhs} upto the end of the 
  1640. line (or <|>) is considered to be part of {rhs}. This allows the {rhs} to end 
  1641. with a space. It is currently not possible to have a {lhs} that contains a 
  1642. space or a {rhs} that starts with a space. It is not possible to put a comment 
  1643. after this command, because the <"> character is considered to be part of the 
  1644. {rhs}. To put a <|> in {rhs} escape it with a backslash or a ^V.
  1645.  
  1646. Note that the second character (argument) of the commands @zZtTfF[]rm'`"v is 
  1647. not mapped. This was probably done to be able to use all the named registers 
  1648. and marks, even when the command with the same name has been mapped.
  1649.  
  1650. Some examples (given as you type them; e.g. the "^V" is CTRL-V which you type, 
  1651. but will not show up on the screen):
  1652.  
  1653.     :map g /foo^V^Mcwbar^V^[
  1654.     :map! qq quadrillion questions
  1655.  
  1656. See the file "index" for keys that are not used and thus can be mapped without 
  1657. loosing any builtin function.
  1658.  
  1659.  
  1660.     16. Recovery after a crash.
  1661.  
  1662. You have spent several hours typing in that text that has to be finished
  1663. next morning, and then disaster strikes: Your computer crashes.
  1664.  
  1665.             DON'T PANIC!
  1666.  
  1667.  
  1668. 16.1 The autoscript file
  1669.  
  1670. Vim keeps track of everything you type. Using the original file you started 
  1671. from and the autoscript file you can recover (almost) all of your work.
  1672.  
  1673. The name of the autoscript file is the same as the file you are editing, but 
  1674. with the extension ".vim". If this file already exists (e.g. when you are 
  1675. recovering from a crash) a warning is given and another extension is used, 
  1676. ".vil" or something like that. An existing file will never be overwritten.
  1677. The file is deleted as soon as the edited text is successfully written to disk.
  1678.  
  1679. The autoscript file is updated after typing 100 characters or when you have not 
  1680. typed anything for two seconds. The reason why it is not kept up to date all 
  1681. the time is that this would slow down normal work too much. You can change the 
  1682. 100 character count with the "updatecount" parameter. You can set the time with 
  1683. the "updatetime" parameter. The time is given in milliseconds.
  1684.  
  1685. If the writing to the autoscript file is not wanted, it can be switched off by 
  1686. setting the "updatecount" parameter to 0. It can be switched back on later. If 
  1687. you have changed the buffer when switching on, the autoscript file will be 
  1688. incomplete and recovery will probably fail. To avoid this write out the buffer 
  1689. with ":w" before switching on the autoscript file.
  1690.  
  1691.  
  1692. 16.2 Recovery
  1693.  
  1694. In most cases recovery is quite easy: start Vim on the same file you were 
  1695. editing when the crash happened, with the "-r" option added. Vim will start 
  1696. editing the file using the key strokes in the autoscript file. Be sure that the 
  1697. recovery was successful before overwriting the original file or deleting the 
  1698. autoscript file.
  1699.  
  1700. Example:    vim -r reference.doc
  1701.  
  1702. Important: The .exrc file must be the same as with the original edit session, 
  1703. because some options have effect on the editing. Also the window size must be 
  1704. exactly the same, because the cursor movement resulting from some commands 
  1705. depends on the window size (e.g. CTRL-F). To help you with that the window 
  1706. resizing events are written into the script file with ":winsize" commands. The 
  1707. result of this command is that Vim will resize the used part of the window, but 
  1708. the window itself will remain the same size. The commands will be executed 
  1709. correctly, but the window contents may look disturbed. During normal editing 
  1710. you should not use the ":winsize" command. Use the window resizing gadget in 
  1711. the lower right corner of the window. Do not resize the window during recovery!
  1712.  
  1713. In some cases the "-r" option does not result in successful recovery. This 
  1714. happens when you executed a command that cannot be reproduced anymore. For 
  1715. example: reading a file which does not exist anymore. In such a case the 
  1716. succeeding commands probably only make things worse. To solve this you will have 
  1717. to edit the autoscript file and remove the commands that cause errors. If this 
  1718. becomes difficult try splitting up the autoscript file in small pieces.
  1719. {Vi: recovers in another way that has a larger change to succeed but causes 
  1720. more overhead}
  1721.  
  1722. If the autoscript file is not ending in ".vim" but in something else, you can 
  1723. use the script reading option "-s {filename}". This will have (almost) the same 
  1724. effect as the "-r" option.
  1725.  
  1726. You can give the "-r" option in combination with the "-s scriptin" option. The 
  1727. scriptin file will be read first, then the autoscript file for recovery.
  1728.  
  1729. The difference between using the "-r" option and the "-s" option is that with 
  1730. the "-r" option the name of the script file is made from the file name, and the 
  1731. last modification date is checked to see if the autoscript file is newer. This 
  1732. prevents the wrong autoscript file to be used for a recovery.
  1733.  
  1734.  
  1735.     17. Options
  1736.  
  1737. Vi has a number of internal variables and switches which can be set to achieve 
  1738. special effects. These options come in three forms, those that are switches, 
  1739. which toggle from off to on and back, those that require a numeric value, and 
  1740. those that require an alphanumeric string value.
  1741.  
  1742.  
  1743. 17.1 Setting options
  1744.  
  1745. :se[t]            Show all modified options. {Vi: non-default options}
  1746.  
  1747. :se[t] all        Show all options.
  1748.  
  1749. :se[t] {option}        Set toggle option on, show value of string or number 
  1750.             option.
  1751.  
  1752. :se[t] no{option}    Set toggle option off.
  1753.  
  1754. :se[t] {option}={value} Set string or number option to {value}.
  1755.  
  1756. :se[t] {option}?    Show value of {option}.
  1757.  
  1758. The arguments to set may be repeated. For example: ":set ai nosi sw=3 ts=3".
  1759.  
  1760. Besides changing options with the ":set" command, there are four alternatives to
  1761. set options automatically for one or more files. The first and second ones are 
  1762. used for all files. The third is used to set options for the files in one 
  1763. directory. The last is used to set options for a single file. The first three 
  1764. are done when you start VIM, in the given order. The last is done whenever you 
  1765. start editing a new file.
  1766.  
  1767. 1. The environment variable EXINIT is read for an Ex command. You can set EXINIT 
  1768.    to something like "set noai sw=3" to set options.
  1769. 2. Only if there is no EXINIT environment variable, the file "s:.exrc" is read 
  1770.    for Ex commands. You can include set commands in this file (see below for 
  1771.    how to automatically create a ".exrc" file).
  1772. 3. The file ".exrc" in the current directory is read for Ex commands. You can 
  1773.    include set commands in this file.
  1774. 4. If you start editing a new file, a number of lines at the beginning and end 
  1775.    of the file are checked for the string "vi:" or "ex:". The text after it is 
  1776.    considered to be the arguments for a ":set" command, separated with colons. 
  1777.    For example: "vi:noai:sw=3". How many lines are checked depends on the 
  1778.    modelines option.
  1779.  
  1780.  
  1781. 17.2 Saving settings
  1782.  
  1783. :mkexrc [file]        Write current key mappings and options to [file] 
  1784.             (default ".exrc"), unless it already exists. {not in Vi}
  1785.  
  1786. :mkexrc! [file]        Always write current key mappings and options to [file] 
  1787.             (default ".exrc"). {not in Vi}
  1788.  
  1789. The ":mkexrc" command will write ":map" and ":set" commands to a file, in such 
  1790. a way that when these commands are executed, the current key mappings and 
  1791. options will be set again. A common method is to use a default ".exrc" file
  1792. by first reading one in with ":source s:.exrc.Cprogs", change the settings and 
  1793. then save them in the current directory with ":mkexrc!".
  1794.  
  1795.  
  1796. 17.3 Options summary
  1797.  
  1798. In the list below all the options are mentioned with their full name and some 
  1799. with an abbreviation between brackets. Both forms may be used.
  1800.  
  1801. autoindent (ai)        toggle    (default off)
  1802.     Copy indent from previous line when inserting text.
  1803.  
  1804. autowrite (aw)        toggle    (default off)
  1805.     Write the contents of the file, if it has been modified, on each :next, 
  1806.     :rewind, :previous, :stop, :tag, :!, CTRL-] and CTRL-^ command.
  1807.  
  1808. backspace (bs)        toggle    (default off)
  1809.     Allow backspacing over newlines in insert mode. {not in Vi}
  1810.  
  1811. backup (bk)        toggle    (default on)
  1812.     Make a backup before overwriting a file.
  1813.  
  1814. errorbells (eb)        toggle    (default off)
  1815.     Ring the bell for error messages.
  1816.  
  1817. errorfile (ef)        string    (default "AztecC.Err")
  1818.     Name of the error file for the QuickFix option (see 5.6). {not in Vi}
  1819.  
  1820. history (hi)        number    (default 20)
  1821.     Number of command lines that are remembered. {not in Vi}
  1822.  
  1823. ignorecase (ic)        toggle    (default off)
  1824.     Ignore case in search patterns.
  1825.  
  1826. lines            number    (default 25)
  1827.     Number of lines in the display.
  1828.  
  1829. list            toggle    (default off)
  1830.     List mode: show tabs as CTRL-I, end lines with $, etc..
  1831.  
  1832. magic            toggle    (default on)
  1833.     Allow for pattern matching characters besides ^ and $.
  1834.  
  1835. modelines (ml)        number    (default 5)
  1836.     The number of lines that is checked for set commands. See 17.1. {not in 
  1837.     Vi}
  1838.  
  1839. number (nu)        toggle    (default off)
  1840.     Print the line number in front of the line.
  1841.  
  1842. paragraphs (para)    string    (default "IPLPPPQPP LIpplpipbp")
  1843.     Specifies the nroff macros that separate paragraphs. These are pairs of 
  1844.     two letters.
  1845.  
  1846. readonly (ro)        toggle    (default off)
  1847.     If set, writes fail unless you use an !. Affects anything that writes 
  1848.     to protect you from accidental overwriting a file. Default on when vim 
  1849.     is started in view mode ("vim -v").
  1850.  
  1851. remap            toggle    (default on)
  1852.     Allows for :map command to work recursively.
  1853.  
  1854. report            number    (default 5)
  1855.     Threshold for reporting number of lines changed.
  1856.  
  1857. scroll            number    (default 12)
  1858.     Number of lines to scroll with CTRL-U and CTRL-D commands.
  1859.  
  1860. sections        string    (default "SHNHH HUnhsh")
  1861.     Specifies the nroff macros that separate sections. These are pairs of 
  1862.     two letters.
  1863.  
  1864. shell (sh)        string    (default "sh")
  1865.     Name of the shell to use for ! and :! commands. The shell should be 
  1866.     able to accept a command with the "-c" option for the ":!" command to 
  1867.     work.
  1868.  
  1869. shiftwidth (sw)        number    (default 8)
  1870.     Number of spaces to use for (auto)indent.
  1871.  
  1872. showmatch (sm)        toggle    (default off)
  1873.     When a bracket is inserted, briefly jump to the matching one.
  1874.  
  1875. showmode (mo)        toggle    (default on)
  1876.     If in insert or replace mode, print a message on the last line.
  1877.  
  1878. smartindent (si)    toggle    (default off)
  1879.     Do smart autoindenting in insert mode for C programs. Insert or delete 
  1880.     indents at appropriate places. {not in Vi}
  1881.  
  1882. suffixes (su)        string    (default ".bak.o.h.info")
  1883.     Files with these suffixes are ignored when multiple files match a 
  1884.     wildcard.
  1885.  
  1886. tabstop (ts)        number    (default 8)
  1887.     Number of spaces that a TAB in the file counts for.
  1888.  
  1889. taglength (tl)        number    (default 0)
  1890.     If non-zero, tags are significant upto this number of characters.
  1891.  
  1892. tags            string    (default "tags")
  1893.     Filenames for the tag command, separated by spaces. {Vi: default is "tags
  1894.     /usr/lib/tags"}
  1895.  
  1896. terse            toggle    (default on)
  1897.     Ignored. {Vi: shorten the error messages}
  1898.  
  1899. tildeop (to)        toggle    (default off)
  1900.     The tilde behaves like an operator.
  1901.  
  1902. textwidth        number    (default 9999)
  1903.     Maximum width of text that is being inserted. A longer line will be
  1904.     broken after white space to get this width.
  1905.  
  1906. undolevels (ul)        number    (default 100)
  1907.     Maximum number of changes that can be undone (0 for Vi compatibility).
  1908.  
  1909. updatecount (uc)    number    (default 100)
  1910.     After this many characters typed the auto script file will be written
  1911.     to disk. When zero the auto script will not be written to at all (see 
  1912.     chapter on recovery).
  1913.  
  1914. updatetime (ut)        number    (default 2000)
  1915.     If this many milliseconds nothing is typed the auto script file will be 
  1916.     written to disk (see chapter on recovery).
  1917.  
  1918. wrapmargin (wm)        number    (default 0)
  1919.     Number of characters from the right window border where wrapping 
  1920.     starts. In Vim this is implemented by setting textwidth to the window 
  1921.     width minus the wrapmargin. {Vi: works differently and less useful}
  1922.  
  1923. wrapscan (ws)        toggle    (default on)
  1924.     Searches wrap around the end of the file.
  1925.  
  1926. writeany (wa)        toggle    (default off)
  1927.     Do not check for allowance when writing files.
  1928.  
  1929. yankendofline (ye)    toggle    (default off)
  1930.     The Y command yanks from the cursor until the end of the line instead 
  1931.     of whole lines.
  1932.  
  1933.  
  1934.     18. Differences from Vi and Ex
  1935.  
  1936. 18.1 Missing commands
  1937.  
  1938. These commands are in the unix Vi, but not in VIM.
  1939.  
  1940. Q            {Vi: go to Ex mode}
  1941. z{cnt}<NL>        {Vi: reset current window size to {cnt} lines and redraw}
  1942.  
  1943. :a[ppend]        {Vi: append text}
  1944. :c[hange]        {Vi: replace lines}
  1945. :co[py]            {Vi: copy lines}
  1946. :i[nsert]        {Vi: insert text}
  1947. :k            {Vi: synonym for mark without a space}
  1948. :l[ist]            {Vi: list lines}
  1949. :mar[k]            {Vi: mark line}
  1950. :m[ove]            {Vi: move lines}
  1951. :nu[mber]        {Vi: print specified lines with their line number}
  1952. :o[pen]            {Vi: start editing in open mode}
  1953. :pres[erve]        {Vi: emergency exit}
  1954. :rec[over]        {Vi: recover a file after a crash or :preserve}
  1955. :st[op]            {Vi: suspend the editor}
  1956. :t            {Vi: synonym for copy}
  1957. :una[bbreviate]        {Vi: remove from abbreviation list}
  1958. :vi[sual]        {Vi: switch from Ex or open to visual mode}
  1959. :z            {Vi: print some lines}
  1960. :~            {Vi: do a substitute on the previous regular expression}
  1961.  
  1962.  
  1963. 18.2 Missing options
  1964.  
  1965. These options are in the unix Vi, but not in VIM.
  1966.  
  1967. autoprint (ap)        toggle    (default on)
  1968. beautify (bf)        toggle    (default off)
  1969. directory (dir)        string    (default "t:")
  1970. edcompatible        toggle    (default off)
  1971. hardtabs (ht)        number    (default 8)
  1972.     number of spaces that a TAB moves on the display
  1973. lisp            toggle    (default off)
  1974. mesg            toggle    (default on)
  1975. open            toggle    (default on)
  1976. optimize (op)        toggle    (default on)
  1977. prompt            toggle    (default on)
  1978. redraw            toggle    (default off)
  1979. slowopen (slow)        toggle    (default off)
  1980. term            string    (default "")
  1981. timeout            toggle (default on)
  1982. warn            toggle    (default on)
  1983.     warn when the file has changed before a ! command
  1984. window            number    (default 24)
  1985. w300            number    (default 24)
  1986. w1200            number    (default 24)
  1987. w9600            number    (default 24)
  1988.  
  1989.  
  1990.     19. Credits
  1991.  
  1992. Parts of this manual comes from several Vi manuals, written by:
  1993.     W.N. Joy
  1994.     Alan P.W. Hewett
  1995.     Mark Horton
  1996.  
  1997. The editor VIM is based on Stevie and includes (ideas from) other software,
  1998. worked on by:
  1999.     Tim Thompson        (Stevie)
  2000.     Tony Andrews        (Stevie)
  2001.     G. R. (Fred) Walter    (Stevie)
  2002.     Henry Spencer        (regular expressions)
  2003.     Steve Kirkendall    (Elvis)
  2004.  
  2005. vi:tw=78
  2006.