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