Mercurial > vim
annotate runtime/doc/vi_diff.txt @ 34257:8a91d18f1789 v9.1.0069
patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang
Commit: https://github.com/vim/vim/commit/fd472655a93fd539c731c8daf3adc4e65ddce341
Author: Olaf Seibert <rhialto@falu.nl>
Date: Thu Feb 1 21:11:16 2024 +0100
patch 9.1.0069: ScreenLines may not be correctly initialized, causing hang
Problem: ScreenLines may not be correctly initialized, causing hang
(Olaf Seibert, after 9.0.0220)
Solution: always initialize ScreneLines when allocating a screen
(Olaf Seibert)
ScreenLines and related structures could be left uninitialized
causing a screen update to run into an infinite loop when using latin1
encoding.
Partly caused because by patch 9.0.0220, which makes mb_ptr2len return
zero for NUL
related: #12671
closes: #13946
Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 01 Feb 2024 21:30:02 +0100 |
parents | 4635e43f2c6f |
children | f3ff511d1211 |
rev | line source |
---|---|
34057
4635e43f2c6f
patch 9.1.0000: Vim 9.1 release
Christian Brabandt <cb@256bit.org>
parents:
29314
diff
changeset
|
1 *vi_diff.txt* For Vim version 9.1. Last change: 2022 Apr 03 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Differences between Vim and Vi *vi-differences* | |
8 | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
9 This file lists the differences between Vim and Vi/Ex and gives an overview of |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
10 what is in Vim that is not in Vi. |
7 | 11 |
12 Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing | |
13 is ":open". There are probably a lot of small differences (either because Vim | |
14 is missing something or because Posix is beside the mark). | |
15 | |
166 | 16 1. Simulated command |simulated-command| |
7 | 17 2. Missing options |missing-options| |
18 3. Limits |limits| | |
19 4. The most interesting additions |vim-additions| | |
20 5. Other vim features |other-features| | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
21 6. Supported Vi features |vi-features| |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
22 7. Command-line arguments |cmdline-arguments| |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
23 8. 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 | |
18343 | 67 Vi did not allow for changing the termcap entries, you would have to exit Vi, |
68 edit the termcap entry and try again. Vim has the |terminal-options|. | |
69 | |
7 | 70 ============================================================================== |
71 3. Limits *limits* | |
72 | |
73 Vim has only a few limits for the files that can be edited {Vi: can not handle | |
74 <Nul> characters and characters above 128, has limited line length, many other | |
75 limits}. | |
23666 | 76 |
18972 | 77 Maximum line length 2147483647 characters. Longer lines are split. |
7 | 78 Maximum number of lines 2147483647 lines. |
79 Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is | |
80 32 bits. Much more for 64 bit longs. Also limited | |
81 by available disk space for the |swap-file|. | |
82 *E75* | |
83 Length of a file path Unix and Win32: 1024 characters, otherwise 256 | |
84 characters (or as much as the system supports). | |
85 Length of an expanded string option | |
86 Unix and Win32: 1024 characters, otherwise 256 | |
87 characters | |
88 Maximum display width Unix and Win32: 1024 characters, otherwise 255 | |
89 characters | |
90 Maximum lhs of a mapping 50 characters. | |
625 | 91 Number of different highlighting types: over 30000 |
3082 | 92 Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 |
93 bit systems) | |
2596 | 94 Maximum length of a line in a tags file: 512 bytes. |
7 | 95 |
96 Information for undo and text in registers is kept in memory, thus when making | |
97 (big) changes the amount of (virtual) memory available limits the number of | |
98 undo levels and the text that can be kept in registers. Other things are also | |
99 kept in memory: Command-line history, error messages for Quickfix mode, etc. | |
100 | |
101 Memory usage limits | |
102 ------------------- | |
103 | |
104 The option 'maxmem' ('mm') is used to set the maximum memory used for one | |
105 buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for | |
106 all buffers (in kilobytes). The defaults depend on the system used. For the | |
18972 | 107 Amiga, 'maxmemtot' is set depending on the amount of memory available. |
827 | 108 These are not hard limits, but tell Vim when to move text into a swap file. |
109 If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a | |
110 very large value. The swap file will then only be used for recovery. If you | |
111 don't want a swap file at all, set 'updatecount' to 0, or use the "-n" | |
112 argument when starting Vim. | |
7 | 113 |
114 ============================================================================== | |
115 4. The most interesting additions *vim-additions* | |
116 | |
117 Vi compatibility. |'compatible'| | |
118 Although Vim is 99% Vi compatible, some things in Vi can be | |
119 considered to be a bug, or at least need improvement. But still, Vim | |
120 starts in a mode which behaves like the "real" Vi as much as possible. | |
121 To make Vim behave a little bit better, try resetting the 'compatible' | |
122 option: | |
123 :set nocompatible | |
124 Or start Vim with the "-N" argument: | |
125 vim -N | |
827 | 126 Vim starts with 'nocompatible' automatically if you have a .vimrc |
127 file. See |startup|. | |
7 | 128 The 'cpoptions' option can be used to set Vi compatibility on/off for |
129 a number of specific items. | |
130 | |
131 Support for different systems. | |
132 Vim can be used on: | |
133 - All Unix systems (it works on all systems it was tested on, although | |
134 the GUI and Perl interface may not work everywhere). | |
135 - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). | |
19116 | 136 - MS-Windows |
7 | 137 - VMS |
138 - Macintosh | |
139 - IBM OS/390 | |
827 | 140 Note that on some systems features need to be disabled to reduce |
18972 | 141 resource usage. For some outdated systems you need to use an older |
142 Vim version. | |
7 | 143 |
9887
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
144 Multi level persistent undo. |undo| |
7 | 145 'u' goes backward in time, 'CTRL-R' goes forward again. Set option |
146 'undolevels' to the number of changes to be remembered (default 1000). | |
5340 | 147 Set 'undolevels' to 0 for a Vi-compatible one level undo. Set it to |
7 | 148 -1 for no undo at all. |
149 When all changes in a buffer have been undone, the buffer is not | |
150 considered changed anymore. You can exit it with :q, without <!>. | |
827 | 151 When undoing a few changes and then making a new change Vim will |
152 create a branch in the undo tree. This means you can go back to any | |
1186 | 153 state of the text, there is no risk of a change causing text to be |
827 | 154 lost forever. |undo-tree| |
9887
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
155 The undo information is stored in a file when the 'undofile' option is |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
156 set. This means you can exit Vim, start Vim on a previously edited |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
157 file and undo changes that were made before exiting Vim. |
7 | 158 |
827 | 159 Graphical User Interface (GUI). |gui| |
7 | 160 Included support for GUI: menu's, mouse, scrollbars, etc. You can |
161 define your own menus. Better support for CTRL/SHIFT/ALT keys in | |
162 combination with special keys and mouse. Supported for various | |
28379 | 163 platforms, such as X11 with Motif, GTK, Win32 (Windows XP and later), |
164 Amiga and Macintosh. | |
7 | 165 |
166 Multiple windows and buffers. |windows.txt| | |
167 Vim can split the screen into several windows, each editing a | |
168 different buffer or the same buffer at a different location. Buffers | |
169 can still be loaded (and changed) but not displayed in a window. This | |
170 is called a hidden buffer. Many commands and options have been added | |
171 for this facility. | |
827 | 172 Vim can also use multiple tab pages, each with one or more windows. A |
173 line with tab labels can be used to quickly switch between these pages. | |
174 |tab-page| | |
7 | 175 |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
176 Terminal window. |:terminal| |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
177 Vim can create a window in which a terminal emulator runs. This can |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
178 be used to execute an arbitrary command, a shell or a debugger. |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
179 |
7 | 180 Syntax highlighting. |:syntax| |
181 Vim can highlight keywords, patterns and other things. This is | |
827 | 182 defined by a number of |:syntax| commands, and can be made to |
7 | 183 highlight most languages and file types. A number of files are |
184 included for highlighting the most common languages, like C, C++, | |
185 Java, Pascal, Makefiles, shell scripts, etc. The colors used for | |
186 highlighting can be defined for ordinary terminals, color terminals | |
827 | 187 and the GUI with the |:highlight| command. A convenient way to do |
188 this is using a |:colorscheme| command. | |
189 The highlighted text can be exported as HTML. |convert-to-HTML| | |
190 Other items that can be highlighted are matches with the search string | |
191 |'hlsearch'|, matching parens |matchparen| and the cursor line and | |
192 column |'cursorline'| |'cursorcolumn'|. | |
7 | 193 |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
194 Text properties |textprop.txt| |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
195 Vim supports highlighting text by a plugin. Property types can be |
16808 | 196 specified with |prop_type_add()| and properties can be placed with |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
197 |prop_add()|. |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
198 |
827 | 199 Spell checking. |spell| |
200 When the 'spell' option is set Vim will highlight spelling mistakes. | |
3750 | 201 About 50 languages are currently supported, selected with the |
1618 | 202 'spelllang' option. In source code only comments and strings are |
827 | 203 checked for spelling. |
204 | |
205 Folding. |folding| | |
7 | 206 A range of lines can be shown as one "folded" line. This allows |
207 overviewing a file and moving blocks of text around quickly. | |
208 Folds can be created manually, from the syntax of the file, by indent, | |
209 etc. | |
210 | |
827 | 211 Diff mode. |diff| |
212 Vim can show two versions of a file with the differences highlighted. | |
213 Parts of the text that are equal are folded away. Commands can be | |
214 used to move text from one version to the other. | |
215 | |
216 Plugins. |add-plugin| | |
7 | 217 The functionality can be extended by dropping a plugin file in the |
218 right directory. That's an easy way to start using Vim scripts | |
219 written by others. Plugins can be for all kind of files, or | |
220 specifically for a filetype. | |
9887
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
221 Packages make this even easier. |packages| |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
222 |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
223 Asynchronous communication and timers. |channel| |job| |timer| |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
224 Vim can exchange messages with other processes in the background. |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
225 This makes it possible to have servers do work and send back the |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
226 results to Vim. |channel| |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
227 Vim can start a job, communicate with it and stop it. |job| |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
228 Timers can fire once or repeatedly and invoke a function to do any |
b4da19b7539f
commit https://github.com/vim/vim/commit/dc1f1645cb495fa6bfbe216d7359f23539a0e25d
Christian Brabandt <cb@256bit.org>
parents:
8061
diff
changeset
|
229 work. |timer| |
7 | 230 |
231 Repeat a series of commands. |q| | |
827 | 232 "q{c}" starts recording typed characters into named register {c}. |
233 A subsequent "q" stops recording. The register can then be executed | |
234 with the "@{c}" command. This is very useful to repeat a complex | |
235 action. | |
7 | 236 |
237 Flexible insert mode. |ins-special-special| | |
238 The arrow keys can be used in insert mode to move around in the file. | |
239 This breaks the insert in two parts as far as undo and redo is | |
240 concerned. | |
241 | |
827 | 242 CTRL-O can be used to execute a single Normal mode command. This is |
243 almost the same as hitting <Esc>, typing the command and doing |a|. | |
7 | 244 |
245 Visual mode. |Visual-mode| | |
827 | 246 Visual mode can be used to first highlight a piece of text and then |
247 give a command to do something with it. This is an (easy to use) | |
248 alternative to first giving the operator and then moving to the end of | |
249 the text to be operated upon. | |
250 |v| and |V| are used to start Visual mode. |v| works on characters | |
251 and |V| on lines. Move the cursor to extend the Visual area. It is | |
252 shown highlighted on the screen. By typing "o" the other end of the | |
253 Visual area can be moved. The Visual area can be affected by an | |
254 operator: | |
7 | 255 d delete |
256 c change | |
257 y yank | |
258 > or < insert or delete indent | |
259 ! filter through external program | |
260 = filter through indent | |
827 | 261 : start |:| command for the Visual lines. |
7 | 262 gq format text to 'textwidth' columns |
263 J join lines | |
264 ~ swap case | |
265 u make lowercase | |
266 U make uppercase | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
267 {Vi has no Visual mode, the name "visual" is used for Normal mode, to |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
268 distinguish it from Ex mode} |
7 | 269 |
270 Block operators. |visual-block| | |
827 | 271 With Visual mode a rectangular block of text can be selected. Start |
272 Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") | |
273 or its case can be changed ("~", "u" and "U"). A deleted or yanked | |
274 block can be put into the text with the "p" and "P" commands. | |
7 | 275 |
827 | 276 Help system. |:help| |
7 | 277 Help is displayed in a window. The usual commands can be used to |
278 move around, search for a string, etc. Tags can be used to jump | |
827 | 279 around in the help files, just like hypertext links. The |:help| |
7 | 280 command takes an argument to quickly jump to the info on a subject. |
281 <F1> is the quick access to the help system. The name of the help | |
282 index file can be set with the 'helpfile' option. | |
283 | |
284 Command-line editing and history. |cmdline-editing| | |
285 You can insert or delete at any place in the command-line using the | |
286 cursor keys. The right/left cursor keys can be used to move | |
287 forward/backward one character. The shifted right/left cursor keys | |
288 can be used to move forward/backward one word. CTRL-B/CTRL-E can be | |
289 used to go to the begin/end of the command-line. | |
16610 | 290 {Vi: can only alter the last character in the line} |
291 {Vi: when hitting <Esc> the command-line is executed. This is | |
292 unexpected for most people; therefore it was changed in Vim. But when | |
293 the <Esc> is part of a mapping, the command-line is executed. If you | |
294 want the Vi behaviour also when typing <Esc>, use ":cmap ^V<Esc> | |
295 ^V^M"} | |
7 | 296 |cmdline-history| |
297 The command-lines are remembered. The up/down cursor keys can be used | |
298 to recall previous command-lines. The 'history' option can be set to | |
299 the number of lines that will be remembered. There is a separate | |
300 history for commands and for search patterns. | |
301 | |
302 Command-line completion. |cmdline-completion| | |
303 While entering a command-line (on the bottom line of the screen) | |
304 <Tab> can be typed to complete | |
305 what example ~ | |
306 - command :e<Tab> | |
307 - tag :ta scr<Tab> | |
308 - option :set sc<Tab> | |
309 - option value :set hf=<Tab> | |
310 - file name :e ve<Tab> | |
311 - etc. | |
312 | |
313 If there are multiple matches, CTRL-N (next) and CTRL-P (previous) | |
314 will walk through the matches. <Tab> works like CTRL-N, but wraps | |
315 around to the first match. | |
316 | |
317 The 'wildchar' option can be set to the character for command-line | |
318 completion, <Tab> is the default. CTRL-D can be typed after an | |
319 (incomplete) wildcard; all matches will be listed. CTRL-A will insert | |
320 all matches. CTRL-L will insert the longest common part of the | |
321 matches. | |
322 | |
827 | 323 Insert-mode completion. |ins-completion| |
324 In Insert mode the CTRL-N and CTRL-P keys can be used to complete a | |
325 word that appears elsewhere. |i_CTRL-N| | |
7 | 326 With CTRL-X another mode is entered, through which completion can be |
327 done for: | |
328 |i_CTRL-X_CTRL-F| file names | |
329 |i_CTRL-X_CTRL-K| words from 'dictionary' files | |
330 |i_CTRL-X_CTRL-T| words from 'thesaurus' files | |
331 |i_CTRL-X_CTRL-I| words from included files | |
332 |i_CTRL-X_CTRL-L| whole lines | |
333 |i_CTRL-X_CTRL-]| words from the tags file | |
334 |i_CTRL-X_CTRL-D| definitions or macros | |
827 | 335 |i_CTRL-X_CTRL-O| Omni completion: clever completion |
336 specifically for a file type | |
337 etc. | |
7 | 338 |
827 | 339 Long line support. |'wrap'| |'linebreak'| |
7 | 340 If the 'wrap' option is off, long lines will not wrap and only part |
341 of them will be shown. When the cursor is moved to a part that is not | |
342 shown, the screen will scroll horizontally. The minimum number of | |
827 | 343 columns to scroll can be set with the 'sidescroll' option. The |zh| |
344 and |zl| commands can be used to scroll sideways. | |
7 | 345 Alternatively, long lines are broken in between words when the |
346 'linebreak' option is set. This allows editing a single-line | |
347 paragraph conveniently (e.g. when the text is later read into a DTP | |
827 | 348 program). Move the cursor up/down with the |gk| and |gj| commands. |
7 | 349 |
350 Text formatting. |formatting| | |
351 The 'textwidth' option can be used to automatically limit the line | |
352 length. This supplements the 'wrapmargin' option of Vi, which was not | |
827 | 353 very useful. The |gq| operator can be used to format a piece of text |
354 (for example, |gqap| formats the current paragraph). Commands for | |
355 text alignment: |:center|, |:left| and |:right|. | |
7 | 356 |
827 | 357 Extended search patterns. |pattern| |
7 | 358 There are many extra items to match various text items. Examples: |
359 A "\n" can be used in a search pattern to match a line break. | |
360 "x\{2,4}" matches "x" 2 to 4 times. | |
361 "\s" matches a white space character. | |
362 | |
827 | 363 Directory, remote and archive browsing. |netrw| |
364 Vim can browse the file system. Simply edit a directory. Move around | |
365 in the list with the usual commands and press <Enter> to go to the | |
366 directory or file under the cursor. | |
367 This also works for remote files over ftp, http, ssh, etc. | |
368 Zip and tar archives can also be browsed. |tar| |zip| | |
369 | |
7 | 370 Edit-compile-edit speedup. |quickfix| |
827 | 371 The |:make| command can be used to run the compilation and jump to the |
372 first error. A file with compiler error messages is interpreted. Vim | |
373 jumps to the first error. | |
7 | 374 |
375 Each line in the error file is scanned for the name of a file, line | |
376 number and error message. The 'errorformat' option can be set to a | |
377 list of scanf-like strings to handle output from many compilers. | |
378 | |
827 | 379 The |:cn| command can be used to jump to the next error. |
380 |:cl| lists all the error messages. Other commands are available. | |
7 | 381 The 'makeef' option has the name of the file with error messages. |
382 The 'makeprg' option contains the name of the program to be executed | |
827 | 383 with the |:make| command. |
7 | 384 The 'shellpipe' option contains the string to be used to put the |
385 output of the compiler into the errorfile. | |
386 | |
827 | 387 Finding matches in files. |:vimgrep| |
388 Vim can search for a pattern in multiple files. This uses the | |
389 advanced Vim regexp pattern, works on all systems and also works to | |
390 search in compressed files. | |
391 | |
392 Improved indenting for programs. |'cindent'| | |
7 | 393 When the 'cindent' option is on the indent of each line is |
394 automatically adjusted. C syntax is mostly recognized. The indent | |
395 for various styles can be set with 'cinoptions'. The keys to trigger | |
396 indenting can be set with 'cinkeys'. | |
397 | |
398 Comments can be automatically formatted. The 'comments' option can be | |
399 set to the characters that start and end a comment. This works best | |
400 for C code, but also works for e-mail (">" at start of the line) and | |
827 | 401 other types of text. The |=| operator can be used to re-indent |
7 | 402 lines. |
403 | |
827 | 404 For many other languages an indent plugin is present to support |
405 automatic indenting. |30.3| | |
406 | |
407 Searching for words in included files. |include-search| | |
408 The |[i| command can be used to search for a match of the word under | |
7 | 409 the cursor in the current and included files. The 'include' option |
1668 | 410 can be set to a pattern that describes a command to include a file |
7 | 411 (the default is for C programs). |
827 | 412 The |[I| command lists all matches, the |[_CTRL-I| command jumps to |
7 | 413 a match. |
827 | 414 The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for |
7 | 415 lines where the pattern given with the 'define' option matches. |
416 | |
827 | 417 Automatic commands. |autocommand| |
7 | 418 Commands can be automatically executed when reading a file, writing a |
419 file, jumping to another buffer, etc., depending on the file name. | |
420 This is useful to set options and mappings for C programs, | |
421 documentation, plain text, e-mail, etc. This also makes it possible | |
422 to edit compressed files. | |
423 | |
827 | 424 Scripts and Expressions. |expression| |
425 Commands have been added to form up a powerful script language. | |
7 | 426 |:if| Conditional execution, which can be used for example |
427 to set options depending on the value of $TERM. | |
428 |:while| Repeat a number of commands. | |
827 | 429 |:for| Loop over a list. |
7 | 430 |:echo| Print the result of an expression. |
431 |:let| Assign a value to an internal variable, option, etc. | |
827 | 432 Variable types are Number, String, List and Dictionary. |
7 | 433 |:execute| Execute a command formed by an expression. |
827 | 434 |:try| Catch exceptions. |
435 etc., etc. See |eval|. | |
436 Debugging and profiling are supported. |debug-scripts| |profile| | |
437 If this is not enough, an interface is provided to |Python|, |Ruby|, | |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
438 |Tcl|, |Lua|, |Perl| and |MzScheme|. |
7 | 439 |
827 | 440 Viminfo. |viminfo-file| |
7 | 441 The command-line history, marks and registers can be stored in a file |
442 that is read on startup. This can be used to repeat a search command | |
443 or command-line command after exiting and restarting Vim. It is also | |
827 | 444 possible to jump right back to where the last edit stopped with |'0|. |
7 | 445 The 'viminfo' option can be set to select which items to store in the |
446 .viminfo file. This is off by default. | |
447 | |
827 | 448 Printing. |printing| |
449 The |:hardcopy| command sends text to the printer. This can include | |
450 syntax highlighting. | |
451 | |
452 Mouse support. |mouse-using| | |
7 | 453 The mouse is supported in the GUI version, in an xterm for Unix, for |
18972 | 454 BSDs with sysmouse, for Linux with gpm, and Win32. It can be used to |
455 position the cursor, select the visual area, paste a register, etc. | |
7 | 456 |
827 | 457 Usage of key names. |<>| |key-notation| |
7 | 458 Special keys now all have a name like <Up>, <End>, etc. |
459 This name can be used in mappings, to make it easy to edit them. | |
460 | |
827 | 461 Editing binary files. |edit-binary| |
7 | 462 Vim can edit binary files. You can change a few characters in an |
463 executable file, without corrupting it. Vim doesn't remove NUL | |
464 characters (they are represented as <NL> internally). | |
465 |-b| command-line argument to start editing a binary file | |
827 | 466 |'binary'| Option set by |-b|. Prevents adding an <EOL> for the |
7 | 467 last line in the file. |
468 | |
827 | 469 Multi-language support. |multi-lang| |
21991 | 470 Files in double-byte or multibyte encodings can be edited. There is |
7 | 471 UTF-8 support to be able to edit various languages at the same time, |
472 without switching fonts. |UTF-8| | |
473 Messages and menus are available in different languages. | |
474 | |
827 | 475 Move cursor beyond lines. |
476 When the 'virtualedit' option is set the cursor can move all over the | |
477 screen, also where there is no text. This is useful to edit tables | |
478 and figures easily. | |
479 | |
7 | 480 ============================================================================== |
481 5. Other vim features *other-features* | |
482 | |
483 A random collection of nice extra features. | |
484 | |
485 | |
486 When Vim is started with "-s scriptfile", the characters read from | |
487 "scriptfile" are treated as if you typed them. If end of file is reached | |
488 before the editor exits, further characters are read from the console. | |
489 | |
490 The "-w" option can be used to record all typed characters in a script file. | |
491 This file can then be used to redo the editing, possibly on another file or | |
492 after changing some commands in the script file. | |
493 | |
494 The "-o" option opens a window for each argument. "-o4" opens four windows. | |
495 | |
496 Vi requires several termcap entries to be able to work full-screen. Vim only | |
497 requires the "cm" entry (cursor motion). | |
498 | |
499 | |
500 In command mode: | |
501 | |
502 When the 'showcmd' option is set, the command characters are shown in the last | |
503 line of the screen. They are removed when the command is finished. | |
504 | |
505 If the 'ruler' option is set, the current cursor position is shown in the | |
506 last line of the screen. | |
507 | |
508 "U" still works after having moved off the last changed line and after "u". | |
509 | |
510 Characters with the 8th bit set are displayed. The characters between '~' and | |
511 0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the | |
512 'isprint' option. | |
513 | |
514 "][" goes to the next ending of a C function ('}' in column 1). | |
515 "[]" goes to the previous ending of a C function ('}' in column 1). | |
516 | |
517 "]f", "[f" and "gf" start editing the file whose name is under the cursor. | |
518 CTRL-W f splits the window and starts editing the file whose name is under | |
519 the cursor. | |
520 | |
521 "*" searches forward for the identifier under the cursor, "#" backward. | |
522 "K" runs the program defined by the 'keywordprg' option, with the identifier | |
523 under the cursor as argument. | |
524 | |
525 "%" can be preceded with a count. The cursor jumps to the line that | |
526 percentage down in the file. The normal "%" function to jump to the matching | |
527 brace skips braces inside quotes. | |
528 | |
529 With the CTRL-] command, the cursor may be in the middle of the identifier. | |
530 | |
531 The used tags are remembered. Commands that can be used with the tag stack | |
532 are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. | |
533 | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
534 Vi uses 'wrapscan' when searching for a tag. When jumping to a tag Vi starts |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
535 searching in line 2 of another file. It does not find a tag in line 1 of |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
536 another file when 'wrapscan' is not set. |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
537 |
7 | 538 The 'tags' option can be set to a list of tag file names. Thus multiple |
539 tag files can be used. For file names that start with "./", the "./" is | |
540 replaced with the path of the current file. This makes it possible to use a | |
541 tags file in the same directory as the file being edited. | |
16610 | 542 {Vi: always uses binary search in some versions} |
543 {Vi does not have the security prevention for commands in tag files} | |
7 | 544 |
545 Previously used file names are remembered in the alternate file name list. | |
546 CTRL-^ accepts a count, which is an index in this list. | |
547 ":files" command shows the list of alternate file names. | |
548 "#<N>" is replaced with the <N>th alternate file name in the list. | |
549 "#<" is replaced with the current file name without extension. | |
550 | |
551 Search patterns have more features. The <NL> character is seen as part of the | |
552 search pattern and the substitute string of ":s". Vi sees it as the end of | |
553 the command. | |
554 | |
555 Searches can put the cursor on the end of a match and may include a character | |
556 offset. | |
557 | |
558 Count added to "~", ":next", ":Next", "n" and "N". | |
559 | |
560 The command ":next!" with 'autowrite' set does not write the file. In vi the | |
561 file was written, but this is considered to be a bug, because one does not | |
562 expect it and the file is not written with ":rewind!". | |
563 | |
564 In Vi when entering a <CR> in replace mode deletes a character only when 'ai' | |
565 is set (but does not show it until you hit <Esc>). Vim always deletes a | |
566 character (and shows it immediately). | |
567 | |
568 Added :wnext command. Same as ":write" followed by ":next". | |
569 | |
570 The ":w!" command always writes, also when the file is write protected. In Vi | |
5690 | 571 you would have to do ":!chmod +w %:S" and ":set noro". |
7 | 572 |
573 When 'tildeop' has been set, "~" is an operator (must be followed by a | |
574 movement command). | |
575 | |
576 With the "J" (join) command you can reset the 'joinspaces' option to have only | |
577 one space after a period (Vi inserts two spaces). | |
578 | |
579 "cw" can be used to change white space formed by several characters (Vi is | |
580 confusing: "cw" only changes one space, while "dw" deletes all white space). | |
16610 | 581 {Vi: "cw" when on a blank followed by other blanks changes only the first |
582 blank; this is probably a bug, because "dw" deletes all the blanks} | |
7 | 583 |
584 "o" and "O" accept a count for repeating the insert (Vi clears a part of | |
585 display). | |
586 | |
587 Flags after Ex commands not supported (no plans to include it). | |
588 | |
589 On non-UNIX systems ":cd" command shows current directory instead of going to | |
590 the home directory (there isn't one). ":pwd" prints the current directory on | |
591 all systems. | |
592 | |
593 After a ":cd" command the file names (in the argument list, opened files) | |
594 still point to the same files. In Vi ":cd" is not allowed in a changed file; | |
595 otherwise the meaning of file names change. | |
596 | |
597 ":source!" command reads Vi commands from a file. | |
598 | |
599 ":mkexrc" command writes current modified options and mappings to a ".exrc" | |
600 file. ":mkvimrc" writes to a ".vimrc" file. | |
601 | |
602 No check for "tail recursion" with mappings. This allows things like | |
603 ":map! foo ^]foo". | |
604 | |
605 When a mapping starts with number, vi loses the count typed before it (e.g. | |
606 when using the mapping ":map g 4G" the command "7g" goes to line 4). This is | |
607 considered a vi bug. Vim concatenates the counts (in the example it becomes | |
608 "74G"), as most people would expect. | |
609 | |
610 The :put! command inserts the contents of a register above the current line. | |
611 | |
612 The "p" and "P" commands of vi cannot be repeated with "." when the putted | |
613 text is less than a line. In Vim they can always be repeated. | |
614 | |
615 ":noremap" command can be used to enter a mapping that will not be remapped. | |
616 This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and | |
617 ":cnoremap" can be used for mapping in command-line editing only. ":imap", | |
618 ":iunmap" and ":inoremap" can be used for mapping in insert mode only. | |
619 Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" | |
620 ":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". | |
621 | |
622 In Vi the command ":map foo bar" would remove a previous mapping | |
623 ":map bug foo". This is considered a bug, so it is not included in Vim. | |
624 ":unmap! foo" does remove ":map! bug foo", because unmapping would be very | |
625 difficult otherwise (this is vi compatible). | |
626 | |
627 The ':' register contains the last command-line. | |
628 The '%' register contains the current file name. | |
629 The '.' register contains the last inserted text. | |
630 | |
631 ":dis" command shows the contents of the yank registers. | |
632 | |
633 CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the | |
634 same positions as used with the '' command, but may be in another file. The | |
635 ":jumps" command lists the older positions. | |
636 | |
637 If the 'shiftround' option is set, an indent is rounded to a multiple of | |
638 'shiftwidth' with ">" and "<" commands. | |
639 | |
640 The 'scrolljump' option can be set to the minimum number of lines to scroll | |
641 when the cursor gets off the screen. Use this when scrolling is slow. | |
642 | |
643 The 'scrolloff' option can be set to the minimum number of lines to keep | |
644 above and below the cursor. This gives some context to where you are | |
645 editing. When set to a large number the cursor line is always in the middle | |
646 of the window. | |
647 | |
648 Uppercase marks can be used to jump between files. The ":marks" command lists | |
649 all currently set marks. The commands "']" and "`]" jump to the end of the | |
650 previous operator or end of the text inserted with the put command. "'[" and | |
16610 | 651 "`[" do jump to the start. {Vi: no uppercase marks} |
7 | 652 |
653 The 'shelltype' option can be set to reflect the type of shell used on the | |
654 Amiga. | |
655 | |
656 The 'highlight' option can be set for the highlight mode to be used for | |
657 several commands. | |
658 | |
659 The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the | |
660 command (default 1) is added to/subtracted from the number at or after the | |
661 cursor. That number may be decimal, octal (starts with a '0') or hexadecimal | |
662 (starts with '0x'). Very useful in macros. | |
663 | |
664 With the :set command the prefix "inv" can be used to invert boolean options. | |
665 | |
666 In both Vi and Vim you can create a line break with the ":substitute" command | |
667 by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the | |
668 text. With Vim you can put a real CTRL-M in the text by preceding it with a | |
669 CTRL-V. | |
670 | |
671 | |
672 In Insert mode: | |
673 | |
674 If the 'revins' option is set, insert happens backwards. This is for typing | |
675 Hebrew. When inserting normal characters the cursor will not be shifted and | |
676 the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in | |
677 the opposite direction. CTRL-B toggles the 'revins' option. In replace mode | |
678 'revins' has no effect. Only when enabled at compile time. | |
679 | |
680 The backspace key can be used just like CTRL-D to remove auto-indents. | |
681 | |
682 You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) | |
683 option includes "eol". You can backspace over the start of insert if the | |
684 'backspace' option includes "start". | |
685 | |
3750 | 686 When the 'paste' option is set, a few options are reset and mapping in insert |
7 | 687 mode and abbreviation are disabled. This allows for pasting text in windowing |
688 systems without unexpected results. When the 'paste' option is reset, the old | |
689 option values are restored. | |
690 | |
691 CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter | |
692 what column the cursor is in. | |
693 | |
694 CTRL-@ (insert previously inserted text) works always (Vi: only when typed as | |
695 first character). | |
696 | |
697 CTRL-A works like CTRL-@ but does not leave insert mode. | |
698 | |
18186 | 699 CTRL-R {register} can be used to insert the contents of a register. |
7 | 700 |
701 When the 'smartindent' option is set, C programs will be better auto-indented. | |
702 With 'cindent' even more. | |
703 | |
704 CTRL-Y and CTRL-E can be used to copy a character from above/below the | |
705 current cursor position. | |
706 | |
707 After CTRL-V you can enter a three digit decimal number. This byte value is | |
708 inserted in the text as a single character. Useful for international | |
709 characters that are not on your keyboard. | |
710 | |
711 When the 'expandtab' (et) option is set, a <Tab> is expanded to the | |
712 appropriate number of spaces. | |
713 | |
714 The window always reflects the contents of the buffer (Vi does not do this | |
715 when changing text and in some other cases). | |
716 | |
717 If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of | |
718 normal digraphs is included. They are shown with the ":digraph" command. | |
719 More can be added with ":digraph {char1}{char2} {number}". A digraph is | |
720 entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when | |
721 'digraph' option is set). | |
722 | |
723 When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin | |
724 for the first insert. Vim does it for all. | |
725 | |
726 A count to the "i" or "a" command is used for all the text. Vi uses the count | |
727 only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi | |
728 but "abc<NL>defabc<NL>defabc<NL>def" in Vim. | |
729 | |
730 | |
731 In Command-line mode: | |
732 | |
235 | 733 <Esc> terminates the command-line without executing it. In vi the command |
7 | 734 line would be executed, which is not what most people expect (hitting <Esc> |
735 should always get you back to command mode). To avoid problems with some | |
736 obscure macros, an <Esc> in a macro will execute the command. If you want a | |
737 typed <Esc> to execute the command like vi does you can fix this with | |
738 ":cmap ^V<Esc> ^V<CR>" | |
739 | |
740 General: | |
741 | |
742 The 'ttimeout' option is like 'timeout', but only works for cursor and | |
743 function keys, not for ordinary mapped characters. The 'timeoutlen' option | |
744 gives the number of milliseconds that is waited for. If the 'esckeys' option | |
745 is not set, cursor and function keys that start with <Esc> are not recognized | |
746 in insert mode. | |
747 | |
748 There is an option for each terminal string. Can be used when termcap is not | |
749 supported or to change individual strings. | |
750 | |
751 The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" | |
752 <NL> or "mac" <CR>. | |
753 When the 'fileformats' option is not empty, Vim tries to detect the type of | |
754 <EOL> automatically. The 'fileformat' option is set accordingly. | |
755 | |
756 On systems that have no job control (older Unix systems and non-Unix systems) | |
757 the CTRL-Z, ":stop" or ":suspend" command starts a new shell. | |
758 | |
759 If Vim is started on the Amiga without an interactive window for output, a | |
760 window is opened (and :sh still works). You can give a device to use for | |
761 editing with the |-d| argument, e.g. "-d con:20/20/600/150". | |
762 | |
763 The 'columns' and 'lines' options are used to set or get the width and height | |
764 of the display. | |
765 | |
766 Option settings are read from the first and last few lines of the file. | |
767 Option 'modelines' determines how many lines are tried (default is 5). Note | |
768 that this is different from the Vi versions that can execute any Ex command | |
769 in a modeline (a major security problem). |trojan-horse| | |
770 | |
771 If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. | |
772 And it comes back there, when pressing <Esc>. | |
773 | |
774 Undo information is kept in memory. Available memory limits the number and | |
18972 | 775 size of change that can be undone. This is hardly a problem on the Amiga and |
776 almost never with Unix and Win32. | |
7 | 777 |
778 If the 'backup' or 'writebackup' option is set: Before a file is overwritten, | |
779 a backup file (.bak) is made. If the "backup" option is set it is left | |
780 behind. | |
781 | |
782 Vim creates a file ending in ".swp" to store parts of the file that have been | |
783 changed or that do not fit in memory. This file can be used to recover from | |
784 an aborted editing session with "vim -r file". Using the swap file can be | |
785 switched off by setting the 'updatecount' option to 0 or starting Vim with | |
786 the "-n" option. Use the 'directory' option for placing the .swp file | |
787 somewhere else. | |
788 | |
789 Vim is able to work correctly on filesystems with 8.3 file names, also when | |
790 using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted | |
791 filesystem under Unix. See |'shortname'|. | |
792 | |
793 Error messages are shown at least one second (Vi overwrites error messages). | |
794 | |
795 If Vim gives the |hit-enter| prompt, you can hit any key. Characters other | |
16610 | 796 than <CR>, <NL> and <Space> are interpreted as the (start of) a command. |
797 {Vi: only ":" commands are interpreted} | |
7 | 798 |
799 The contents of the numbered and unnamed registers is remembered when | |
800 changing files. | |
801 | |
802 The "No lines in buffer" message is a normal message instead of an error | |
803 message, since that may cause a mapping to be aborted. | |
16610 | 804 {Vi: error messages may be overwritten with other messages before you have a |
805 chance to read them} | |
7 | 806 |
807 The AUX: device of the Amiga is supported. | |
808 | |
809 ============================================================================== | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
810 6. Supported Vi features *vi-features* |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
811 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
812 Vim supports nearly all Vi commands and mostly in the same way. That is when |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
813 the 'compatible' option is set and 'cpoptions' contains all flags. What the |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
814 effect is of resetting 'compatible' and removing flags from 'cpoptions' can be |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
815 found at the help for the specific command. |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
816 |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
817 The help files used to mark features that are in Vim but not in Vi with {not |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
818 in Vi}. However, since these remarks cluttered the help files we now do it |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
819 the other way around: Below is listed what Vi already supported. Anything |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
820 else has been added by Vim. |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
821 |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
822 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
823 The following Ex commands are supported by Vi: ~ |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
824 |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
825 `:abbreviate` enter abbreviation |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
826 `:append` append text |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
827 `:args` print the argument list |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
828 `:cd` change directory; Vi: no "cd -" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
829 `:change` replace a line or series of lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
830 `:chdir` change directory |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
831 `:copy` copy lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
832 `:delete` delete lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
833 `:edit` edit a file |
16610 | 834 `:exit` same as `:xit` |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
835 `:file` show or set the current file name; Vi: without the column number |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
836 `:global` execute commands for matching lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
837 `:insert` insert text |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
838 `:join` join lines; Vi: not :join! |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
839 `:k` set a mark |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
840 `:list` print lines |
16610 | 841 `:map` show or enter a mapping |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
842 `:mark` set a mark |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
843 `:move` move lines |
16610 | 844 `:Next` go to previous file in the argument list {Vi: no count} |
845 `:next` go to next file in the argument list {Vi: no count} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
846 `:number` print lines with line number |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
847 `:open` start open mode (not implemented in Vim) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
848 `:pop` jump to older entry in tag stack (only in some versions) |
16610 | 849 `:preserve` write all text to swap file {Vi: might also exit} |
850 `:previous` same as `:Next` {Vi: only in some versions} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
851 `:print` print lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
852 `:put` insert contents of register in the text |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
853 `:quit` quit Vi |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
854 `:read` read file into the text |
16610 | 855 `:recover` recover a file from a swap file {Vi: recovers in another way |
856 and sends mail if there is something to recover} | |
857 `:rewind` go to the first file in the argument list; no ++opt | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
858 `:set` set option; but not `:set inv{option}`, `:set option&`, |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
859 `:set all&`, `:set option+=value`, `:set option^=value` |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
860 `:set option-=value` `:set option<` |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
861 `:shell` escape to a shell |
16808 | 862 `:source` read Vi or Ex commands from a file |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
863 `:stop` suspend the editor or escape to a shell |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
864 `:substitute` find and replace text; Vi: no '&', 'i', 's', 'r' or 'I' flag, |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
865 confirm prompt only supports 'y' and 'n', no highlighting |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
866 `:suspend` same as ":stop" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
867 `:t` same as ":copy" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
868 `:tag` jump to tag |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
869 `:unabbreviate` remove abbreviation |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
870 `:undo` undo last change {Vi: only one level} |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
871 `:unmap` remove mapping |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
872 `:vglobal` execute commands for not matching lines |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
873 `:version` print version number and other info |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
874 `:visual` same as ":edit", but turns off "Ex" mode |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
875 `:wq` write to a file and quit Vi |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
876 `:write` write to a file |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
877 `:xit` write if buffer changed and quit Vi |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
878 `:yank` yank lines into a register |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
879 `:z` print some lines {not in all versions of Vi} |
16610 | 880 `:!` filter lines or execute an external command |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
881 `:"` comment |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
882 `:#` same as ":number" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
883 `:*` execute contents of a register |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
884 `:&` repeat last ":substitute" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
885 `:<` shift lines one 'shiftwidth' left |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
886 `:=` print the cursor line number |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
887 `:>` shift lines one 'shiftwidth' right |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
888 `:@` execute contents of a register; but not `:@`; `:@@` only in |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
889 some versions |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
890 |
16610 | 891 Common for these commands is that Vi doesn't support the ++opt argument on |
892 `:edit` and other commands that open a file. | |
893 | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
894 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
895 The following Normal mode commands are supported by Vi: ~ |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
896 |
16808 | 897 note: See the beginning of |normal-index| for the meaning of WORD, N, Nmove |
898 and etc in the description text. | |
899 | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
900 |CTRL-B| scroll N screens Backwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
901 |CTRL-C| interrupt current (search) command |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
902 |CTRL-D| scroll Down N lines (default: half a screen); Vim scrolls |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
903 'scroll' screen lines, Vi scrolls file lines; makes a |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
904 difference when lines wrap |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
905 |CTRL-E| scroll N lines upwards (N lines Extra) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
906 |CTRL-F| scroll N screens Forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
907 |CTRL-G| display current file name and position |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
908 |<BS>| same as "h" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
909 |CTRL-H| same as "h" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
910 |<NL>| same as "j" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
911 |CTRL-J| same as "j" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
912 |CTRL-L| redraw screen |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
913 |<CR>| cursor to the first CHAR N lines lower |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
914 |CTRL-M| same as <CR> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
915 |CTRL-N| same as "j" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
916 |CTRL-P| same as "k" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
917 |CTRL-R| in some Vi versions: same as CTRL-L |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
918 |CTRL-T| jump to N older Tag in tag list |
16808 | 919 |CTRL-U| N lines Upwards (default: half a screen) {Vi used file lines |
920 while Vim scrolls 'scroll' screen lines; makes a difference | |
921 when lines wrap} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
922 |CTRL-Y| scroll N lines downwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
923 |CTRL-Z| suspend program (or start new shell) |
16610 | 924 |CTRL-]| :ta to ident under cursor {Vi: identifier after the cursor} |
925 |CTRL-^| edit alternate file {Vi: no count} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
926 |<Space>| same as "l" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
927 |!| filter Nmove text through the {filter} command |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
928 |!!| filter N lines through the {filter} command |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
929 " use register {a-zA-Z0-9.%#:-"} for next delete, yank or put |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
930 (uppercase to append) ({.%#:} only work with put) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
931 |$| cursor to the end of Nth next line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
932 |%| find the next (curly/square) bracket on this line and go to |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
933 its match, or go to matching comment bracket, or go to |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
934 matching preprocessor directive (Vi: no count supported) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
935 |&| repeat last :s |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
936 |'| jump to mark (Vi: only lowercase marks) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
937 |(| cursor N sentences backward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
938 |)| cursor N sentences forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
939 |+| same as <CR> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
940 |,| repeat latest f, t, F or T in opposite direction N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
941 |-| cursor to the first CHAR N lines higher |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
942 |.| repeat last change with count replaced with N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
943 |/| search forward for the Nth occurrence of {pattern} |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
944 |0| cursor to the first char of the line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
945 |:| start entering an Ex command |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
946 |;| repeat latest f, t, F or T N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
947 |<| shift Nmove lines one 'shiftwidth' leftwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
948 |<<| shift N lines one 'shiftwidth' leftwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
949 |=| filter Nmove lines through "indent" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
950 |==| filter N lines through "indent" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
951 |>| shift Nmove lines one 'shiftwidth' rightwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
952 |>>| shift N lines one 'shiftwidth' rightwards |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
953 |?| search backward for the Nth previous occurrence of {pattern} |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
954 |@| execute the contents of register {a-z} N times |
16610 | 955 {Vi: only named registers} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
956 |@@| repeat the previous @{a-z} N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
957 |A| append text after the end of the line N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
958 |B| cursor N WORDS backward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
959 |C| change from the cursor position to the end of the line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
960 |D| delete the characters under the cursor until the end of the |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
961 line and N-1 more lines [into register x]; synonym for "d$" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
962 |E| cursor forward to the end of WORD N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
963 |F| cursor to the Nth occurrence of {char} to the left |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
964 |G| cursor to line N, default last line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
965 |H| cursor to line N from top of screen |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
966 |I| insert text before the first CHAR on the line N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
967 |J| Join N lines; default is 2 |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
968 |L| cursor to line N from bottom of screen |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
969 |M| cursor to middle line of screen |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
970 |N| repeat the latest '/' or '?' N times in opposite direction |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
971 |O| begin a new line above the cursor and insert text, repeat N |
16610 | 972 times {Vi: blank [count] screen lines} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
973 |P| put the text [from register x] before the cursor N times |
16610 | 974 {Vi: no count} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
975 |Q| switch to "Ex" mode |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
976 |R| enter replace mode: overtype existing characters, repeat the |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
977 entered text N-1 times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
978 |S| delete N lines [into register x] and start insert; synonym for |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
979 "cc". |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
980 |T| cursor till after Nth occurrence of {char} to the left |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
981 |U| undo all latest changes on one line |
16610 | 982 {Vi: while not moved off of the last modified line} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
983 |W| cursor N WORDS forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
984 |X| delete N characters before the cursor [into register x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
985 |Y| yank N lines [into register x]; synonym for "yy" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
986 |ZZ| store current file if modified, and exit |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
987 |[[| cursor N sections backward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
988 |]]| cursor N sections forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
989 |^| cursor to the first CHAR of the line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
990 |_| cursor to the first CHAR N - 1 lines lower |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
991 |`| cursor to the mark {a-zA-Z0-9} |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
992 |a| append text after the cursor N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
993 |b| cursor N words backward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
994 |c| delete Nmove text [into register x] and start insert |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
995 |cc| delete N lines [into register x] and start insert |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
996 |d| delete Nmove text [into register x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
997 |dd| delete N lines [into register x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
998 |e| cursor forward to the end of word N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
999 |f| cursor to Nth occurrence of {char} to the right |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1000 |h| cursor N chars to the left |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1001 |i| insert text before the cursor N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1002 |j| cursor N lines downward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1003 |k| cursor N lines upward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1004 |l| cursor N chars to the right |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1005 |m| set mark {A-Za-z} at cursor position |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1006 |n| repeat the latest '/' or '?' N times |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1007 |o| begin a new line below the cursor and insert text |
16610 | 1008 {Vi: blank [count] screen lines} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1009 |p| put the text [from register x] after the cursor N times |
16610 | 1010 {Vi: no count} |
1011 |r| replace N chars with {char} {Vi: CTRL-V <CR> still replaces | |
1012 with a line break, cannot replace something with a <CR>} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1013 |s| (substitute) delete N characters [into register x] and start |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1014 insert |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1015 |t| cursor till before Nth occurrence of {char} to the right |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1016 |u| undo changes {Vi: only one level} |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1017 |w| cursor N words forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1018 |x| delete N characters under and after the cursor [into register |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1019 x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1020 |y| yank Nmove text [into register x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1021 |yy| yank N lines [into register x] |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1022 |z<CR>| current line to the top |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1023 |z-| current line to the bottom |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1024 |z+| cursor on line N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1025 |z^| cursor on line N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1026 |{| cursor N paragraphs backward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1027 | cursor to column N |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1028 |}| cursor N paragraphs forward |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1029 |~| switch case of N characters under the cursor; Vim: depends on |
16610 | 1030 'tildeop' {Vi: no count, no 'tildeop'} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1031 |<Del>| same as "x" |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1032 |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1033 |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1034 The following commands are supported in Insert mode by Vi: ~ |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1035 |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1036 CTRL-@ insert previously inserted text and stop insert |
16610 | 1037 {Vi: only when typed as first char, only up to 128 chars} |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1038 CTRL-C quit insert mode, without checking for abbreviation, unless |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1039 'insertmode' set. |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1040 CTRL-D delete one shiftwidth of indent in the current line |
16610 | 1041 {Vi: CTRL-D works only when used after autoindent} |
1042 <BS> delete character before the cursor {Vi: does not delete | |
1043 autoindents, does not cross lines, does not delete past start | |
1044 position of insert} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1045 CTRL-H same as <BS> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1046 <Tab> insert a <Tab> character |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1047 CTRL-I same as <Tab> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1048 <NL> same as <CR> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1049 CTRL-J same as <CR> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1050 <CR> begin new line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1051 CTRL-M same as <CR> |
16610 | 1052 CTRL-T insert one shiftwidth of indent in current line {Vi: only when |
1053 in indent} | |
1054 CTRL-V {char} insert next non-digit literally {Vi: no decimal byte entry} | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1055 CTRL-W delete word before the cursor |
16808 | 1056 CTRL-Z when 'insertmode' set: suspend Vi |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1057 <Esc> end insert mode (unless 'insertmode' set) |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1058 CTRL-[ same as <Esc> |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1059 0 CTRL-D delete all indent in the current line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1060 ^ CTRL-D delete all indent in the current line, restore it in the next |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1061 line |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1062 <Del> delete character under the cursor |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1063 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1064 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1065 The following options are supported by Vi: ~ |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1066 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1067 'autoindent' 'ai' take indent for new line from previous line |
16610 | 1068 {Vi does this slightly differently: After the |
1069 indent is deleted when typing <Esc> or <CR>, the | |
1070 cursor position when moving up or down is after | |
1071 the deleted indent; Vi puts the cursor somewhere | |
1072 in the deleted indent}. | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1073 'autowrite' 'aw' automatically write file if changed |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1074 'directory' 'dir' list of directory names for the swap file |
16610 | 1075 {Vi: directory to put temp file in, defaults to |
1076 "/tmp"} | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1077 'edcompatible' 'ed' toggle flags of ":substitute" command |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1078 'errorbells' 'eb' ring the bell for error messages |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1079 'ignorecase' 'ic' ignore case in search patterns |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1080 'lines' number of lines in the display |
16610 | 1081 'lisp' automatic indenting for Lisp {Vi: Does it a little |
1082 bit differently} | |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1083 'list' show <Tab> and <EOL> |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1084 'magic' changes special characters in search patterns |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1085 'modeline' 'ml' recognize 'modelines' at start or end of file |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1086 {called modelines in some Vi versions} |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1087 'number' 'nu' print the line number in front of each line |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1088 'paragraphs' 'para' nroff macros that separate paragraphs |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1089 'prompt' 'prompt' enable prompt in Ex mode |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1090 'readonly' 'ro' disallow writing the buffer {Vim sets 'readonly' |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1091 when editing a file with `:view`} |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1092 'remap' allow mappings to work recursively |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1093 'report' threshold for reporting nr. of lines changed |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1094 'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1095 'sections' 'sect' nroff macros that separate sections |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1096 'shell' 'sh' name of shell to use for external commands |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1097 'shiftwidth' 'sw' number of spaces to use for (auto)indent step |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1098 'showmatch' 'sm' briefly jump to matching bracket if insert one |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1099 'showmode' 'smd' message on status line to show current mode |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1100 'tabstop' 'ts' number of spaces that <Tab> in file uses |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1101 'taglength' 'tl' number of significant characters for a tag |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1102 'tags' 'tag' list of file names used by the tag command |
16610 | 1103 {Vi: default is "tags /usr/lib/tags"} |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1104 'tagstack' 'tgst' push tags onto the tag stack {not in all versions |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1105 of Vi} |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1106 'term' name of the terminal |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1107 'terse' shorten some messages |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1108 'timeout' 'to' time out on mappings and key codes |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1109 'timeoutlen' 'tm' time for 'timeout' {only in some Vi versions} |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1110 'ttytype' 'tty' alias for 'term' |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1111 'verbose' 'vbs' give informative messages {only in some Vi |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1112 versions as a boolean option} |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1113 'warn' warn for shell command when buffer was changed |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1114 'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1115 {Vi also uses the option to specify the number of |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1116 displayed lines} |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1117 'wrapmargin' 'wm' chars from the right where wrapping starts |
16610 | 1118 {Vi: works differently and less usefully} |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1119 'wrapscan' 'ws' searches wrap around the end of the file |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1120 'writeany' 'wa' write to file with no need for "!" override |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1121 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1122 Also see |missing-options|. |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1123 |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1124 ============================================================================== |
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1125 7. Command-line arguments *cmdline-arguments* |
7 | 1126 |
1127 Different versions of Vi have different command-line arguments. This can be | |
1128 confusing. To help you, this section gives an overview of the differences. | |
1129 | |
1130 Five variants of Vi will be considered here: | |
1131 Elvis Elvis version 2.1b | |
1132 Nvi Nvi version 1.79 | |
1133 Posix Posix 1003.2 | |
1134 Vi Vi version 3.7 (for Sun 4.1.x) | |
1135 Vile Vile version 7.4 (incomplete) | |
1136 Vim Vim version 5.2 | |
1137 | |
1138 Only Vim is able to accept options in between and after the file names. | |
1139 | |
1140 +{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". | |
1141 | |
1142 - Nvi, Posix, Vi: Run Ex in batch mode. | |
1143 Vim: Read file from stdin (use -s for batch mode). | |
1144 | |
1145 -- Vim: End of options, only file names are following. | |
1146 | |
1147 --cmd {command} Vim: execute {command} before sourcing vimrc files. | |
1148 | |
1149 --echo-wid Vim: GTK+ echoes the Window ID on stdout | |
1150 | |
1151 --help Vim: show help message and exit. | |
1152 | |
1153 --literal Vim: take file names literally, don't expand wildcards. | |
1154 | |
1155 --nofork Vim: same as |-f| | |
1156 | |
1157 --noplugin[s] Vim: Skip loading plugins. | |
1158 | |
1159 --remote Vim: edit the files in another Vim server | |
1160 | |
1161 --remote-expr {expr} Vim: evaluate {expr} in another Vim server | |
1162 | |
1163 --remote-send {keys} Vim: send {keys} to a Vim server and exit | |
1164 | |
1165 --remote-silent {file} Vim: edit the files in another Vim server if possible | |
1166 | |
1167 --remote-wait Vim: edit the files in another Vim server and wait for it | |
1168 | |
1169 --remote-wait-silent Vim: like --remote-wait, no complaints if not possible | |
1170 | |
1171 --role {role} Vim: GTK+ 2: set role of main window | |
1172 | |
1173 --serverlist Vim: Output a list of Vim servers and exit | |
1174 | |
1175 --servername {name} Vim: Specify Vim server name | |
1176 | |
1177 --socketid {id} Vim: GTK window socket to run Vim in | |
1178 | |
1376 | 1179 --windowid {id} Vim: Win32 window ID to run Vim in |
1180 | |
7 | 1181 --version Vim: show version message and exit. |
1182 | |
1183 -? Vile: print usage summary and exit. | |
1184 | |
1185 -a Elvis: Load all specified file names into a window (use -o for | |
1186 Vim). | |
1187 | |
1188 -A Vim: Start in Arabic mode (when compiled with Arabic). | |
1189 | |
1190 -b {blksize} Elvis: Use {blksize} blocksize for the session file. | |
1191 -b Vim: set 'binary' mode. | |
1192 | |
1193 -C Vim: Compatible mode. | |
1194 | |
1195 -c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after | |
1196 loading the edit buffer. | |
1197 Vim: allow up to 10 "-c" arguments | |
1198 | |
1199 -d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled | |
1200 without the |+diff| feature} | |
1201 -d Vim: start with 'diff' set. |vimdiff| | |
1202 | |
1203 -dev {device} Vim: Use {device} for I/O (Amiga only). | |
1204 | |
1205 -D Vim: debug mode. | |
1206 | |
1207 -e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is | |
1208 called "ex". | |
1209 | |
1210 -E Vim: Start in improved Ex mode |gQ|, like "exim". | |
1211 | |
1212 -f Vim: Run GUI in foreground (Amiga: don't open new window). | |
1213 -f {session} Elvis: Use {session} as the session file. | |
1214 | |
1215 -F Vim: Start in Farsi mode (when compiled with Farsi). | |
1216 Nvi: Fast start, don't read the entire file when editing | |
1217 starts. | |
1218 | |
1219 -G {gui} Elvis: Use the {gui} as user interface. | |
1220 | |
1221 -g Vim: Start GUI. | |
1222 -g N Vile: start editing at line N | |
1223 | |
1224 -h Vim: Give help message. | |
1225 Vile: edit the help file | |
1226 | |
1227 -H Vim: start Hebrew mode (when compiled with it). | |
1228 | |
1229 -i Elvis: Start each window in Insert mode. | |
1230 -i {viminfo} Vim: Use {viminfo} for viminfo file. | |
1231 | |
16553
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1232 -L Vim: Same as "-r" {only in some versions of Vi: "List |
0e473e9e70c2
patch 8.1.1280: remarks about functionality not in Vi clutters the help
Bram Moolenaar <Bram@vim.org>
parents:
16443
diff
changeset
|
1233 recoverable edit sessions"}. |
7 | 1234 |
1235 -l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. | |
1236 | |
1237 -m Vim: Modifications not allowed to be written, resets 'write' | |
1238 option. | |
1239 | |
1240 -M Vim: Modifications not allowed, resets 'modifiable' and the | |
1241 'write' option. | |
1242 | |
1243 -N Vim: No-compatible mode. | |
1244 | |
1245 -n Vim: No swap file used. | |
1246 | |
1247 -nb[args] Vim: open a NetBeans interface connection | |
1248 | |
1249 -O[N] Vim: Like -o, but use vertically split windows. | |
1250 | |
1251 -o[N] Vim: Open [N] windows, or one for each file. | |
1252 | |
827 | 1253 -p[N] Vim: Open [N] tab pages, or one for each file. |
1254 | |
7 | 1255 -P {parent-title} Win32 Vim: open Vim inside a parent application window |
1256 | |
1257 -q {name} Vim: Use {name} for quickfix error file. | |
1258 -q{name} Vim: Idem. | |
1259 | |
1260 -R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. | |
1261 | |
1262 -r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. | |
1263 | |
1264 -S Nvi: Set 'secure' option. | |
1265 -S {script} Vim: source script after starting up. | |
1266 | |
1267 -s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. | |
1268 Elvis: Sets the 'safer' option. | |
1269 -s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex | |
1270 mode. | |
1271 -s {pattern} Vile: search for {pattern} | |
1272 | |
1273 -t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. | |
1274 -t{tag} Vim: Idem. | |
1275 | |
1276 -T {term} Vim: Set terminal name to {term}. | |
1277 | |
1278 -u {vimrc} Vim: Read initializations from {vimrc} file. | |
1279 | |
1280 -U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. | |
1281 | |
1282 -v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi | |
1283 terms). | |
1284 Vile: View mode, no changes possible. | |
1285 | |
1286 -V Elvis, Vim: Verbose mode. | |
1287 -V{nr} Vim: Verbose mode with specified level. | |
1288 | |
1289 -w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. | |
1290 -w{size} Nvi, Vi: Same as "-w {size}". | |
1291 -w {name} Vim: Write to script file {name} (must start with non-digit). | |
1292 | |
1293 -W {name} Vim: Append to script file {name}. | |
1294 | |
1295 -x Vi, Vim: Ask for encryption key. See |encryption|. | |
1296 | |
1297 -X Vim: Don't connect to the X server. | |
1298 | |
1299 -y Vim: Start in easy mode, like |evim|. | |
1300 | |
1301 -Z Vim: restricted mode | |
1302 | |
1303 @{cmdfile} Vile: use {cmdfile} as startup file. | |
1304 | |
160 | 1305 ============================================================================== |
16443
32a543152dc0
patch 8.1.1226: {not in Vi} remarks get in the way of useful help text
Bram Moolenaar <Bram@vim.org>
parents:
14519
diff
changeset
|
1306 8. POSIX compliance *posix* *posix-compliance* |
160 | 1307 |
1118 | 1308 In 2005 the POSIX test suite was run to check the compatibility of Vim. Most |
164 | 1309 of the test was executed properly. There are the few things where Vim |
166 | 1310 is not POSIX compliant, even when run in Vi compatibility mode. |
8061
abd64cf67bcf
commit https://github.com/vim/vim/commit/38a55639d603823efcf2d2fdf542dbffdeb60b75
Christian Brabandt <cb@256bit.org>
parents:
7228
diff
changeset
|
1311 *$VIM_POSIX* |
164 | 1312 Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX |
1313 flags when Vim starts up. This makes Vim run as POSIX as it can. That's | |
166 | 1314 a bit different from being Vi compatible. |
164 | 1315 |
18615 | 1316 You can find the Posix specification for Vi here: |
1317 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html | |
1318 And the related Ex specification: | |
1319 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html | |
1320 | |
164 | 1321 This is where Vim does not behave as POSIX specifies and why: |
1322 | |
160 | 1323 *posix-screen-size* |
164 | 1324 The $COLUMNS and $LINES environment variables are ignored by Vim if |
1325 the size can be obtained from the terminal in a more reliable way. | |
1326 Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule | |
1327 sizes obtained in another way. | |
160 | 1328 |
164 | 1329 The "{" and "}" commands don't stop at a "{" in the original Vi, but |
1330 POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want | |
1331 it the POSIX way. | |
1332 | |
1333 The "D", "o" and "O" commands accept a count. Also when repeated. | |
1334 Add the '#' flag to 'cpoptions' if you want to ignore the count. | |
160 | 1335 |
166 | 1336 The ":cd" command fails if the current buffer is modified when the '.' |
1337 flag is present in 'cpoptions'. | |
1338 | |
1339 There is no ATTENTION message, the "A" flag is added to 'shortmess'. | |
1340 | |
1341 These are remarks about running the POSIX test suite: | |
1342 - vi test 33 sometimes fails for unknown reasons | |
1343 - vi test 250 fails; behavior will be changed in a new revision | |
1344 http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html | |
2608
7d8af31066c8
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
2596
diff
changeset
|
1345 (link no longer works, perhaps it's now: |
7d8af31066c8
Updated runtime files and translations.
Bram Moolenaar <bram@vim.org>
parents:
2596
diff
changeset
|
1346 https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) |
166 | 1347 - vi test 310 fails; exit code non-zero when any error occurred? |
1348 - ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. | |
1349 - ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent | |
1350 mode and $EXINIT isn't used. | |
1351 - ex tests 76, 78 fail because echo is used instead of printf. (fixed) | |
1352 Also: problem with \s not changed to space. | |
1353 - ex test 355 fails because 'window' isn't used for "30z". | |
1354 - ex test 368 fails because shell command isn't echoed in silent mode. | |
1355 - ex test 394 fails because "=" command output isn't visible in silent mode. | |
1356 - ex test 411 fails because test file is wrong, contains stray ':'. | |
1357 - ex test 475 and 476 fail because reprint output isn't visible in silent mode. | |
1358 - ex test 480 and 481 fail because the tags file has spaces instead of a tab. | |
1359 - ex test 502 fails because .exrc isn't read in silent mode. | |
1360 - ex test 509 fails because .exrc isn't read in silent mode. and exit code is | |
1361 1 instead of 2. | |
1362 - ex test 534 fails because .exrc isn't read in silent mode. | |
1363 | |
160 | 1364 |
14519 | 1365 vim:tw=78:ts=8:noet:ft=help:norl: |