blob: 3745b5969d0a55941583ccbf783287a06b3528d0 [file] [log] [blame]
Bram Moolenaarf97ca8f2005-02-07 21:49:25 +00001*vi_diff.txt* For Vim version 7.0aa. Last change: 2005 Feb 07
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Differences between Vim and Vi *vi-differences*
8
9Throughout the help files differences between Vim and Vi/Ex are given in
10curly braces, like "{not in Vi}". This file only lists what has not been
11mentioned in other files and gives an overview.
12
13Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing
14is ":open". There are probably a lot of small differences (either because Vim
15is missing something or because Posix is beside the mark).
16
171. Missing commands |missing-commands|
182. Missing options |missing-options|
193. Limits |limits|
204. The most interesting additions |vim-additions|
215. Other vim features |other-features|
226. Command-line arguments |cmdline-arguments|
Bram Moolenaarf97ca8f2005-02-07 21:49:25 +0000237. POSIX compliance |posix-compliance|
Bram Moolenaar071d4272004-06-13 20:20:40 +000024
25==============================================================================
261. Missing commands *missing-commands*
27
28This command is in Vi, but not in Vim:
29
30:o[pen] {Vi: start editing in open mode} *:o* *:op* *:open*
31
32==============================================================================
332. Missing options *missing-options*
34
35These options are in the Unix Vi, but not in Vim. If you try to set one of
36them you won't get an error message, but the value is not used and cannot be
37printed.
38
39autoprint (ap) boolean (default on) *'autoprint'* *'ap'*
40beautify (bf) boolean (default off) *'beautify'* *'bf'*
41flash (fl) boolean (default ??) *'flash'* *'fl'*
42graphic (gr) boolean (default off) *'graphic'* *'gr'*
43hardtabs (ht) number (default 8) *'hardtabs'* *'ht'*
44 number of spaces that a <Tab> moves on the display
45mesg boolean (default on) *'mesg'*
46novice boolean (default off) *'novice'*
47open boolean (default on) *'open'*
48optimize (op) boolean (default off) *'optimize'* *'op'*
49prompt boolean (default on) *'prompt'*
50redraw boolean (default off) *'redraw'*
51slowopen (slow) boolean (default off) *'slowopen'* *'slow'*
52sourceany boolean (default off) *'sourceany'*
53window (wi) number (default 23) *'window'* *'wi'*
54w300 number (default 23) *'w300'*
55w1200 number (default 23) *'w1200'*
56w9600 number (default 23) *'w9600'*
57
58==============================================================================
593. Limits *limits*
60
61Vim has only a few limits for the files that can be edited {Vi: can not handle
62<Nul> characters and characters above 128, has limited line length, many other
63limits}.
64 *E340*
65Maximum line length On machines with 16-bit ints (Amiga and MS-DOS real
66 mode): 32767, otherwise 2147483647 characters.
67 Longer lines are split.
68Maximum number of lines 2147483647 lines.
69Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is
70 32 bits. Much more for 64 bit longs. Also limited
71 by available disk space for the |swap-file|.
72 *E75*
73Length of a file path Unix and Win32: 1024 characters, otherwise 256
74 characters (or as much as the system supports).
75Length of an expanded string option
76 Unix and Win32: 1024 characters, otherwise 256
77 characters
78Maximum display width Unix and Win32: 1024 characters, otherwise 255
79 characters
80Maximum lhs of a mapping 50 characters.
81Number of highlighting different types: 223
82
83Information for undo and text in registers is kept in memory, thus when making
84(big) changes the amount of (virtual) memory available limits the number of
85undo levels and the text that can be kept in registers. Other things are also
86kept in memory: Command-line history, error messages for Quickfix mode, etc.
87
88Memory usage limits
89-------------------
90
91The option 'maxmem' ('mm') is used to set the maximum memory used for one
92buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for
93all buffers (in kilobytes). The defaults depend on the system used. For the
94Amiga and MS-DOS, 'maxmemtot' is set depending on the amount of memory
95available. If you don't like Vim to swap to a file, set 'maxmem' and
96'maxmemtot' to a very large value. The swap file will then only be used for
97recovery. If you don't want a swap file at all, set 'updatecount' to 0, or
98use the "-n" argument when starting Vim. Note that the 'maxmem' option is
99only used when a buffer is created. Changing this option does not affect
100buffers that have already been loaded. Thus you can set it to different
101values for different files. 'maxmemtot' works always.
102
103==============================================================================
1044. The most interesting additions *vim-additions*
105
106Vi compatibility. |'compatible'|
107 Although Vim is 99% Vi compatible, some things in Vi can be
108 considered to be a bug, or at least need improvement. But still, Vim
109 starts in a mode which behaves like the "real" Vi as much as possible.
110 To make Vim behave a little bit better, try resetting the 'compatible'
111 option:
112 :set nocompatible
113 Or start Vim with the "-N" argument:
114 vim -N
115 This is done automatically if you have a .vimrc file. See |startup|.
116 The 'cpoptions' option can be used to set Vi compatibility on/off for
117 a number of specific items.
118
119Support for different systems.
120 Vim can be used on:
121 - All Unix systems (it works on all systems it was tested on, although
122 the GUI and Perl interface may not work everywhere).
123 - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...).
124 - MS-DOS in real-mode (no additional drivers required).
125 - In protected mode on Windows 3.1 and MS-DOS (DPMI driver required).
126 - Windows 95 and Windows NT, with support for long file names.
127 - OS/2 (needs emx.dll)
128 - Atari MiNT
129 - VMS
130 - BeOS
131 - Macintosh
132 - Risc OS
133 - IBM OS/390
134
135Multi level undo. |undo|
136 'u' goes backward in time, 'CTRL-R' goes forward again. Set option
137 'undolevels' to the number of changes to be remembered (default 1000).
138 Set 'undolevels' to 0 for a vi-compatible one level undo. Set it to
139 -1 for no undo at all.
140
141 When all changes in a buffer have been undone, the buffer is not
142 considered changed anymore. You can exit it with :q, without <!>.
143
144Graphical User Interface (GUI) |gui|
145 Included support for GUI: menu's, mouse, scrollbars, etc. You can
146 define your own menus. Better support for CTRL/SHIFT/ALT keys in
147 combination with special keys and mouse. Supported for various
148 platforms, such as X11 (with Motif and Athena interfaces), GTK, Win32
149 (Windows 95 and later), BeOS, Amiga and Macintosh.
150
151Multiple windows and buffers. |windows.txt|
152 Vim can split the screen into several windows, each editing a
153 different buffer or the same buffer at a different location. Buffers
154 can still be loaded (and changed) but not displayed in a window. This
155 is called a hidden buffer. Many commands and options have been added
156 for this facility.
157
158Syntax highlighting. |:syntax|
159 Vim can highlight keywords, patterns and other things. This is
160 defined by a number of ":syntax" commands, and can be made to
161 highlight most languages and file types. A number of files are
162 included for highlighting the most common languages, like C, C++,
163 Java, Pascal, Makefiles, shell scripts, etc. The colors used for
164 highlighting can be defined for ordinary terminals, color terminals
165 and the GUI with the ":highlight" command.
166
167Folding |folding|
168 A range of lines can be shown as one "folded" line. This allows
169 overviewing a file and moving blocks of text around quickly.
170 Folds can be created manually, from the syntax of the file, by indent,
171 etc.
172
173Plugins |add-plugin|
174 The functionality can be extended by dropping a plugin file in the
175 right directory. That's an easy way to start using Vim scripts
176 written by others. Plugins can be for all kind of files, or
177 specifically for a filetype.
178
179Repeat a series of commands. |q|
180 "q{c}" starts recording typed characters into named register {c}
181 (append to the register if register name is uppercase). A subsequent
182 "q" stops recording. The register can then be executed with the
183 "@{c}" command. This is very useful to repeat a complex action.
184
185Flexible insert mode. |ins-special-special|
186 The arrow keys can be used in insert mode to move around in the file.
187 This breaks the insert in two parts as far as undo and redo is
188 concerned.
189
190 CTRL-O can be used to execute a single command-mode command. This is
191 almost the same as hitting <Esc>, typing the command and doing "a".
192
193Visual mode. |Visual-mode|
194 Visual can be used to first highlight a piece of text and then give a
195 command to do something with it. This is an (easy to use) alternative
196 to first giving the operator and then moving to the end of the text
197 to be operated upon. "v" and "V" are used to start Visual mode. "v"
198 works on characters and 'V' on lines. Move the cursor to extend the
199 Visual part. It is shown highlighted on the screen. By typing "o"
200 the other end of the Visual text can be moved. The Visual text can
201 be affected by an operator:
202 d delete
203 c change
204 y yank
205 > or < insert or delete indent
206 ! filter through external program
207 = filter through indent
208 : start ":" command for the Visual lines.
209 gq format text to 'textwidth' columns
210 J join lines
211 ~ swap case
212 u make lowercase
213 U make uppercase
214
215Block operators. |visual-block|
216 With Visual a rectangular block of text can be selected. Start Visual
217 with CTRL-V. The block can be deleted ("d"), yanked ("y") or its case
218 can be changed ("~", "u" and "U"). A deleted or yanked block can be
219 put into the text with the "p" and "P" commands.
220
221Online help system. |:help|
222 Help is displayed in a window. The usual commands can be used to
223 move around, search for a string, etc. Tags can be used to jump
224 around in the help files, just like hypertext links. The ":help"
225 command takes an argument to quickly jump to the info on a subject.
226 <F1> is the quick access to the help system. The name of the help
227 index file can be set with the 'helpfile' option.
228
229Command-line editing and history. |cmdline-editing|
230 You can insert or delete at any place in the command-line using the
231 cursor keys. The right/left cursor keys can be used to move
232 forward/backward one character. The shifted right/left cursor keys
233 can be used to move forward/backward one word. CTRL-B/CTRL-E can be
234 used to go to the begin/end of the command-line.
235
236 |cmdline-history|
237 The command-lines are remembered. The up/down cursor keys can be used
238 to recall previous command-lines. The 'history' option can be set to
239 the number of lines that will be remembered. There is a separate
240 history for commands and for search patterns.
241
242Command-line completion. |cmdline-completion|
243 While entering a command-line (on the bottom line of the screen)
244 <Tab> can be typed to complete
245 what example ~
246 - command :e<Tab>
247 - tag :ta scr<Tab>
248 - option :set sc<Tab>
249 - option value :set hf=<Tab>
250 - file name :e ve<Tab>
251 - etc.
252
253 If there are multiple matches, CTRL-N (next) and CTRL-P (previous)
254 will walk through the matches. <Tab> works like CTRL-N, but wraps
255 around to the first match.
256
257 The 'wildchar' option can be set to the character for command-line
258 completion, <Tab> is the default. CTRL-D can be typed after an
259 (incomplete) wildcard; all matches will be listed. CTRL-A will insert
260 all matches. CTRL-L will insert the longest common part of the
261 matches.
262
263Insert-mode completion |ins-completion|
264 In insert mode the CTRL-N and CTRL-P keys can be used to complete a
265 word that has previously been used. |i_CTRL-N|
266 With CTRL-X another mode is entered, through which completion can be
267 done for:
268 |i_CTRL-X_CTRL-F| file names
269 |i_CTRL-X_CTRL-K| words from 'dictionary' files
270 |i_CTRL-X_CTRL-T| words from 'thesaurus' files
271 |i_CTRL-X_CTRL-I| words from included files
272 |i_CTRL-X_CTRL-L| whole lines
273 |i_CTRL-X_CTRL-]| words from the tags file
274 |i_CTRL-X_CTRL-D| definitions or macros
275
276Long line support |'wrap'| |'linebreak'|
277 If the 'wrap' option is off, long lines will not wrap and only part
278 of them will be shown. When the cursor is moved to a part that is not
279 shown, the screen will scroll horizontally. The minimum number of
280 columns to scroll can be set with the 'sidescroll' option. The "zh"
281 and "zl" commands can be used to scroll sideways.
282 Alternatively, long lines are broken in between words when the
283 'linebreak' option is set. This allows editing a single-line
284 paragraph conveniently (e.g. when the text is later read into a DTP
285 program). Move the cursor up/down with the "gk" and "gj" commands.
286
287Text formatting. |formatting|
288 The 'textwidth' option can be used to automatically limit the line
289 length. This supplements the 'wrapmargin' option of Vi, which was not
290 very useful. The "gq" operator can be used to format a piece of text
291 (for example, "gqap" formats the current paragraph). Commands for
292 text alignment: ":center", ":left" and ":right".
293
294Extended search patterns |pattern|
295 There are many extra items to match various text items. Examples:
296 A "\n" can be used in a search pattern to match a line break.
297 "x\{2,4}" matches "x" 2 to 4 times.
298 "\s" matches a white space character.
299
300Edit-compile-edit speedup. |quickfix|
301 The ":make" command can be used to run the compilation and jump to
302 the first error. Alternatively Vim can be started with the "-q"
303 option from the compiler. A file with compiler error messages is
304 interpreted. Vim starts editing at the first error.
305
306 Each line in the error file is scanned for the name of a file, line
307 number and error message. The 'errorformat' option can be set to a
308 list of scanf-like strings to handle output from many compilers.
309
310 The ":cn" command can be used to jump to the next error.
311 ":cl" lists all the error messages. Other commands are available
312 (almost the same as with Manx's Z editor on the Amiga).
313 The 'makeef' option has the name of the file with error messages.
314 The 'makeprg' option contains the name of the program to be executed
315 with the ":make" command.
316 The 'shellpipe' option contains the string to be used to put the
317 output of the compiler into the errorfile.
318
319Improved indenting for C programs |'cindent'|
320 When the 'cindent' option is on the indent of each line is
321 automatically adjusted. C syntax is mostly recognized. The indent
322 for various styles can be set with 'cinoptions'. The keys to trigger
323 indenting can be set with 'cinkeys'.
324
325 Comments can be automatically formatted. The 'comments' option can be
326 set to the characters that start and end a comment. This works best
327 for C code, but also works for e-mail (">" at start of the line) and
328 other types of text. The "=" operator can be used to re-indent
329 lines.
330
331Searching for words in include files |include-search|
332 The "[i" command can be used to search for a match of the word under
333 the cursor in the current and included files. The 'include' option
334 can be set the a pattern that describes a command to include a file
335 (the default is for C programs).
336 The "[I" command lists all matches, the "[ CTRL-I" command jumps to
337 a match.
338 The "[d", "[D" and "[ CTRL-D" commands do the same, but only for
339 lines where the pattern given with the 'define' option matches.
340
341Automatic commands |autocommand|
342 Commands can be automatically executed when reading a file, writing a
343 file, jumping to another buffer, etc., depending on the file name.
344 This is useful to set options and mappings for C programs,
345 documentation, plain text, e-mail, etc. This also makes it possible
346 to edit compressed files.
347
348Scripts and Expressions |expression|
349 Commands have been added to form up a simple but powerful script
350 language.
351 |:if| Conditional execution, which can be used for example
352 to set options depending on the value of $TERM.
353 |:while| Repeat a number of commands.
354 |:echo| Print the result of an expression.
355 |:let| Assign a value to an internal variable, option, etc.
356 |:execute| Execute a command formed by an expression.
357 etc.
358
359Viminfo |viminfo-file|
360 The command-line history, marks and registers can be stored in a file
361 that is read on startup. This can be used to repeat a search command
362 or command-line command after exiting and restarting Vim. It is also
363 possible to jump right back to where the last edit stopped with "'0".
364 The 'viminfo' option can be set to select which items to store in the
365 .viminfo file. This is off by default.
366
367Mouse support |mouse-using|
368 The mouse is supported in the GUI version, in an xterm for Unix, for
369 Linux with gpm, for MS-DOS, and Win32. It can be used to position the
370 cursor, select the visual area, paste a register, etc.
371
372Usage of key names |<>| |key-notation|
373 Special keys now all have a name like <Up>, <End>, etc.
374 This name can be used in mappings, to make it easy to edit them.
375
376Editing binary files |edit-binary|
377 Vim can edit binary files. You can change a few characters in an
378 executable file, without corrupting it. Vim doesn't remove NUL
379 characters (they are represented as <NL> internally).
380 |-b| command-line argument to start editing a binary file
381 |'binary'| Option set by "-b". Prevents adding an <EOL> for the
382 last line in the file.
383
384Multi-language support |multi-lang|
385 Files in double-byte or multi-byte encodings can be edited. There is
386 UTF-8 support to be able to edit various languages at the same time,
387 without switching fonts. |UTF-8|
388 Messages and menus are available in different languages.
389
390==============================================================================
3915. Other vim features *other-features*
392
393A random collection of nice extra features.
394
395
396When Vim is started with "-s scriptfile", the characters read from
397"scriptfile" are treated as if you typed them. If end of file is reached
398before the editor exits, further characters are read from the console.
399
400The "-w" option can be used to record all typed characters in a script file.
401This file can then be used to redo the editing, possibly on another file or
402after changing some commands in the script file.
403
404The "-o" option opens a window for each argument. "-o4" opens four windows.
405
406Vi requires several termcap entries to be able to work full-screen. Vim only
407requires the "cm" entry (cursor motion).
408
409
410In command mode:
411
412When the 'showcmd' option is set, the command characters are shown in the last
413line of the screen. They are removed when the command is finished.
414
415If the 'ruler' option is set, the current cursor position is shown in the
416last line of the screen.
417
418"U" still works after having moved off the last changed line and after "u".
419
420Characters with the 8th bit set are displayed. The characters between '~' and
4210xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the
422'isprint' option.
423
424"][" goes to the next ending of a C function ('}' in column 1).
425"[]" goes to the previous ending of a C function ('}' in column 1).
426
427"]f", "[f" and "gf" start editing the file whose name is under the cursor.
428CTRL-W f splits the window and starts editing the file whose name is under
429the cursor.
430
431"*" searches forward for the identifier under the cursor, "#" backward.
432"K" runs the program defined by the 'keywordprg' option, with the identifier
433under the cursor as argument.
434
435"%" can be preceded with a count. The cursor jumps to the line that
436percentage down in the file. The normal "%" function to jump to the matching
437brace skips braces inside quotes.
438
439With the CTRL-] command, the cursor may be in the middle of the identifier.
440
441The used tags are remembered. Commands that can be used with the tag stack
442are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack.
443
444The 'tags' option can be set to a list of tag file names. Thus multiple
445tag files can be used. For file names that start with "./", the "./" is
446replaced with the path of the current file. This makes it possible to use a
447tags file in the same directory as the file being edited.
448
449Previously used file names are remembered in the alternate file name list.
450CTRL-^ accepts a count, which is an index in this list.
451":files" command shows the list of alternate file names.
452"#<N>" is replaced with the <N>th alternate file name in the list.
453"#<" is replaced with the current file name without extension.
454
455Search patterns have more features. The <NL> character is seen as part of the
456search pattern and the substitute string of ":s". Vi sees it as the end of
457the command.
458
459Searches can put the cursor on the end of a match and may include a character
460offset.
461
462Count added to "~", ":next", ":Next", "n" and "N".
463
464The command ":next!" with 'autowrite' set does not write the file. In vi the
465file was written, but this is considered to be a bug, because one does not
466expect it and the file is not written with ":rewind!".
467
468In Vi when entering a <CR> in replace mode deletes a character only when 'ai'
469is set (but does not show it until you hit <Esc>). Vim always deletes a
470character (and shows it immediately).
471
472Added :wnext command. Same as ":write" followed by ":next".
473
474The ":w!" command always writes, also when the file is write protected. In Vi
475you would have to do ":!chmod +w %" and ":set noro".
476
477When 'tildeop' has been set, "~" is an operator (must be followed by a
478movement command).
479
480With the "J" (join) command you can reset the 'joinspaces' option to have only
481one space after a period (Vi inserts two spaces).
482
483"cw" can be used to change white space formed by several characters (Vi is
484confusing: "cw" only changes one space, while "dw" deletes all white space).
485
486"o" and "O" accept a count for repeating the insert (Vi clears a part of
487display).
488
489Flags after Ex commands not supported (no plans to include it).
490
491On non-UNIX systems ":cd" command shows current directory instead of going to
492the home directory (there isn't one). ":pwd" prints the current directory on
493all systems.
494
495After a ":cd" command the file names (in the argument list, opened files)
496still point to the same files. In Vi ":cd" is not allowed in a changed file;
497otherwise the meaning of file names change.
498
499":source!" command reads Vi commands from a file.
500
501":mkexrc" command writes current modified options and mappings to a ".exrc"
502file. ":mkvimrc" writes to a ".vimrc" file.
503
504No check for "tail recursion" with mappings. This allows things like
505":map! foo ^]foo".
506
507When a mapping starts with number, vi loses the count typed before it (e.g.
508when using the mapping ":map g 4G" the command "7g" goes to line 4). This is
509considered a vi bug. Vim concatenates the counts (in the example it becomes
510"74G"), as most people would expect.
511
512The :put! command inserts the contents of a register above the current line.
513
514The "p" and "P" commands of vi cannot be repeated with "." when the putted
515text is less than a line. In Vim they can always be repeated.
516
517":noremap" command can be used to enter a mapping that will not be remapped.
518This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and
519":cnoremap" can be used for mapping in command-line editing only. ":imap",
520":iunmap" and ":inoremap" can be used for mapping in insert mode only.
521Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev"
522":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev".
523
524In Vi the command ":map foo bar" would remove a previous mapping
525":map bug foo". This is considered a bug, so it is not included in Vim.
526":unmap! foo" does remove ":map! bug foo", because unmapping would be very
527difficult otherwise (this is vi compatible).
528
529The ':' register contains the last command-line.
530The '%' register contains the current file name.
531The '.' register contains the last inserted text.
532
533":dis" command shows the contents of the yank registers.
534
535CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the
536same positions as used with the '' command, but may be in another file. The
537":jumps" command lists the older positions.
538
539If the 'shiftround' option is set, an indent is rounded to a multiple of
540'shiftwidth' with ">" and "<" commands.
541
542The 'scrolljump' option can be set to the minimum number of lines to scroll
543when the cursor gets off the screen. Use this when scrolling is slow.
544
545The 'scrolloff' option can be set to the minimum number of lines to keep
546above and below the cursor. This gives some context to where you are
547editing. When set to a large number the cursor line is always in the middle
548of the window.
549
550Uppercase marks can be used to jump between files. The ":marks" command lists
551all currently set marks. The commands "']" and "`]" jump to the end of the
552previous operator or end of the text inserted with the put command. "'[" and
553"`[" do jump to the start.
554
555The 'shelltype' option can be set to reflect the type of shell used on the
556Amiga.
557
558The 'highlight' option can be set for the highlight mode to be used for
559several commands.
560
561The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the
562command (default 1) is added to/subtracted from the number at or after the
563cursor. That number may be decimal, octal (starts with a '0') or hexadecimal
564(starts with '0x'). Very useful in macros.
565
566With the :set command the prefix "inv" can be used to invert boolean options.
567
568In both Vi and Vim you can create a line break with the ":substitute" command
569by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the
570text. With Vim you can put a real CTRL-M in the text by preceding it with a
571CTRL-V.
572
573
574In Insert mode:
575
576If the 'revins' option is set, insert happens backwards. This is for typing
577Hebrew. When inserting normal characters the cursor will not be shifted and
578the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in
579the opposite direction. CTRL-B toggles the 'revins' option. In replace mode
580'revins' has no effect. Only when enabled at compile time.
581
582The backspace key can be used just like CTRL-D to remove auto-indents.
583
584You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs)
585option includes "eol". You can backspace over the start of insert if the
586'backspace' option includes "start".
587
588When the 'paste' option is set, a few option are reset and mapping in insert
589mode and abbreviation are disabled. This allows for pasting text in windowing
590systems without unexpected results. When the 'paste' option is reset, the old
591option values are restored.
592
593CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter
594what column the cursor is in.
595
596CTRL-@ (insert previously inserted text) works always (Vi: only when typed as
597first character).
598
599CTRL-A works like CTRL-@ but does not leave insert mode.
600
601CTRL-R {0-9a-z..} can be used to insert the contents of a register.
602
603When the 'smartindent' option is set, C programs will be better auto-indented.
604With 'cindent' even more.
605
606CTRL-Y and CTRL-E can be used to copy a character from above/below the
607current cursor position.
608
609After CTRL-V you can enter a three digit decimal number. This byte value is
610inserted in the text as a single character. Useful for international
611characters that are not on your keyboard.
612
613When the 'expandtab' (et) option is set, a <Tab> is expanded to the
614appropriate number of spaces.
615
616The window always reflects the contents of the buffer (Vi does not do this
617when changing text and in some other cases).
618
619If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of
620normal digraphs is included. They are shown with the ":digraph" command.
621More can be added with ":digraph {char1}{char2} {number}". A digraph is
622entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when
623'digraph' option is set).
624
625When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin
626for the first insert. Vim does it for all.
627
628A count to the "i" or "a" command is used for all the text. Vi uses the count
629only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi
630but "abc<NL>defabc<NL>defabc<NL>def" in Vim.
631
632
633In Command-line mode:
634
635<Esc> terminates the command-line without executing it. In vi the command
636line would be executed, which is not what most people expect (hitting <Esc>
637should always get you back to command mode). To avoid problems with some
638obscure macros, an <Esc> in a macro will execute the command. If you want a
639typed <Esc> to execute the command like vi does you can fix this with
640 ":cmap ^V<Esc> ^V<CR>"
641
642General:
643
644The 'ttimeout' option is like 'timeout', but only works for cursor and
645function keys, not for ordinary mapped characters. The 'timeoutlen' option
646gives the number of milliseconds that is waited for. If the 'esckeys' option
647is not set, cursor and function keys that start with <Esc> are not recognized
648in insert mode.
649
650There is an option for each terminal string. Can be used when termcap is not
651supported or to change individual strings.
652
653The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix"
654<NL> or "mac" <CR>.
655When the 'fileformats' option is not empty, Vim tries to detect the type of
656<EOL> automatically. The 'fileformat' option is set accordingly.
657
658On systems that have no job control (older Unix systems and non-Unix systems)
659the CTRL-Z, ":stop" or ":suspend" command starts a new shell.
660
661If Vim is started on the Amiga without an interactive window for output, a
662window is opened (and :sh still works). You can give a device to use for
663editing with the |-d| argument, e.g. "-d con:20/20/600/150".
664
665The 'columns' and 'lines' options are used to set or get the width and height
666of the display.
667
668Option settings are read from the first and last few lines of the file.
669Option 'modelines' determines how many lines are tried (default is 5). Note
670that this is different from the Vi versions that can execute any Ex command
671in a modeline (a major security problem). |trojan-horse|
672
673If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode.
674And it comes back there, when pressing <Esc>.
675
676Undo information is kept in memory. Available memory limits the number and
677size of change that can be undone. This may be a problem with MS-DOS, is
678hardly a problem on the Amiga and almost never with Unix and Win32.
679
680If the 'backup' or 'writebackup' option is set: Before a file is overwritten,
681a backup file (.bak) is made. If the "backup" option is set it is left
682behind.
683
684Vim creates a file ending in ".swp" to store parts of the file that have been
685changed or that do not fit in memory. This file can be used to recover from
686an aborted editing session with "vim -r file". Using the swap file can be
687switched off by setting the 'updatecount' option to 0 or starting Vim with
688the "-n" option. Use the 'directory' option for placing the .swp file
689somewhere else.
690
691Vim is able to work correctly on filesystems with 8.3 file names, also when
692using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted
693filesystem under Unix. See |'shortname'|.
694
695Error messages are shown at least one second (Vi overwrites error messages).
696
697If Vim gives the |hit-enter| prompt, you can hit any key. Characters other
698than <CR>, <NL> and <Space> are interpreted as the (start of) a command. (Vi
699only accepts a command starting with ':').
700
701The contents of the numbered and unnamed registers is remembered when
702changing files.
703
704The "No lines in buffer" message is a normal message instead of an error
705message, since that may cause a mapping to be aborted.
706
707The AUX: device of the Amiga is supported.
708
709==============================================================================
7106. Command-line arguments *cmdline-arguments*
711
712Different versions of Vi have different command-line arguments. This can be
713confusing. To help you, this section gives an overview of the differences.
714
715Five variants of Vi will be considered here:
716 Elvis Elvis version 2.1b
717 Nvi Nvi version 1.79
718 Posix Posix 1003.2
719 Vi Vi version 3.7 (for Sun 4.1.x)
720 Vile Vile version 7.4 (incomplete)
721 Vim Vim version 5.2
722
723Only Vim is able to accept options in between and after the file names.
724
725+{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}".
726
727- Nvi, Posix, Vi: Run Ex in batch mode.
728 Vim: Read file from stdin (use -s for batch mode).
729
730-- Vim: End of options, only file names are following.
731
732--cmd {command} Vim: execute {command} before sourcing vimrc files.
733
734--echo-wid Vim: GTK+ echoes the Window ID on stdout
735
736--help Vim: show help message and exit.
737
738--literal Vim: take file names literally, don't expand wildcards.
739
740--nofork Vim: same as |-f|
741
742--noplugin[s] Vim: Skip loading plugins.
743
744--remote Vim: edit the files in another Vim server
745
746--remote-expr {expr} Vim: evaluate {expr} in another Vim server
747
748--remote-send {keys} Vim: send {keys} to a Vim server and exit
749
750--remote-silent {file} Vim: edit the files in another Vim server if possible
751
752--remote-wait Vim: edit the files in another Vim server and wait for it
753
754--remote-wait-silent Vim: like --remote-wait, no complaints if not possible
755
756--role {role} Vim: GTK+ 2: set role of main window
757
758--serverlist Vim: Output a list of Vim servers and exit
759
760--servername {name} Vim: Specify Vim server name
761
762--socketid {id} Vim: GTK window socket to run Vim in
763
764--version Vim: show version message and exit.
765
766-? Vile: print usage summary and exit.
767
768-a Elvis: Load all specified file names into a window (use -o for
769 Vim).
770
771-A Vim: Start in Arabic mode (when compiled with Arabic).
772
773-b {blksize} Elvis: Use {blksize} blocksize for the session file.
774-b Vim: set 'binary' mode.
775
776-C Vim: Compatible mode.
777
778-c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after
779 loading the edit buffer.
780 Vim: allow up to 10 "-c" arguments
781
782-d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled
783 without the |+diff| feature}
784-d Vim: start with 'diff' set. |vimdiff|
785
786-dev {device} Vim: Use {device} for I/O (Amiga only).
787
788-D Vim: debug mode.
789
790-e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is
791 called "ex".
792
793-E Vim: Start in improved Ex mode |gQ|, like "exim".
794
795-f Vim: Run GUI in foreground (Amiga: don't open new window).
796-f {session} Elvis: Use {session} as the session file.
797
798-F Vim: Start in Farsi mode (when compiled with Farsi).
799 Nvi: Fast start, don't read the entire file when editing
800 starts.
801
802-G {gui} Elvis: Use the {gui} as user interface.
803
804-g Vim: Start GUI.
805-g N Vile: start editing at line N
806
807-h Vim: Give help message.
808 Vile: edit the help file
809
810-H Vim: start Hebrew mode (when compiled with it).
811
812-i Elvis: Start each window in Insert mode.
813-i {viminfo} Vim: Use {viminfo} for viminfo file.
814
815-L Vim: Same as "-r" (also in some versions of Vi).
816
817-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options.
818
819-m Vim: Modifications not allowed to be written, resets 'write'
820 option.
821
822-M Vim: Modifications not allowed, resets 'modifiable' and the
823 'write' option.
824
825-N Vim: No-compatible mode.
826
827-n Vim: No swap file used.
828
829-nb[args] Vim: open a NetBeans interface connection
830
831-O[N] Vim: Like -o, but use vertically split windows.
832
833-o[N] Vim: Open [N] windows, or one for each file.
834
835-P {parent-title} Win32 Vim: open Vim inside a parent application window
836
837-q {name} Vim: Use {name} for quickfix error file.
838-q{name} Vim: Idem.
839
840-R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option.
841
842-r Elvis, Nvi, Posix, Vi, Vim: Recovery mode.
843
844-S Nvi: Set 'secure' option.
845-S {script} Vim: source script after starting up.
846
847-s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode.
848 Elvis: Sets the 'safer' option.
849-s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex
850 mode.
851-s {pattern} Vile: search for {pattern}
852
853-t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}.
854-t{tag} Vim: Idem.
855
856-T {term} Vim: Set terminal name to {term}.
857
858-u {vimrc} Vim: Read initializations from {vimrc} file.
859
860-U {gvimrc} Vim: Read GUI initializations from {gvimrc} file.
861
862-v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi
863 terms).
864 Vile: View mode, no changes possible.
865
866-V Elvis, Vim: Verbose mode.
867-V{nr} Vim: Verbose mode with specified level.
868
869-w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}.
870-w{size} Nvi, Vi: Same as "-w {size}".
871-w {name} Vim: Write to script file {name} (must start with non-digit).
872
873-W {name} Vim: Append to script file {name}.
874
875-x Vi, Vim: Ask for encryption key. See |encryption|.
876
877-X Vim: Don't connect to the X server.
878
879-y Vim: Start in easy mode, like |evim|.
880
881-Z Vim: restricted mode
882
883@{cmdfile} Vile: use {cmdfile} as startup file.
884
Bram Moolenaarf97ca8f2005-02-07 21:49:25 +0000885==============================================================================
8867. POSIX compliance *posix-compliance*
887
888In 2005 the POSIX test suite was run to check the compatiblity of Vim. Most
889of the test was executed properly. Here are the few things where Vim differs:
890
891The -w{number} and -w {number} command line arguments are not supported by
892Vim.
893 *posix-screen-size*
894The $COLUMNS and $LINES environment variables are ignored by Vim if the size
895can be obtained from the terminal in a more reliable way. Set the $VIM_POSIX
896environment variable to have $COLUMNS and $LINES overrule sizes obtained in
897another way.
898
899
900
Bram Moolenaar071d4272004-06-13 20:20:40 +0000901 vim:tw=78:ts=8:ft=help:norl: