fork for IVI
[profile/ivi/vim.git] / runtime / doc / options.txt
1 *options.txt*   For Vim version 7.3.  Last change: 2011 Dec 14
2
3
4                   VIM REFERENCE MANUAL    by Bram Moolenaar
5
6
7 Options                                                 *options*
8
9 1. Setting options                      |set-option|
10 2. Automatically setting options        |auto-setting|
11 3. Options summary                      |option-summary|
12
13 For an overview of options see help.txt |option-list|.
14
15 Vim has a number of internal variables and switches which can be set to
16 achieve special effects.  These options come in three forms:
17         boolean         can only be on or off           *boolean* *toggle*
18         number          has a numeric value
19         string          has a string value
20
21 ==============================================================================
22 1. Setting options                                      *set-option* *E764*
23
24                                                         *:se* *:set*
25 :se[t]                  Show all options that differ from their default value.
26
27 :se[t] all              Show all but terminal options.
28
29 :se[t] termcap          Show all terminal options.  Note that in the GUI the
30                         key codes are not shown, because they are generated
31                         internally and can't be changed.  Changing the terminal
32                         codes in the GUI is not useful either...
33
34                                                                 *E518* *E519*
35 :se[t] {option}?        Show value of {option}.
36
37 :se[t] {option}         Toggle option: set, switch it on.
38                         Number option: show value.
39                         String option: show value.
40
41 :se[t] no{option}       Toggle option: Reset, switch it off.
42
43                                                            *:set-!* *:set-inv*
44 :se[t] {option}!   or
45 :se[t] inv{option}      Toggle option: Invert value. {not in Vi}
46
47                                 *:set-default* *:set-&* *:set-&vi* *:set-&vim*
48 :se[t] {option}&        Reset option to its default value.  May depend on the
49                         current value of 'compatible'. {not in Vi}
50 :se[t] {option}&vi      Reset option to its Vi default value. {not in Vi}
51 :se[t] {option}&vim     Reset option to its Vim default value. {not in Vi}
52
53 :se[t] all&             Set all options, except terminal options, to their
54                         default value.  The values of 'term', 'lines' and
55                         'columns' are not changed. {not in Vi}
56
57                                                 *:set-args* *E487* *E521*
58 :se[t] {option}={value}         or
59 :se[t] {option}:{value}
60                         Set string or number option to {value}.
61                         For numeric options the value can be given in decimal,
62                         hex (preceded with 0x) or octal (preceded with '0')
63                         (hex and octal are only available for machines which
64                         have the strtol() function).
65                         The old value can be inserted by typing 'wildchar' (by
66                         default this is a <Tab> or CTRL-E if 'compatible' is
67                         set).  See |cmdline-completion|.
68                         White space between {option} and '=' is allowed and
69                         will be ignored.  White space between '=' and {value}
70                         is not allowed.
71                         See |option-backslash| for using white space and
72                         backslashes in {value}.
73
74 :se[t] {option}+={value}                                *:set+=*
75                         Add the {value} to a number option, or append the
76                         {value} to a string option.  When the option is a
77                         comma separated list, a comma is added, unless the
78                         value was empty.
79                         If the option is a list of flags, superfluous flags
80                         are removed.  When adding a flag that was already
81                         present the option value doesn't change.
82                         Also see |:set-args| above.
83                         {not in Vi}
84
85 :se[t] {option}^={value}                                *:set^=*
86                         Multiply the {value} to a number option, or prepend
87                         the {value} to a string option.  When the option is a
88                         comma separated list, a comma is added, unless the
89                         value was empty.
90                         Also see |:set-args| above.
91                         {not in Vi}
92
93 :se[t] {option}-={value}                                *:set-=*
94                         Subtract the {value} from a number option, or remove
95                         the {value} from a string option, if it is there.
96                         If the {value} is not found in a string option, there
97                         is no error or warning.  When the option is a comma
98                         separated list, a comma is deleted, unless the option
99                         becomes empty.
100                         When the option is a list of flags, {value} must be
101                         exactly as they appear in the option.  Remove flags
102                         one by one to avoid problems.
103                         Also see |:set-args| above.
104                         {not in Vi}
105
106 The {option} arguments to ":set" may be repeated.  For example: >
107         :set ai nosi sw=3 ts=3
108 If you make an error in one of the arguments, an error message will be given
109 and the following arguments will be ignored.
110
111                                                         *:set-verbose*
112 When 'verbose' is non-zero, displaying an option value will also tell where it
113 was last set.  Example: >
114         :verbose set shiftwidth cindent?
115 <         shiftwidth=4 ~
116                   Last set from modeline ~
117           cindent ~
118                   Last set from /usr/local/share/vim/vim60/ftplugin/c.vim ~
119 This is only done when specific option values are requested, not for ":verbose
120 set all" or ":verbose set" without an argument.
121 When the option was set by hand there is no "Last set" message.
122 When the option was set while executing a function, user command or
123 autocommand, the script in which it was defined is reported.
124 Note that an option may also have been set as a side effect of setting
125 'compatible'.
126 A few special texts:
127         Last set from modeline ~
128                 Option was set in a |modeline|.
129         Last set from --cmd argument ~
130                 Option was set with command line argument |--cmd| or +.
131         Last set from -c argument ~
132                 Option was set with command line argument |-c|, +, |-S| or
133                 |-q|.
134         Last set from environment variable ~
135                 Option was set from an environment variable, $VIMINIT,
136                 $GVIMINIT or $EXINIT.
137         Last set from error handler ~
138                 Option was cleared when evaluating it resulted in an error.
139
140 {not available when compiled without the |+eval| feature}
141
142                                                         *:set-termcap* *E522*
143 For {option} the form "t_xx" may be used to set a terminal option.  This will
144 override the value from the termcap.  You can then use it in a mapping.  If
145 the "xx" part contains special characters, use the <t_xx> form: >
146         :set <t_#4>=^[Ot
147 This can also be used to translate a special code for a normal key.  For
148 example, if Alt-b produces <Esc>b, use this: >
149         :set <M-b>=^[b
150 (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it)
151 The advantage over a mapping is that it works in all situations.
152
153 You can define any key codes, e.g.: >
154         :set t_xy=^[foo;
155 There is no warning for using a name that isn't recognized.  You can map these
156 codes as you like: >
157         :map <t_xy> something
158 <                                                               *E846*
159 When a key code is not set, it's like it does not exist.  Trying to get its
160 value will result in an error: >
161         :set t_kb=
162         :set t_kb
163         E846: Key code not set: t_kb
164
165 The t_xx options cannot be set from a |modeline| or in the |sandbox|, for
166 security reasons.
167
168 The listing from ":set" looks different from Vi.  Long string options are put
169 at the end of the list.  The number of options is quite large.  The output of
170 "set all" probably does not fit on the screen, causing Vim to give the
171 |more-prompt|.
172
173                                                         *option-backslash*
174 To include white space in a string option value it has to be preceded with a
175 backslash.  To include a backslash you have to use two.  Effectively this
176 means that the number of backslashes in an option value is halved (rounded
177 down).
178 A few examples: >
179    :set tags=tags\ /usr/tags        results in "tags /usr/tags"
180    :set tags=tags\\,file            results in "tags\,file"
181    :set tags=tags\\\ file           results in "tags\ file"
182
183 The "|" character separates a ":set" command from a following command.  To
184 include the "|" in the option value, use "\|" instead.  This example sets the
185 'titlestring' option to "hi|there": >
186    :set titlestring=hi\|there
187 This sets the 'titlestring' option to "hi" and 'iconstring' to "there": >
188    :set titlestring=hi|set iconstring=there
189
190 Similarly, the double quote character starts a comment.  To include the '"' in
191 the option value, use '\"' instead.  This example sets the 'titlestring'
192 option to 'hi "there"': >
193    :set titlestring=hi\ \"there\"
194
195 For MS-DOS and WIN32 backslashes in file names are mostly not removed.  More
196 precise: For options that expect a file name (those where environment
197 variables are expanded) a backslash before a normal file name character is not
198 removed.  But a backslash before a special character (space, backslash, comma,
199 etc.) is used like explained above.
200 There is one special situation, when the value starts with "\\": >
201    :set dir=\\machine\path          results in "\\machine\path"
202    :set dir=\\\\machine\\path       results in "\\machine\path"
203    :set dir=\\path\\file            results in "\\path\file" (wrong!)
204 For the first one the start is kept, but for the second one the backslashes
205 are halved.  This makes sure it works both when you expect backslashes to be
206 halved and when you expect the backslashes to be kept.  The third gives a
207 result which is probably not what you want.  Avoid it.
208
209                                 *add-option-flags* *remove-option-flags*
210                                 *E539* *E550* *E551* *E552*
211 Some options are a list of flags.  When you want to add a flag to such an
212 option, without changing the existing ones, you can do it like this: >
213    :set guioptions+=a
214 Remove a flag from an option like this: >
215    :set guioptions-=a
216 This removes the 'a' flag from 'guioptions'.
217 Note that you should add or remove one flag at a time.  If 'guioptions' has
218 the value "ab", using "set guioptions-=ba" won't work, because the string "ba"
219 doesn't appear.
220
221                            *:set_env* *expand-env* *expand-environment-var*
222 Environment variables in specific string options will be expanded.  If the
223 environment variable exists the '$' and the following environment variable
224 name is replaced with its value.  If it does not exist the '$' and the name
225 are not modified.  Any non-id character (not a letter, digit or '_') may
226 follow the environment variable name.  That character and what follows is
227 appended to the value of the environment variable.  Examples: >
228    :set term=$TERM.new
229    :set path=/usr/$INCLUDE,$HOME/include,.
230 When adding or removing a string from an option with ":set opt-=val" or ":set
231 opt+=val" the expansion is done before the adding or removing.
232
233
234 Handling of local options                       *local-options*
235
236 Some of the options only apply to a window or buffer.  Each window or buffer
237 has its own copy of this option, thus can each have their own value.  This
238 allows you to set 'list' in one window but not in another.  And set
239 'shiftwidth' to 3 in one buffer and 4 in another.
240
241 The following explains what happens to these local options in specific
242 situations.  You don't really need to know all of this, since Vim mostly uses
243 the option values you would expect.  Unfortunately, doing what the user
244 expects is a bit complicated...
245
246 When splitting a window, the local options are copied to the new window.  Thus
247 right after the split the contents of the two windows look the same.
248
249 When editing a new buffer, its local option values must be initialized.  Since
250 the local options of the current buffer might be specifically for that buffer,
251 these are not used.  Instead, for each buffer-local option there also is a
252 global value, which is used for new buffers.  With ":set" both the local and
253 global value is changed.  With "setlocal" only the local value is changed,
254 thus this value is not used when editing a new buffer.
255
256 When editing a buffer that has been edited before, the last used window
257 options are used again.  If this buffer has been edited in this window, the
258 values from back then are used.  Otherwise the values from the window where
259 the buffer was edited last are used.
260
261 It's possible to set a local window option specifically for a type of buffer.
262 When you edit another buffer in the same window, you don't want to keep
263 using these local window options.  Therefore Vim keeps a global value of the
264 local window options, which is used when editing another buffer.  Each window
265 has its own copy of these values.  Thus these are local to the window, but
266 global to all buffers in the window.  With this you can do: >
267         :e one
268         :set list
269         :e two
270 Now the 'list' option will also be set in "two", since with the ":set list"
271 command you have also set the global value. >
272         :set nolist
273         :e one
274         :setlocal list
275         :e two
276 Now the 'list' option is not set, because ":set nolist" resets the global
277 value, ":setlocal list" only changes the local value and ":e two" gets the
278 global value.  Note that if you do this next: >
279         :e one
280 You will not get back the 'list' value as it was the last time you edited
281 "one".  The options local to a window are not remembered for each buffer.
282
283                                                         *:setl* *:setlocal*
284 :setl[ocal] ...         Like ":set" but set only the value local to the
285                         current buffer or window.  Not all options have a
286                         local value.  If the option does not have a local
287                         value the global value is set.
288                         With the "all" argument: display local values for all
289                         local options.
290                         Without argument: Display local values for all local
291                         options which are different from the default.
292                         When displaying a specific local option, show the
293                         local value.  For a global/local boolean option, when
294                         the global value is being used, "--" is displayed
295                         before the option name.
296                         For a global option the global value is
297                         shown (but that might change in the future).
298                         {not in Vi}
299
300 :setl[ocal] {option}<   Set the local value of {option} to its global value by
301                         copying the value.
302                         {not in Vi}
303
304 :se[t] {option}<        Set the local value of {option} to its global value by
305                         making it empty.  Only makes sense for |global-local|
306                         options.
307                         {not in Vi}
308
309                                                         *:setg* *:setglobal*
310 :setg[lobal] ...        Like ":set" but set only the global value for a local
311                         option without changing the local value.
312                         When displaying an option, the global value is shown.
313                         With the "all" argument: display global values for all
314                         local options.
315                         Without argument: display global values for all local
316                         options which are different from the default.
317                         {not in Vi}
318
319 For buffer-local and window-local options:
320         Command          global value       local value ~
321       :set option=value      set                set
322  :setlocal option=value       -                 set
323 :setglobal option=value      set                 -
324       :set option?            -                display
325  :setlocal option?            -                display
326 :setglobal option?          display              -
327
328
329 Global options with a local value                       *global-local*
330
331 Options are global when you mostly use one value for all buffers and windows.
332 For some global options it's useful to sometimes have a different local value.
333 You can set the local value with ":setlocal".  That buffer or window will then
334 use the local value, while other buffers and windows continue using the global
335 value.
336
337 For example, you have two windows, both on C source code.  They use the global
338 'makeprg' option.  If you do this in one of the two windows: >
339         :set makeprg=gmake
340 then the other window will switch to the same value.  There is no need to set
341 the 'makeprg' option in the other C source window too.
342 However, if you start editing a Perl file in a new window, you want to use
343 another 'makeprg' for it, without changing the value used for the C source
344 files.  You use this command: >
345         :setlocal makeprg=perlmake
346 You can switch back to using the global value by making the local value empty: >
347         :setlocal makeprg=
348 This only works for a string option.  For a boolean option you need to use the
349 "<" flag, like this: >
350         :setlocal autoread<
351 Note that for non-boolean options using "<" copies the global value to the
352 local value, it doesn't switch back to using the global value (that matters
353 when the global value changes later).  You can also use: >
354         :set path<
355 This will make the local value of 'path' empty, so that the global value is
356 used.  Thus it does the same as: >
357         :setlocal path=
358 Note: In the future more global options can be made global-local.  Using
359 ":setlocal" on a global option might work differently then.
360
361
362 Setting the filetype
363
364 :setf[iletype] {filetype}                       *:setf* *:setfiletype*
365                         Set the 'filetype' option to {filetype}, but only if
366                         not done yet in a sequence of (nested) autocommands.
367                         This is short for: >
368                                 :if !did_filetype()
369                                 :  setlocal filetype={filetype}
370                                 :endif
371 <                       This command is used in a filetype.vim file to avoid
372                         setting the 'filetype' option twice, causing different
373                         settings and syntax files to be loaded.
374                         {not in Vi}
375
376                                 *option-window* *optwin*
377 :bro[wse] se[t]                 *:set-browse* *:browse-set* *:opt* *:options*
378 :opt[ions]              Open a window for viewing and setting all options.
379                         Options are grouped by function.
380                         Offers short help for each option.  Hit <CR> on the
381                         short help to open a help window with more help for
382                         the option.
383                         Modify the value of the option and hit <CR> on the
384                         "set" line to set the new value.  For window and
385                         buffer specific options, the last accessed window is
386                         used to set the option value in, unless this is a help
387                         window, in which case the window below help window is
388                         used (skipping the option-window).
389                         {not available when compiled without the |+eval| or
390                         |+autocmd| features}
391
392                                                                 *$HOME*
393 Using "~" is like using "$HOME", but it is only recognized at the start of an
394 option and after a space or comma.
395
396 On Unix systems "~user" can be used too.  It is replaced by the home directory
397 of user "user".  Example: >
398     :set path=~mool/include,/usr/include,.
399
400 On Unix systems the form "${HOME}" can be used too.  The name between {} can
401 contain non-id characters then.  Note that if you want to use this for the
402 "gf" command, you need to add the '{' and '}' characters to 'isfname'.
403
404 On MS-Windows, if $HOME is not defined as an environment variable, then
405 at runtime Vim will set it to the expansion of $HOMEDRIVE$HOMEPATH.
406
407 NOTE: expanding environment variables and "~/" is only done with the ":set"
408 command, not when assigning a value to an option with ":let".
409
410
411 Note the maximum length of an expanded option is limited.  How much depends on
412 the system, mostly it is something like 256 or 1024 characters.
413
414                                                         *:fix* *:fixdel*
415 :fix[del]               Set the value of 't_kD':
416                                 't_kb' is     't_kD' becomes    ~
417                                   CTRL-?        CTRL-H
418                                 not CTRL-?      CTRL-?
419
420                         (CTRL-? is 0177 octal, 0x7f hex) {not in Vi}
421
422                         If your delete key terminal code is wrong, but the
423                         code for backspace is alright, you can put this in
424                         your .vimrc: >
425                                 :fixdel
426 <                       This works no matter what the actual code for
427                         backspace is.
428
429                         If the backspace key terminal code is wrong you can
430                         use this: >
431                                 :if &term == "termname"
432                                 :  set t_kb=^V<BS>
433                                 :  fixdel
434                                 :endif
435 <                       Where "^V" is CTRL-V and "<BS>" is the backspace key
436                         (don't type four characters!).  Replace "termname"
437                         with your terminal name.
438
439                         If your <Delete> key sends a strange key sequence (not
440                         CTRL-? or CTRL-H) you cannot use ":fixdel".  Then use: >
441                                 :if &term == "termname"
442                                 :  set t_kD=^V<Delete>
443                                 :endif
444 <                       Where "^V" is CTRL-V and "<Delete>" is the delete key
445                         (don't type eight characters!).  Replace "termname"
446                         with your terminal name.
447
448                                                         *Linux-backspace*
449                         Note about Linux: By default the backspace key
450                         produces CTRL-?, which is wrong.  You can fix it by
451                         putting this line in your rc.local: >
452                                 echo "keycode 14 = BackSpace" | loadkeys
453 <
454                                                         *NetBSD-backspace*
455                         Note about NetBSD: If your backspace doesn't produce
456                         the right code, try this: >
457                                 xmodmap -e "keycode 22 = BackSpace"
458 <                       If this works, add this in your .Xmodmap file: >
459                                 keysym 22 = BackSpace
460 <                       You need to restart for this to take effect.
461
462 ==============================================================================
463 2. Automatically setting options                        *auto-setting*
464
465 Besides changing options with the ":set" command, there are three alternatives
466 to set options automatically for one or more files:
467
468 1. When starting Vim initializations are read from various places.  See
469    |initialization|.  Most of them are performed for all editing sessions,
470    and some of them depend on the directory where Vim is started.
471    You can create an initialization file with |:mkvimrc|, |:mkview| and
472    |:mksession|.
473 2. If you start editing a new file, the automatic commands are executed.
474    This can be used to set options for files matching a particular pattern and
475    many other things.  See |autocommand|.
476 3. If you start editing a new file, and the 'modeline' option is on, a
477    number of lines at the beginning and end of the file are checked for
478    modelines.  This is explained here.
479
480                                         *modeline* *vim:* *vi:* *ex:* *E520*
481 There are two forms of modelines.  The first form:
482         [text]{white}{vi:|vim:|ex:}[white]{options}
483
484 [text]          any text or empty
485 {white}         at least one blank character (<Space> or <Tab>)
486 {vi:|vim:|ex:}  the string "vi:", "vim:" or "ex:"
487 [white]         optional white space
488 {options}       a list of option settings, separated with white space or ':',
489                 where each part between ':' is the argument for a ":set"
490                 command (can be empty)
491
492 Example:
493    vi:noai:sw=3 ts=6 ~
494
495 The second form (this is compatible with some versions of Vi):
496
497         [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text]
498
499 [text]          any text or empty
500 {white}         at least one blank character (<Space> or <Tab>)
501 {vi:|vim:|ex:}  the string "vi:", "vim:" or "ex:"
502 [white]         optional white space
503 se[t]           the string "set " or "se " (note the space)
504 {options}       a list of options, separated with white space, which is the
505                 argument for a ":set" command
506 :               a colon
507 [text]          any text or empty
508
509 Example:
510    /* vim: set ai tw=75: */ ~
511
512 The white space before {vi:|vim:|ex:} is required.  This minimizes the chance
513 that a normal word like "lex:" is caught.  There is one exception: "vi:" and
514 "vim:" can also be at the start of the line (for compatibility with version
515 3.0).  Using "ex:" at the start of the line will be ignored (this could be
516 short for "example:").
517
518                                                         *modeline-local*
519 The options are set like with ":setlocal": The new value only applies to the
520 buffer and window that contain the file.  Although it's possible to set global
521 options from a modeline, this is unusual.  If you have two windows open and
522 the files in it set the same global option to a different value, the result
523 depends on which one was opened last.
524
525 When editing a file that was already loaded, only the window-local options
526 from the modeline are used.  Thus if you manually changed a buffer-local
527 option after opening the file, it won't be changed if you edit the same buffer
528 in another window.  But window-local options will be set.
529
530                                                         *modeline-version*
531 If the modeline is only to be used for some versions of Vim, the version
532 number can be specified where "vim:" is used:
533         vim{vers}:      version {vers} or later
534         vim<{vers}:     version before {vers}
535         vim={vers}:     version {vers}
536         vim>{vers}:     version after {vers}
537 {vers} is 600 for Vim 6.0 (hundred times the major version plus minor).
538 For example, to use a modeline only for Vim 6.0 and later:
539         /* vim600: set foldmethod=marker: */ ~
540 To use a modeline for Vim before version 5.7:
541         /* vim<570: set sw=4: */ ~
542 There can be no blanks between "vim" and the ":".
543
544
545 The number of lines that are checked can be set with the 'modelines' option.
546 If 'modeline' is off or 'modelines' is 0 no lines are checked.
547
548 Note that for the first form all of the rest of the line is used, thus a line
549 like:
550    /* vi:ts=4: */ ~
551 will give an error message for the trailing "*/".  This line is OK:
552    /* vi:set ts=4: */ ~
553
554 If an error is detected the rest of the line is skipped.
555
556 If you want to include a ':' in a set command precede it with a '\'.  The
557 backslash in front of the ':' will be removed.  Example:
558    /* vi:set dir=c\:\tmp: */ ~
559 This sets the 'dir' option to "c:\tmp".  Only a single backslash before the
560 ':' is removed.  Thus to include "\:" you have to specify "\\:".
561
562 No other commands than "set" are supported, for security reasons (somebody
563 might create a Trojan horse text file with modelines).  And not all options
564 can be set.  For some options a flag is set, so that when it's used the
565 |sandbox| is effective.  Still, there is always a small risk that a modeline
566 causes trouble.  E.g., when some joker sets 'textwidth' to 5 all your lines
567 are wrapped unexpectedly.  So disable modelines before editing untrusted text.
568 The mail ftplugin does this, for example.
569
570 Hint: If you would like to do something else than setting an option, you could
571 define an autocommand that checks the file for a specific string.  For
572 example: >
573         au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
574 And define a function SetVar() that does something with the line containing
575 "VAR".
576
577 ==============================================================================
578 3. Options summary                                      *option-summary*
579
580 In the list below all the options are mentioned with their full name and with
581 an abbreviation if there is one.  Both forms may be used.
582
583 In this document when a boolean option is "set" that means that ":set option"
584 is entered.  When an option is "reset", ":set nooption" is used.
585
586 For some options there are two default values: The "Vim default", which is
587 used when 'compatible' is not set, and the "Vi default", which is used when
588 'compatible' is set.
589
590 Most options are the same in all windows and buffers.  There are a few that
591 are specific to how the text is presented in a window.  These can be set to a
592 different value in each window.  For example the 'list' option can be set in
593 one window and reset in another for the same text, giving both types of view
594 at the same time.  There are a few options that are specific to a certain
595 file.  These can have a different value for each file or buffer.  For example
596 the 'textwidth' option can be 78 for a normal text file and 0 for a C
597 program.
598
599         global                  one option for all buffers and windows
600         local to window         each window has its own copy of this option
601         local to buffer         each buffer has its own copy of this option
602
603 When creating a new window the option values from the currently active window
604 are used as a default value for the window-specific options.  For the
605 buffer-specific options this depends on the 's' and 'S' flags in the
606 'cpoptions' option.  If 's' is included (which is the default) the values for
607 buffer options are copied from the currently active buffer when a buffer is
608 first entered.  If 'S' is present the options are copied each time the buffer
609 is entered, this is almost like having global options.  If 's' and 'S' are not
610 present, the options are copied from the currently active buffer when the
611 buffer is created.
612
613 Hidden options                                          *hidden-options*
614
615 Not all options are supported in all versions.  This depends on the supported
616 features and sometimes on the system.  A remark about this is in curly braces
617 below.  When an option is not supported it may still be set without getting an
618 error, this is called a hidden option.  You can't get the value of a hidden
619 option though, it is not stored.
620
621 To test if option "foo" can be used with ":set" use something like this: >
622         if exists('&foo')
623 This also returns true for a hidden option.  To test if option "foo" is really
624 supported use something like this: >
625         if exists('+foo')
626 <
627                                                         *E355*
628 A jump table for the options with a short description can be found at |Q_op|.
629
630                                         *'aleph'* *'al'* *aleph* *Aleph*
631 'aleph' 'al'            number  (default 128 for MS-DOS, 224 otherwise)
632                         global
633                         {not in Vi}
634                         {only available when compiled with the |+rightleft|
635                         feature}
636         The ASCII code for the first letter of the Hebrew alphabet.  The
637         routine that maps the keyboard in Hebrew mode, both in Insert mode
638         (when hkmap is set) and on the command-line (when hitting CTRL-_)
639         outputs the Hebrew characters in the range [aleph..aleph+26].
640         aleph=128 applies to PC code, and aleph=224 applies to ISO 8859-8.
641         See |rileft.txt|.
642
643                         *'allowrevins'* *'ari'* *'noallowrevins'* *'noari'*
644 'allowrevins' 'ari'     boolean (default off)
645                         global
646                         {not in Vi}
647                         {only available when compiled with the |+rightleft|
648                         feature}
649         Allow CTRL-_ in Insert and Command-line mode.  This is default off, to
650         avoid that users that accidentally type CTRL-_ instead of SHIFT-_ get
651         into reverse Insert mode, and don't know how to get out.  See
652         'revins'.
653         NOTE: This option is reset when 'compatible' is set.
654
655                          *'altkeymap'* *'akm'* *'noaltkeymap'* *'noakm'*
656 'altkeymap' 'akm'       boolean (default off)
657                         global
658                         {not in Vi}
659                         {only available when compiled with the |+farsi|
660                         feature}
661         When on, the second language is Farsi.  In editing mode CTRL-_ toggles
662         the keyboard map between Farsi and English, when 'allowrevins' set.
663
664         When off, the keyboard map toggles between Hebrew and English.  This
665         is useful to start the Vim in native mode i.e. English (left-to-right
666         mode) and have default second language Farsi or Hebrew (right-to-left
667         mode).  See |farsi.txt|.
668
669                                                 *'ambiwidth'* *'ambw'*
670 'ambiwidth' 'ambw'      string (default: "single")
671                         global
672                         {not in Vi}
673                         {only available when compiled with the |+multi_byte|
674                         feature}
675         Only effective when 'encoding' is "utf-8" or another Unicode encoding.
676         Tells Vim what to do with characters with East Asian Width Class
677         Ambiguous (such as Euro, Registered Sign, Copyright Sign, Greek
678         letters, Cyrillic letters).
679
680         There are currently two possible values:
681         "single":       Use the same width as characters in US-ASCII.  This is
682                         expected by most users.
683         "double":       Use twice the width of ASCII characters.
684                                                         *E834* *E835*
685         The value "double" cannot be used if 'listchars' or 'fillchars'
686         contains a character that would be double width.
687
688         There are a number of CJK fonts for which the width of glyphs for
689         those characters are solely based on how many octets they take in
690         legacy/traditional CJK encodings.  In those encodings, Euro,
691         Registered sign, Greek/Cyrillic letters are represented by two octets,
692         therefore those fonts have "wide" glyphs for them.  This is also
693         true of some line drawing characters used to make tables in text
694         file.  Therefore, when a CJK font is used for GUI Vim or
695         Vim is running inside a terminal (emulators) that uses a CJK font
696         (or Vim is run inside an xterm invoked with "-cjkwidth" option.),
697         this option should be set to "double" to match the width perceived
698         by Vim with the width of glyphs in the font.  Perhaps it also has
699         to be set to "double" under CJK Windows 9x/ME or Windows 2k/XP
700         when the system locale is set to one of CJK locales.  See Unicode
701         Standard Annex #11 (http://www.unicode.org/reports/tr11).
702
703                         *'antialias'* *'anti'* *'noantialias'* *'noanti'*
704 'antialias' 'anti'      boolean (default: off)
705                         global
706                         {not in Vi}
707                         {only available when compiled with GUI enabled
708                         on Mac OS X}
709         This option only has an effect in the GUI version of Vim on Mac OS X
710         v10.2 or later.  When on, Vim will use smooth ("antialiased") fonts,
711         which can be easier to read at certain sizes on certain displays.
712         Setting this option can sometimes cause problems if 'guifont' is set
713         to its default (empty string).
714
715                         *'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
716 'autochdir' 'acd'       boolean (default off)
717                         global
718                         {not in Vi}
719                         {only available when compiled with it, use
720                         exists("+autochdir") to check}
721         When on, Vim will change the current working directory whenever you
722         open a file, switch buffers, delete a buffer or open/close a window.
723         It will change to the directory containing the file which was opened
724         or selected.
725         This option is provided for backward compatibility with the Vim
726         released with Sun ONE Studio 4 Enterprise Edition.
727         Note: When this option is on some plugins may not work.
728
729                                 *'arabic'* *'arab'* *'noarabic'* *'noarab'*
730 'arabic' 'arab'         boolean (default off)
731                         local to window
732                         {not in Vi}
733                         {only available when compiled with the |+arabic|
734                         feature}
735         This option can be set to start editing Arabic text.
736         Setting this option will:
737         - Set the 'rightleft' option, unless 'termbidi' is set.
738         - Set the 'arabicshape' option, unless 'termbidi' is set.
739         - Set the 'keymap' option to "arabic"; in Insert mode CTRL-^ toggles
740           between typing English and Arabic key mapping.
741         - Set the 'delcombine' option
742         Note that 'encoding' must be "utf-8" for working with Arabic text.
743
744         Resetting this option will:
745         - Reset the 'rightleft' option.
746         - Disable the use of 'keymap' (without changing its value).
747         Note that 'arabicshape' and 'delcombine' are not reset (it is a global
748         option.
749         Also see |arabic.txt|.
750
751                                         *'arabicshape'* *'arshape'*
752                                         *'noarabicshape'* *'noarshape'*
753 'arabicshape' 'arshape' boolean (default on)
754                         global
755                         {not in Vi}
756                         {only available when compiled with the |+arabic|
757                         feature}
758         When on and 'termbidi' is off, the required visual character
759         corrections that need to take place for displaying the Arabic language
760         take affect.  Shaping, in essence, gets enabled; the term is a broad
761         one which encompasses:
762           a) the changing/morphing of characters based on their location
763              within a word (initial, medial, final and stand-alone).
764           b) the enabling of the ability to compose characters
765           c) the enabling of the required combining of some characters
766         When disabled the display shows each character's true stand-alone
767         form.
768         Arabic is a complex language which requires other settings, for
769         further details see |arabic.txt|.
770
771                         *'autoindent'* *'ai'* *'noautoindent'* *'noai'*
772 'autoindent' 'ai'       boolean (default off)
773                         local to buffer
774         Copy indent from current line when starting a new line (typing <CR>
775         in Insert mode or when using the "o" or "O" command).  If you do not
776         type anything on the new line except <BS> or CTRL-D and then type
777         <Esc>, CTRL-O or <CR>, the indent is deleted again.  Moving the cursor
778         to another line has the same effect, unless the 'I' flag is included
779         in 'cpoptions'.
780         When autoindent is on, formatting (with the "gq" command or when you
781         reach 'textwidth' in Insert mode) uses the indentation of the first
782         line.
783         When 'smartindent' or 'cindent' is on the indent is changed in
784         a different way.
785         The 'autoindent' option is reset when the 'paste' option is set.
786         {small difference from Vi: After the indent is deleted when typing
787         <Esc> or <CR>, the cursor position when moving up or down is after the
788         deleted indent; Vi puts the cursor somewhere in the deleted indent}.
789
790                                  *'autoread'* *'ar'* *'noautoread'* *'noar'*
791 'autoread' 'ar'         boolean (default off)
792                         global or local to buffer |global-local|
793                         {not in Vi}
794         When a file has been detected to have been changed outside of Vim and
795         it has not been changed inside of Vim, automatically read it again.
796         When the file has been deleted this is not done.  |timestamp|
797         If this option has a local value, use this command to switch back to
798         using the global value: >
799                 :set autoread<
800 <
801                                  *'autowrite'* *'aw'* *'noautowrite'* *'noaw'*
802 'autowrite' 'aw'        boolean (default off)
803                         global
804         Write the contents of the file, if it has been modified, on each
805         :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!,
806         :make, CTRL-] and CTRL-^ command; and when a :buffer, CTRL-O, CTRL-I,
807         '{A-Z0-9}, or `{A-Z0-9} command takes one to another file.
808         Note that for some commands the 'autowrite' option is not used, see
809         'autowriteall' for that.
810
811                          *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'*
812 'autowriteall' 'awa'    boolean (default off)
813                         global
814                         {not in Vi}
815         Like 'autowrite', but also used for commands ":edit", ":enew", ":quit",
816         ":qall", ":exit", ":xit", ":recover" and closing the Vim window.
817         Setting this option also implies that Vim behaves like 'autowrite' has
818         been set.
819
820                                                         *'background'* *'bg'*
821 'background' 'bg'       string  (default "dark" or "light", see below)
822                         global
823                         {not in Vi}
824         When set to "dark", Vim will try to use colors that look good on a
825         dark background.  When set to "light", Vim will try to use colors that
826         look good on a light background.  Any other value is illegal.
827         Vim tries to set the default value according to the terminal used.
828         This will not always be correct.
829         Setting this option does not change the background color, it tells Vim
830         what the background color looks like.  For changing the background
831         color, see |:hi-normal|.
832
833         When 'background' is set Vim will adjust the default color groups for
834         the new value.  But the colors used for syntax highlighting will not
835         change.                                 *g:colors_name*
836         When a color scheme is loaded (the "g:colors_name" variable is set)
837         setting 'background' will cause the color scheme to be reloaded.  If
838         the color scheme adjusts to the value of 'background' this will work.
839         However, if the color scheme sets 'background' itself the effect may
840         be undone.  First delete the "g:colors_name" variable when needed.
841
842         When setting 'background' to the default value with: >
843                 :set background&
844 <       Vim will guess the value.  In the GUI this should work correctly,
845         in other cases Vim might not be able to guess the right value.
846
847         When starting the GUI, the default value for 'background' will be
848         "light".  When the value is not set in the .gvimrc, and Vim detects
849         that the background is actually quite dark, 'background' is set to
850         "dark".  But this happens only AFTER the .gvimrc file has been read
851         (because the window needs to be opened to find the actual background
852         color).  To get around this, force the GUI window to be opened by
853         putting a ":gui" command in the .gvimrc file, before where the value
854         of 'background' is used (e.g., before ":syntax on").
855
856         For MS-DOS, Windows and OS/2 the default is "dark".
857         For other systems "dark" is used when 'term' is "linux",
858         "screen.linux", "cygwin" or "putty", or $COLORFGBG suggests a dark
859         background.  Otherwise the default is "light".
860
861         Normally this option would be set in the .vimrc file.  Possibly
862         depending on the terminal name.  Example: >
863                 :if &term == "pcterm"
864                 :  set background=dark
865                 :endif
866 <       When this option is set, the default settings for the highlight groups
867         will change.  To use other settings, place ":highlight" commands AFTER
868         the setting of the 'background' option.
869         This option is also used in the "$VIMRUNTIME/syntax/syntax.vim" file
870         to select the colors for syntax highlighting.  After changing this
871         option, you must load syntax.vim again to see the result.  This can be
872         done with ":syntax on".
873
874                                                         *'backspace'* *'bs'*
875 'backspace' 'bs'        string  (default "")
876                         global
877                         {not in Vi}
878         Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
879         mode.  This is a list of items, separated by commas.  Each item allows
880         a way to backspace over something:
881         value   effect  ~
882         indent  allow backspacing over autoindent
883         eol     allow backspacing over line breaks (join lines)
884         start   allow backspacing over the start of insert; CTRL-W and CTRL-U
885                 stop once at the start of insert.
886
887         When the value is empty, Vi compatible backspacing is used.
888
889         For backwards compatibility with version 5.4 and earlier:
890         value   effect  ~
891           0     same as ":set backspace=" (Vi compatible)
892           1     same as ":set backspace=indent,eol"
893           2     same as ":set backspace=indent,eol,start"
894
895         See |:fixdel| if your <BS> or <Del> key does not do what you want.
896         NOTE: This option is set to "" when 'compatible' is set.
897
898                                 *'backup'* *'bk'* *'nobackup'* *'nobk'*
899 'backup' 'bk'           boolean (default off)
900                         global
901                         {not in Vi}
902         Make a backup before overwriting a file.  Leave it around after the
903         file has been successfully written.  If you do not want to keep the
904         backup file, but you do want a backup while the file is being
905         written, reset this option and set the 'writebackup' option (this is
906         the default).  If you do not want a backup file at all reset both
907         options (use this if your file system is almost full).  See the
908         |backup-table| for more explanations.
909         When the 'backupskip' pattern matches, a backup is not made anyway.
910         When 'patchmode' is set, the backup may be renamed to become the
911         oldest version of a file.
912         NOTE: This option is reset when 'compatible' is set.
913
914                                                 *'backupcopy'* *'bkc'*
915 'backupcopy' 'bkc'      string  (Vi default for Unix: "yes", otherwise: "auto")
916                         global
917                         {not in Vi}
918         When writing a file and a backup is made, this option tells how it's
919         done.  This is a comma separated list of words.
920
921         The main values are:
922         "yes"   make a copy of the file and overwrite the original one
923         "no"    rename the file and write a new one
924         "auto"  one of the previous, what works best
925
926         Extra values that can be combined with the ones above are:
927         "breaksymlink"  always break symlinks when writing
928         "breakhardlink" always break hardlinks when writing
929
930         Making a copy and overwriting the original file:
931         - Takes extra time to copy the file.
932         + When the file has special attributes, is a (hard/symbolic) link or
933           has a resource fork, all this is preserved.
934         - When the file is a link the backup will have the name of the link,
935           not of the real file.
936
937         Renaming the file and writing a new one:
938         + It's fast.
939         - Sometimes not all attributes of the file can be copied to the new
940           file.
941         - When the file is a link the new file will not be a link.
942
943         The "auto" value is the middle way: When Vim sees that renaming file
944         is possible without side effects (the attributes can be passed on and
945         the file is not a link) that is used.  When problems are expected, a
946         copy will be made.
947
948         The "breaksymlink" and "breakhardlink" values can be used in
949         combination with any of "yes", "no" and "auto".  When included, they
950         force Vim to always break either symbolic or hard links by doing
951         exactly what the "no" option does, renaming the original file to
952         become the backup and writing a new file in its place.  This can be
953         useful for example in source trees where all the files are symbolic or
954         hard links and any changes should stay in the local source tree, not
955         be propagated back to the original source.
956                                                         *crontab*
957         One situation where "no" and "auto" will cause problems: A program
958         that opens a file, invokes Vim to edit that file, and then tests if
959         the open file was changed (through the file descriptor) will check the
960         backup file instead of the newly created file.  "crontab -e" is an
961         example.
962
963         When a copy is made, the original file is truncated and then filled
964         with the new text.  This means that protection bits, owner and
965         symbolic links of the original file are unmodified.  The backup file
966         however, is a new file, owned by the user who edited the file.  The
967         group of the backup is set to the group of the original file.  If this
968         fails, the protection bits for the group are made the same as for
969         others.
970
971         When the file is renamed this is the other way around: The backup has
972         the same attributes of the original file, and the newly written file
973         is owned by the current user.  When the file was a (hard/symbolic)
974         link, the new file will not!  That's why the "auto" value doesn't
975         rename when the file is a link.  The owner and group of the newly
976         written file will be set to the same ones as the original file, but
977         the system may refuse to do this.  In that case the "auto" value will
978         again not rename the file.
979
980                                                 *'backupdir'* *'bdir'*
981 'backupdir' 'bdir'      string  (default for Amiga: ".,t:",
982                                  for MS-DOS and Win32: ".,c:/tmp,c:/temp"
983                                  for Unix: ".,~/tmp,~/")
984                         global
985                         {not in Vi}
986         List of directories for the backup file, separated with commas.
987         - The backup file will be created in the first directory in the list
988           where this is possible.  The directory must exist, Vim will not
989           create it for you.
990         - Empty means that no backup file will be created ('patchmode' is
991           impossible!).  Writing may fail because of this.
992         - A directory "." means to put the backup file in the same directory
993           as the edited file.
994         - A directory starting with "./" (or ".\" for MS-DOS et al.) means to
995           put the backup file relative to where the edited file is.  The
996           leading "." is replaced with the path name of the edited file.
997           ("." inside a directory name has no special meaning).
998         - Spaces after the comma are ignored, other spaces are considered part
999           of the directory name.  To have a space at the start of a directory
1000           name, precede it with a backslash.
1001         - To include a comma in a directory name precede it with a backslash.
1002         - A directory name may end in an '/'.
1003         - Environment variables are expanded |:set_env|.
1004         - Careful with '\' characters, type one before a space, type two to
1005           get one in the option (see |option-backslash|), for example: >
1006             :set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
1007 <       - For backwards compatibility with Vim version 3.0 a '>' at the start
1008           of the option is removed.
1009         See also 'backup' and 'writebackup' options.
1010         If you want to hide your backup files on Unix, consider this value: >
1011                 :set backupdir=./.backup,~/.backup,.,/tmp
1012 <       You must create a ".backup" directory in each directory and in your
1013         home directory for this to work properly.
1014         The use of |:set+=| and |:set-=| is preferred when adding or removing
1015         directories from the list.  This avoids problems when a future version
1016         uses another default.
1017         This option cannot be set from a |modeline| or in the |sandbox|, for
1018         security reasons.
1019
1020                                                 *'backupext'* *'bex'* *E589*
1021 'backupext' 'bex'       string  (default "~", for VMS: "_")
1022                         global
1023                         {not in Vi}
1024         String which is appended to a file name to make the name of the
1025         backup file.  The default is quite unusual, because this avoids
1026         accidentally overwriting existing files with a backup file.  You might
1027         prefer using ".bak", but make sure that you don't have files with
1028         ".bak" that you want to keep.
1029         Only normal file name characters can be used, "/\*?[|<>" are illegal.
1030
1031         If you like to keep a lot of backups, you could use a BufWritePre
1032         autocommand to change 'backupext' just before writing the file to
1033         include a timestamp. >
1034                 :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~'
1035 <       Use 'backupdir' to put the backup in a different directory.
1036
1037                                                 *'backupskip'* *'bsk'*
1038 'backupskip' 'bsk'      string  (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
1039                         global
1040                         {not in Vi}
1041                         {not available when compiled without the |+wildignore|
1042                         feature}
1043         A list of file patterns.  When one of the patterns matches with the
1044         name of the file which is written, no backup file is created.  Both
1045         the specified file name and the full path name of the file are used.
1046         The pattern is used like with |:autocmd|, see |autocmd-patterns|.
1047         Watch out for special characters, see |option-backslash|.
1048         When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
1049         default value.  "/tmp/*" is only used for Unix.
1050
1051         Note that environment variables are not expanded.  If you want to use
1052         $HOME you must expand it explicitly, e.g.: >
1053                 :let backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
1054
1055 <       Note that the default also makes sure that "crontab -e" works (when a
1056         backup would be made by renaming the original file crontab won't see
1057         the newly created file).  Also see 'backupcopy' and |crontab|.
1058
1059                                                 *'balloondelay'* *'bdlay'*
1060 'balloondelay' 'bdlay'  number  (default: 600)
1061                         global
1062                         {not in Vi}
1063                         {only available when compiled with the |+balloon_eval|
1064                         feature}
1065         Delay in milliseconds before a balloon may pop up.  See |balloon-eval|.
1066
1067                        *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'*
1068 'ballooneval' 'beval'   boolean (default off)
1069                         global
1070                         {not in Vi}
1071                         {only available when compiled with the |+balloon_eval|
1072                         feature}
1073         Switch on the |balloon-eval| functionality.
1074
1075                                                      *'balloonexpr'* *'bexpr'*
1076 'balloonexpr' 'bexpr'   string  (default "")
1077                         global or local to buffer |global-local|
1078                         {not in Vi}
1079                         {only available when compiled with the |+balloon_eval|
1080                         feature}
1081         Expression for text to show in evaluation balloon.  It is only used
1082         when 'ballooneval' is on.  These variables can be used:
1083
1084         v:beval_bufnr   number of the buffer in which balloon is going to show
1085         v:beval_winnr   number of the window
1086         v:beval_lnum    line number
1087         v:beval_col     column number (byte index)
1088         v:beval_text    word under or after the mouse pointer
1089
1090         The evaluation of the expression must not have side effects!
1091         Example: >
1092     function! MyBalloonExpr()
1093         return 'Cursor is at line ' . v:beval_lnum .
1094                 \', column ' . v:beval_col .
1095                 \ ' of file ' .  bufname(v:beval_bufnr) .
1096                 \ ' on word "' . v:beval_text . '"'
1097     endfunction
1098     set bexpr=MyBalloonExpr()
1099     set ballooneval
1100 <
1101         NOTE: The balloon is displayed only if the cursor is on a text
1102         character.  If the result of evaluating 'balloonexpr' is not empty,
1103         Vim does not try to send a message to an external debugger (Netbeans
1104         or Sun Workshop).
1105
1106         The expression may be evaluated in the |sandbox|, see
1107         |sandbox-option|.
1108
1109         It is not allowed to change text or jump to another window while
1110         evaluating 'balloonexpr' |textlock|.
1111
1112         To check whether line breaks in the balloon text work use this check: >
1113                 if has("balloon_multiline")
1114 <       When they are supported "\n" characters will start a new line.  If the
1115         expression evaluates to a |List| this is equal to using each List item
1116         as a string and putting "\n" in between them.
1117
1118                                      *'binary'* *'bin'* *'nobinary'* *'nobin'*
1119 'binary' 'bin'          boolean (default off)
1120                         local to buffer
1121                         {not in Vi}
1122         This option should be set before editing a binary file.  You can also
1123         use the |-b| Vim argument.  When this option is switched on a few
1124         options will be changed (also when it already was on):
1125                 'textwidth'  will be set to 0
1126                 'wrapmargin' will be set to 0
1127                 'modeline'   will be off
1128                 'expandtab'  will be off
1129         Also, 'fileformat' and 'fileformats' options will not be used, the
1130         file is read and written like 'fileformat' was "unix" (a single <NL>
1131         separates lines).
1132         The 'fileencoding' and 'fileencodings' options will not be used, the
1133         file is read without conversion.
1134         NOTE: When you start editing a(nother) file while the 'bin' option is
1135         on, settings from autocommands may change the settings again (e.g.,
1136         'textwidth'), causing trouble when editing.  You might want to set
1137         'bin' again when the file has been loaded.
1138         The previous values of these options are remembered and restored when
1139         'bin' is switched from on to off.  Each buffer has its own set of
1140         saved option values.
1141         To edit a file with 'binary' set you can use the |++bin| argument.
1142         This avoids you have to do ":set bin", which would have effect for all
1143         files you edit.
1144         When writing a file the <EOL> for the last line is only written if
1145         there was one in the original file (normally Vim appends an <EOL> to
1146         the last line if there is none; this would make the file longer).  See
1147         the 'endofline' option.
1148
1149                         *'bioskey'* *'biosk'* *'nobioskey'* *'nobiosk'*
1150 'bioskey' 'biosk'       boolean (default on)
1151                         global
1152                         {not in Vi}  {only for MS-DOS}
1153         When on the BIOS is called to obtain a keyboard character.  This works
1154         better to detect CTRL-C, but only works for the console.  When using a
1155         terminal over a serial port reset this option.
1156         Also see |'conskey'|.
1157
1158                                                         *'bomb'* *'nobomb'*
1159 'bomb'                  boolean (default off)
1160                         local to buffer
1161                         {not in Vi}
1162                         {only available when compiled with the |+multi_byte|
1163                         feature}
1164         When writing a file and the following conditions are met, a BOM (Byte
1165         Order Mark) is prepended to the file:
1166         - this option is on
1167         - the 'binary' option is off
1168         - 'fileencoding' is "utf-8", "ucs-2", "ucs-4" or one of the little/big
1169           endian variants.
1170         Some applications use the BOM to recognize the encoding of the file.
1171         Often used for UCS-2 files on MS-Windows.  For other applications it
1172         causes trouble, for example: "cat file1 file2" makes the BOM of file2
1173         appear halfway the resulting file.  Gcc doesn't accept a BOM.
1174         When Vim reads a file and 'fileencodings' starts with "ucs-bom", a
1175         check for the presence of the BOM is done and 'bomb' set accordingly.
1176         Unless 'binary' is set, it is removed from the first line, so that you
1177         don't see it when editing.  When you don't change the options, the BOM
1178         will be restored when writing the file.
1179
1180                                                 *'breakat'* *'brk'*
1181 'breakat' 'brk'         string  (default " ^I!@*-+;:,./?")
1182                         global
1183                         {not in Vi}
1184                         {not available when compiled without the |+linebreak|
1185                         feature}
1186         This option lets you choose which characters might cause a line
1187         break if 'linebreak' is on.  Only works for ASCII and also for 8-bit
1188         characters when 'encoding' is an 8-bit encoding.
1189
1190                                                 *'browsedir'* *'bsdir'*
1191 'browsedir' 'bsdir'     string  (default: "last")
1192                         global
1193                         {not in Vi} {only for Motif, Athena, GTK, Mac and
1194                         Win32 GUI}
1195         Which directory to use for the file browser:
1196            last         Use same directory as with last file browser, where a
1197                         file was opened or saved.
1198            buffer       Use the directory of the related buffer.
1199            current      Use the current directory.
1200            {path}       Use the specified directory
1201
1202                                                 *'bufhidden'* *'bh'*
1203 'bufhidden' 'bh'        string (default: "")
1204                         local to buffer
1205                         {not in Vi}
1206                         {not available when compiled without the |+quickfix|
1207                         feature}
1208         This option specifies what happens when a buffer is no longer
1209         displayed in a window:
1210           <empty>       follow the global 'hidden' option
1211           hide          hide the buffer (don't unload it), also when 'hidden'
1212                         is not set
1213           unload        unload the buffer, also when 'hidden' is set or using
1214                         |:hide|
1215           delete        delete the buffer from the buffer list, also when
1216                         'hidden' is set or using |:hide|, like using
1217                         |:bdelete|
1218           wipe          wipe out the buffer from the buffer list, also when
1219                         'hidden' is set or using |:hide|, like using
1220                         |:bwipeout|
1221
1222         CAREFUL: when "unload", "delete" or "wipe" is used changes in a buffer
1223         are lost without a warning.  Also, these values may break autocommands
1224         that switch between buffers temporarily.
1225         This option is used together with 'buftype' and 'swapfile' to specify
1226         special kinds of buffers.   See |special-buffers|.
1227
1228                         *'buflisted'* *'bl'* *'nobuflisted'* *'nobl'* *E85*
1229 'buflisted' 'bl'        boolean (default: on)
1230                         local to buffer
1231                         {not in Vi}
1232         When this option is set, the buffer shows up in the buffer list.  If
1233         it is reset it is not used for ":bnext", "ls", the Buffers menu, etc.
1234         This option is reset by Vim for buffers that are only used to remember
1235         a file name or marks.  Vim sets it when starting to edit a buffer.
1236         But not when moving to a buffer with ":buffer".
1237
1238                                                 *'buftype'* *'bt'* *E382*
1239 'buftype' 'bt'          string (default: "")
1240                         local to buffer
1241                         {not in Vi}
1242                         {not available when compiled without the |+quickfix|
1243                         feature}
1244         The value of this option specifies the type of a buffer:
1245           <empty>       normal buffer
1246           nofile        buffer which is not related to a file and will not be
1247                         written
1248           nowrite       buffer which will not be written
1249           acwrite       buffer which will always be written with BufWriteCmd
1250                         autocommands. {not available when compiled without the
1251                         |+autocmd| feature}
1252           quickfix      quickfix buffer, contains list of errors |:cwindow|
1253                         or list of locations |:lwindow|
1254           help          help buffer (you are not supposed to set this
1255                         manually)
1256
1257         This option is used together with 'bufhidden' and 'swapfile' to
1258         specify special kinds of buffers.   See |special-buffers|.
1259
1260         Be careful with changing this option, it can have many side effects!
1261
1262         A "quickfix" buffer is only used for the error list and the location
1263         list.  This value is set by the |:cwindow| and |:lwindow| commands and
1264         you are not supposed to change it.
1265
1266         "nofile" and "nowrite" buffers are similar:
1267         both:           The buffer is not to be written to disk, ":w" doesn't
1268                         work (":w filename" does work though).
1269         both:           The buffer is never considered to be |'modified'|.
1270                         There is no warning when the changes will be lost, for
1271                         example when you quit Vim.
1272         both:           A swap file is only created when using too much memory
1273                         (when 'swapfile' has been reset there is never a swap
1274                         file).
1275         nofile only:    The buffer name is fixed, it is not handled like a
1276                         file name.  It is not modified in response to a |:cd|
1277                         command.
1278                                                         *E676*
1279         "acwrite" implies that the buffer name is not related to a file, like
1280         "nofile", but it will be written.  Thus, in contrast to "nofile" and
1281         "nowrite", ":w" does work and a modified buffer can't be abandoned
1282         without saving.  For writing there must be matching |BufWriteCmd|,
1283         |FileWriteCmd| or |FileAppendCmd| autocommands.
1284
1285                                                 *'casemap'* *'cmp'*
1286 'casemap' 'cmp'         string  (default: "internal,keepascii")
1287                         global
1288                         {not in Vi}
1289                         {only available when compiled with the |+multi_byte|
1290                         feature}
1291         Specifies details about changing the case of letters.  It may contain
1292         these words, separated by a comma:
1293         internal        Use internal case mapping functions, the current
1294                         locale does not change the case mapping.  This only
1295                         matters when 'encoding' is a Unicode encoding,
1296                         "latin1" or "iso-8859-15".  When "internal" is
1297                         omitted, the towupper() and towlower() system library
1298                         functions are used when available.
1299         keepascii       For the ASCII characters (0x00 to 0x7f) use the US
1300                         case mapping, the current locale is not effective.
1301                         This probably only matters for Turkish.
1302
1303                                                 *'cdpath'* *'cd'* *E344* *E346*
1304 'cdpath' 'cd'           string  (default: equivalent to $CDPATH or ",,")
1305                         global
1306                         {not in Vi}
1307                         {not available when compiled without the
1308                         |+file_in_path| feature}
1309         This is a list of directories which will be searched when using the
1310         |:cd| and |:lcd| commands, provided that the directory being searched
1311         for has a relative path, not an absolute part starting with "/", "./"
1312         or "../", the 'cdpath' option is not used then.
1313         The 'cdpath' option's value has the same form and semantics as
1314         |'path'|.  Also see |file-searching|.
1315         The default value is taken from $CDPATH, with a "," prepended to look
1316         in the current directory first.
1317         If the default value taken from $CDPATH is not what you want, include
1318         a modified version of the following command in your vimrc file to
1319         override it: >
1320           :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
1321 <       This option cannot be set from a |modeline| or in the |sandbox|, for
1322         security reasons.
1323         (parts of 'cdpath' can be passed to the shell to expand file names).
1324
1325                                                 *'cedit'*
1326 'cedit'                 string  (Vi default: "", Vim default: CTRL-F)
1327                         global
1328                         {not in Vi}
1329                         {not available when compiled without the |+vertsplit|
1330                         feature}
1331         The key used in Command-line Mode to open the command-line window.
1332         The default is CTRL-F when 'compatible' is off.
1333         Only non-printable keys are allowed.
1334         The key can be specified as a single character, but it is difficult to
1335         type.  The preferred way is to use the <> notation.  Examples: >
1336                 :set cedit=<C-Y>
1337                 :set cedit=<Esc>
1338 <       |Nvi| also has this option, but it only uses the first character.
1339         See |cmdwin|.
1340
1341                                 *'charconvert'* *'ccv'* *E202* *E214* *E513*
1342 'charconvert' 'ccv'     string (default "")
1343                         global
1344                         {only available when compiled with the |+multi_byte|
1345                         and |+eval| features}
1346                         {not in Vi}
1347         An expression that is used for character encoding conversion.  It is
1348         evaluated when a file that is to be read or has been written has a
1349         different encoding from what is desired.
1350         'charconvert' is not used when the internal iconv() function is
1351         supported and is able to do the conversion.  Using iconv() is
1352         preferred, because it is much faster.
1353         'charconvert' is not used when reading stdin |--|, because there is no
1354         file to convert from.  You will have to save the text in a file first.
1355         The expression must return zero or an empty string for success,
1356         non-zero for failure.
1357         The possible encoding names encountered are in 'encoding'.
1358         Additionally, names given in 'fileencodings' and 'fileencoding' are
1359         used.
1360         Conversion between "latin1", "unicode", "ucs-2", "ucs-4" and "utf-8"
1361         is done internally by Vim, 'charconvert' is not used for this.
1362         'charconvert' is also used to convert the viminfo file, if the 'c'
1363         flag is present in 'viminfo'.  Also used for Unicode conversion.
1364         Example: >
1365                 set charconvert=CharConvert()
1366                 fun CharConvert()
1367                   system("recode "
1368                         \ . v:charconvert_from . ".." . v:charconvert_to
1369                         \ . " <" . v:fname_in . " >" v:fname_out)
1370                   return v:shell_error
1371                 endfun
1372 <       The related Vim variables are:
1373                 v:charconvert_from      name of the current encoding
1374                 v:charconvert_to        name of the desired encoding
1375                 v:fname_in              name of the input file
1376                 v:fname_out             name of the output file
1377         Note that v:fname_in and v:fname_out will never be the same.
1378         Note that v:charconvert_from and v:charconvert_to may be different
1379         from 'encoding'.  Vim internally uses UTF-8 instead of UCS-2 or UCS-4.
1380         Encryption is not done by Vim when using 'charconvert'.  If you want
1381         to encrypt the file after conversion, 'charconvert' should take care
1382         of this.
1383         This option cannot be set from a |modeline| or in the |sandbox|, for
1384         security reasons.
1385
1386                                    *'cindent'* *'cin'* *'nocindent'* *'nocin'*
1387 'cindent' 'cin'         boolean (default off)
1388                         local to buffer
1389                         {not in Vi}
1390                         {not available when compiled without the |+cindent|
1391                         feature}
1392         Enables automatic C program indenting.  See 'cinkeys' to set the keys
1393         that trigger reindenting in insert mode and 'cinoptions' to set your
1394         preferred indent style.
1395         If 'indentexpr' is not empty, it overrules 'cindent'.
1396         If 'lisp' is not on and both 'indentexpr' and 'equalprg' are empty,
1397         the "=" operator indents using this algorithm rather than calling an
1398         external program.
1399         See |C-indenting|.
1400         When you don't like the way 'cindent' works, try the 'smartindent'
1401         option or 'indentexpr'.
1402         This option is not used when 'paste' is set.
1403         NOTE: This option is reset when 'compatible' is set.
1404
1405                                                         *'cinkeys'* *'cink'*
1406 'cinkeys' 'cink'        string  (default "0{,0},0),:,0#,!^F,o,O,e")
1407                         local to buffer
1408                         {not in Vi}
1409                         {not available when compiled without the |+cindent|
1410                         feature}
1411         A list of keys that, when typed in Insert mode, cause reindenting of
1412         the current line.  Only used if 'cindent' is on and 'indentexpr' is
1413         empty.
1414         For the format of this option see |cinkeys-format|.
1415         See |C-indenting|.
1416
1417                                                 *'cinoptions'* *'cino'*
1418 'cinoptions' 'cino'     string  (default "")
1419                         local to buffer
1420                         {not in Vi}
1421                         {not available when compiled without the |+cindent|
1422                         feature}
1423         The 'cinoptions' affect the way 'cindent' reindents lines in a C
1424         program.  See |cinoptions-values| for the values of this option, and
1425         |C-indenting| for info on C indenting in general.
1426
1427
1428                                                 *'cinwords'* *'cinw'*
1429 'cinwords' 'cinw'       string  (default "if,else,while,do,for,switch")
1430                         local to buffer
1431                         {not in Vi}
1432                         {not available when compiled without both the
1433                         |+cindent| and the |+smartindent| features}
1434         These keywords start an extra indent in the next line when
1435         'smartindent' or 'cindent' is set.  For 'cindent' this is only done at
1436         an appropriate place (inside {}).
1437         Note that 'ignorecase' isn't used for 'cinwords'.  If case doesn't
1438         matter, include the keyword both the uppercase and lowercase:
1439         "if,If,IF".
1440
1441                                                 *'clipboard'* *'cb'*
1442 'clipboard' 'cb'        string  (default "autoselect,exclude:cons\|linux"
1443                                                   for X-windows, "" otherwise)
1444                         global
1445                         {not in Vi}
1446                         {only in GUI versions or when the |+xterm_clipboard|
1447                         feature is included}
1448         This option is a list of comma separated names.
1449         These names are recognized:
1450
1451         unnamed         When included, Vim will use the clipboard register '*'
1452                         for all yank, delete, change and put operations which
1453                         would normally go to the unnamed register.  When a
1454                         register is explicitly specified, it will always be
1455                         used regardless of whether "unnamed" is in 'clipboard'
1456                         or not.  The clipboard register can always be
1457                         explicitly accessed using the "* notation.  Also see
1458                         |gui-clipboard|.
1459
1460         unnamedplus     A variant of "unnamed" flag which uses the clipboard
1461                         register '+' (|quoteplus|) instead of register '*' for
1462                         all operations except yank.  Yank shall copy the text
1463                         into register '+' and also into '*' when "unnamed" is
1464                         included.
1465                         Only available with the |+X11| feature.
1466                         Availability can be checked with: >
1467                                 if has('unnamedplus')
1468 <
1469         autoselect      Works like the 'a' flag in 'guioptions': If present,
1470                         then whenever Visual mode is started, or the Visual
1471                         area extended, Vim tries to become the owner of the
1472                         windowing system's global selection or put the
1473                         selected text on the clipboard used by the selection
1474                         register "*.  See |guioptions_a| and |quotestar| for
1475                         details.  When the GUI is active, the 'a' flag in
1476                         'guioptions' is used, when the GUI is not active, this
1477                         "autoselect" flag is used.
1478                         Also applies to the modeless selection.
1479
1480         autoselectml    Like "autoselect", but for the modeless selection
1481                         only.  Compare to the 'A' flag in 'guioptions'.
1482
1483         html            When the clipboard contains HTML, use this when
1484                         pasting.  When putting text on the clipboard, mark it
1485                         as HTML.  This works to copy rendered HTML from
1486                         Firefox, paste it as raw HTML in Vim, select the HTML
1487                         in Vim and paste it in a rich edit box in Firefox.
1488                         You probably want to add this only temporarily,
1489                         possibly use BufEnter autocommands.
1490                         Only supported for GTK version 2 and later.
1491                         Only available with the |+multi_byte| feature.
1492
1493         exclude:{pattern}
1494                         Defines a pattern that is matched against the name of
1495                         the terminal 'term'.  If there is a match, no
1496                         connection will be made to the X server.  This is
1497                         useful in this situation:
1498                         - Running Vim in a console.
1499                         - $DISPLAY is set to start applications on another
1500                           display.
1501                         - You do not want to connect to the X server in the
1502                           console, but do want this in a terminal emulator.
1503                         To never connect to the X server use: >
1504                                 exclude:.*
1505 <                       This has the same effect as using the |-X| argument.
1506                         Note that when there is no connection to the X server
1507                         the window title won't be restored and the clipboard
1508                         cannot be accessed.
1509                         The value of 'magic' is ignored, {pattern} is
1510                         interpreted as if 'magic' was on.
1511                         The rest of the option value will be used for
1512                         {pattern}, this must be the last entry.
1513
1514                                                 *'cmdheight'* *'ch'*
1515 'cmdheight' 'ch'        number  (default 1)
1516                         global
1517                         {not in Vi}
1518         Number of screen lines to use for the command-line.  Helps avoiding
1519         |hit-enter| prompts.
1520         The value of this option is stored with the tab page, so that each tab
1521         page can have a different value.
1522
1523                                                 *'cmdwinheight'* *'cwh'*
1524 'cmdwinheight' 'cwh'    number  (default 7)
1525                         global
1526                         {not in Vi}
1527                         {not available when compiled without the |+vertsplit|
1528                         feature}
1529         Number of screen lines to use for the command-line window. |cmdwin|
1530
1531                                                 *'colorcolumn'* *'cc'*
1532 'colorcolumn' 'cc'      string  (default "")
1533                         local to window
1534                         {not in Vi}
1535                         {not available when compiled without the |+syntax|
1536                         feature}
1537         'colorcolumn' is a comma separated list of screen columns that are
1538         highlighted with ColorColumn |hl-ColorColumn|.  Useful to align
1539         text.  Will make screen redrawing slower.
1540         The screen column can be an absolute number, or a number preceded with
1541         '+' or '-', which is added to or subtracted from 'textwidth'. >
1542
1543                 :set cc=+1  " highlight column after 'textwidth'
1544                 :set cc=+1,+2,+3  " highlight three columns after 'textwidth'
1545                 :hi ColorColumn ctermbg=lightgrey guibg=lightgrey
1546 <
1547         When 'textwidth' is zero then the items with '-' and '+' are not used.
1548         A maximum of 256 columns are highlighted.
1549
1550                                                 *'columns'* *'co'* *E594*
1551 'columns' 'co'          number  (default 80 or terminal width)
1552                         global
1553                         {not in Vi}
1554         Number of columns of the screen.  Normally this is set by the terminal
1555         initialization and does not have to be set by hand.  Also see
1556         |posix-screen-size|.
1557         When Vim is running in the GUI or in a resizable window, setting this
1558         option will cause the window size to be changed.  When you only want
1559         to use the size for the GUI, put the command in your |gvimrc| file.
1560         When you set this option and Vim is unable to change the physical
1561         number of columns of the display, the display may be messed up.  For
1562         the GUI it is always possible and Vim limits the number of columns to
1563         what fits on the screen.  You can use this command to get the widest
1564         window possible: >
1565                 :set columns=9999
1566 <       Minimum value is 12, maximum value is 10000.
1567
1568                                         *'comments'* *'com'* *E524* *E525*
1569 'comments' 'com'        string  (default
1570                                 "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-")
1571                         local to buffer
1572                         {not in Vi}
1573                         {not available when compiled without the |+comments|
1574                         feature}
1575         A comma separated list of strings that can start a comment line.  See
1576         |format-comments|.  See |option-backslash| about using backslashes to
1577         insert a space.
1578
1579                                         *'commentstring'* *'cms'* *E537*
1580 'commentstring' 'cms'   string  (default "/*%s*/")
1581                         local to buffer
1582                         {not in Vi}
1583                         {not available when compiled without the |+folding|
1584                         feature}
1585         A template for a comment.  The "%s" in the value is replaced with the
1586         comment text.  Currently only used to add markers for folding, see
1587         |fold-marker|.
1588
1589                         *'compatible'* *'cp'* *'nocompatible'* *'nocp'*
1590 'compatible' 'cp'       boolean (default on, off when a |vimrc| or |gvimrc|
1591                                                                 file is found)
1592                         global
1593                         {not in Vi}
1594         This option has the effect of making Vim either more Vi-compatible, or
1595         make Vim behave in a more useful way.
1596         This is a special kind of option, because when it's set or reset,
1597         other options are also changed as a side effect.  CAREFUL: Setting or
1598         resetting this option can have a lot of unexpected effects: Mappings
1599         are interpreted in another way, undo behaves differently, etc.  If you
1600         set this option in your vimrc file, you should probably put it at the
1601         very start.
1602         By default this option is on and the Vi defaults are used for the
1603         options.  This default was chosen for those people who want to use Vim
1604         just like Vi, and don't even (want to) know about the 'compatible'
1605         option.
1606         When a |vimrc| or |gvimrc| file is found while Vim is starting up,
1607         this option is switched off, and all options that have not been
1608         modified will be set to the Vim defaults.  Effectively, this means
1609         that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim
1610         defaults, otherwise it will use the Vi defaults.  (Note: This doesn't
1611         happen for the system-wide vimrc or gvimrc file, nor for a file given
1612         with the |-u| argument).  Also see |compatible-default| and
1613         |posix-compliance|.
1614         You can also set this option with the "-C" argument, and reset it with
1615         "-N".  See |-C| and |-N|.
1616         Switching this option off makes the Vim defaults be used for options
1617         that have a different Vi and Vim default value.  See the options
1618         marked with a '+' below.  Other options are not modified.
1619         At the moment this option is set, several other options will be set
1620         or reset to make Vim as Vi-compatible as possible.  See the table
1621         below.  This can be used if you want to revert to Vi compatible
1622         editing.
1623         See also 'cpoptions'.
1624
1625         option          + set value     effect  ~
1626
1627         'allowrevins'     off           no CTRL-_ command
1628         'backupcopy'      Unix: "yes"     backup file is a copy
1629                           others: "auto"  copy or rename backup file
1630         'backspace'       ""            normal backspace
1631         'backup'          off           no backup file
1632         'cindent'         off           no C code indentation
1633         'cedit'         + ""            no key to open the |cmdwin|
1634         'cpoptions'     + (all flags)   Vi-compatible flags
1635         'cscopetag'       off           don't use cscope for ":tag"
1636         'cscopetagorder'  0             see |cscopetagorder|
1637         'cscopeverbose'   off           see |cscopeverbose|
1638         'digraph'         off           no digraphs
1639         'esckeys'       + off           no <Esc>-keys in Insert mode
1640         'expandtab'       off           tabs not expanded to spaces
1641         'fileformats'   + ""            no automatic file format detection,
1642                           "dos,unix"    except for DOS, Windows and OS/2
1643         'formatoptions' + "vt"          Vi compatible formatting
1644         'gdefault'        off           no default 'g' flag for ":s"
1645         'history'       + 0             no commandline history
1646         'hkmap'           off           no Hebrew keyboard mapping
1647         'hkmapp'          off           no phonetic Hebrew keyboard mapping
1648         'hlsearch'        off           no highlighting of search matches
1649         'incsearch'       off           no incremental searching
1650         'indentexpr'      ""            no indenting by expression
1651         'insertmode'      off           do not start in Insert mode
1652         'iskeyword'     + "@,48-57,_"   keywords contain alphanumeric
1653                                                 characters and '_'
1654         'joinspaces'      on            insert 2 spaces after period
1655         'modeline'      + off           no modelines
1656         'more'          + off           no pauses in listings
1657         'revins'          off           no reverse insert
1658         'ruler'           off           no ruler
1659         'scrolljump'      1             no jump scroll
1660         'scrolloff'       0             no scroll offset
1661         'shiftround'      off           indent not rounded to shiftwidth
1662         'shortmess'     + ""            no shortening of messages
1663         'showcmd'       + off           command characters not shown
1664         'showmode'      + off           current mode not shown
1665         'smartcase'       off           no automatic ignore case switch
1666         'smartindent'     off           no smart indentation
1667         'smarttab'        off           no smart tab size
1668         'softtabstop'     0             tabs are always 'tabstop' positions
1669         'startofline'     on            goto startofline with some commands
1670         'tagrelative'   + off           tag file names are not relative
1671         'textauto'      + off           no automatic textmode detection
1672         'textwidth'       0             no automatic line wrap
1673         'tildeop'         off           tilde is not an operator
1674         'ttimeout'        off           no terminal timeout
1675         'whichwrap'     + ""            left-right movements don't wrap
1676         'wildchar'      + CTRL-E        only when the current value is <Tab>
1677                                         use CTRL-E for cmdline completion
1678         'writebackup'     on or off     depends on the |+writebackup| feature
1679
1680                                                 *'complete'* *'cpt'* *E535*
1681 'complete' 'cpt'        string  (default: ".,w,b,u,t,i")
1682                         local to buffer
1683                         {not in Vi}
1684         This option specifies how keyword completion |ins-completion| works
1685         when CTRL-P or CTRL-N are used.  It is also used for whole-line
1686         completion |i_CTRL-X_CTRL-L|.  It indicates the type of completion
1687         and the places to scan.  It is a comma separated list of flags:
1688         .       scan the current buffer ('wrapscan' is ignored)
1689         w       scan buffers from other windows
1690         b       scan other loaded buffers that are in the buffer list
1691         u       scan the unloaded buffers that are in the buffer list
1692         U       scan the buffers that are not in the buffer list
1693         k       scan the files given with the 'dictionary' option
1694         kspell  use the currently active spell checking |spell|
1695         k{dict} scan the file {dict}.  Several "k" flags can be given,
1696                 patterns are valid too.  For example: >
1697                         :set cpt=k/usr/dict/*,k~/spanish
1698 <       s       scan the files given with the 'thesaurus' option
1699         s{tsr}  scan the file {tsr}.  Several "s" flags can be given, patterns
1700                 are valid too.
1701         i       scan current and included files
1702         d       scan current and included files for defined name or macro
1703                 |i_CTRL-X_CTRL-D|
1704         ]       tag completion
1705         t       same as "]"
1706
1707         Unloaded buffers are not loaded, thus their autocmds |:autocmd| are
1708         not executed, this may lead to unexpected completions from some files
1709         (gzipped files for example).  Unloaded buffers are not scanned for
1710         whole-line completion.
1711
1712         The default is ".,w,b,u,t,i", which means to scan:
1713            1. the current buffer
1714            2. buffers in other windows
1715            3. other loaded buffers
1716            4. unloaded buffers
1717            5. tags
1718            6. included files
1719
1720         As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'-
1721         based expansion (e.g., dictionary |i_CTRL-X_CTRL-K|, included patterns
1722         |i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions).
1723
1724                                                 *'completefunc'* *'cfu'*
1725 'completefunc' 'cfu'    string  (default: empty)
1726                         local to buffer
1727                         {not in Vi}
1728                         {not available when compiled without the |+eval|
1729                         or |+insert_expand| features}
1730         This option specifies a function to be used for Insert mode completion
1731         with CTRL-X CTRL-U. |i_CTRL-X_CTRL-U|
1732         See |complete-functions| for an explanation of how the function is
1733         invoked and what it should return.
1734         This option cannot be set from a |modeline| or in the |sandbox|, for
1735         security reasons.
1736
1737                                                 *'completeopt'* *'cot'*
1738 'completeopt' 'cot'     string  (default: "menu,preview")
1739                         global
1740                         {not available when compiled without the
1741                         |+insert_expand| feature}
1742                         {not in Vi}
1743         A comma separated list of options for Insert mode completion
1744         |ins-completion|.  The supported values are:
1745
1746            menu     Use a popup menu to show the possible completions.  The
1747                     menu is only shown when there is more than one match and
1748                     sufficient colors are available.  |ins-completion-menu|
1749
1750            menuone  Use the popup menu also when there is only one match.
1751                     Useful when there is additional information about the
1752                     match, e.g., what file it comes from.
1753
1754            longest  Only insert the longest common text of the matches.  If
1755                     the menu is displayed you can use CTRL-L to add more
1756                     characters.  Whether case is ignored depends on the kind
1757                     of completion.  For buffer text the 'ignorecase' option is
1758                     used.
1759
1760            preview  Show extra information about the currently selected
1761                     completion in the preview window.  Only works in
1762                     combination with "menu" or "menuone".
1763
1764
1765                                                 *'concealcursor'* *'cocu'*
1766 'concealcursor' 'cocu'  string (default: "")
1767                         local to window
1768                         {not in Vi}
1769                         {not available when compiled without the |+conceal|
1770                         feature}
1771         Sets the modes in which text in the cursor line can also be concealed.
1772         When the current mode is listed then concealing happens just like in
1773         other lines.
1774           n             Normal mode
1775           v             Visual mode
1776           i             Insert mode
1777           c             Command line editing, for 'incsearch'
1778
1779         'v' applies to all lines in the Visual area, not only the cursor.
1780         A useful value is "nc".  This is used in help files.  So long as you
1781         are moving around text is concealed, but when starting to insert text
1782         or selecting a Visual area the concealed text is displayed, so that
1783         you can see what you are doing.
1784         Keep in mind that the cursor position is not always where it's
1785         displayed.  E.g., when moving vertically it may change column.
1786
1787
1788 'conceallevel' 'cole'           *'conceallevel'* *'cole'*
1789                         number (default 0)
1790                         local to window
1791                         {not in Vi}
1792                         {not available when compiled without the |+conceal|
1793                         feature}
1794         Determine how text with the "conceal" syntax attribute |:syn-conceal|
1795         is shown:
1796
1797         Value           Effect ~
1798         0               Text is shown normally
1799         1               Each block of concealed text is replaced with one
1800                         character.  If the syntax item does not have a custom
1801                         replacement character defined (see |:syn-cchar|) the
1802                         character defined in 'listchars' is used (default is a
1803                         space).
1804                         It is highlighted with the "Conceal" highlight group.
1805         2               Concealed text is completely hidden unless it has a
1806                         custom replacement character defined (see
1807                         |:syn-cchar|).
1808         3               Concealed text is completely hidden.
1809
1810         Note: in the cursor line concealed text is not hidden, so that you can
1811         edit and copy the text.  This can be changed with the 'concealcursor'
1812         option.
1813
1814                                 *'confirm'* *'cf'* *'noconfirm'* *'nocf'*
1815 'confirm' 'cf'          boolean (default off)
1816                         global
1817                         {not in Vi}
1818         When 'confirm' is on, certain operations that would normally
1819         fail because of unsaved changes to a buffer, e.g. ":q" and ":e",
1820         instead raise a |dialog| asking if you wish to save the current
1821         file(s).  You can still use a ! to unconditionally |abandon| a buffer.
1822         If 'confirm' is off you can still activate confirmation for one
1823         command only (this is most useful in mappings) with the |:confirm|
1824         command.
1825         Also see the |confirm()| function and the 'v' flag in 'guioptions'.
1826
1827                         *'conskey'* *'consk'* *'noconskey'* *'noconsk'*
1828 'conskey' 'consk'       boolean (default off)
1829                         global
1830                         {not in Vi}  {only for MS-DOS}
1831         When on direct console I/O is used to obtain a keyboard character.
1832         This should work in most cases.  Also see |'bioskey'|.  Together,
1833         three methods of console input are available:
1834         'conskey'   'bioskey'       action ~
1835            on        on or off      direct console input
1836            off          on          BIOS
1837            off          off         STDIN
1838
1839                         *'copyindent'* *'ci'* *'nocopyindent'* *'noci'*
1840 'copyindent' 'ci'       boolean (default off)
1841                         local to buffer
1842                         {not in Vi}
1843         Copy the structure of the existing lines indent when autoindenting a
1844         new line.  Normally the new indent is reconstructed by a series of
1845         tabs followed by spaces as required (unless |'expandtab'| is enabled,
1846         in which case only spaces are used).  Enabling this option makes the
1847         new line copy whatever characters were used for indenting on the
1848         existing line.  'expandtab' has no effect on these characters, a Tab
1849         remains a Tab.  If the new indent is greater than on the existing
1850         line, the remaining space is filled in the normal manner.
1851         NOTE: 'copyindent' is reset when 'compatible' is set.
1852         Also see 'preserveindent'.
1853
1854                                                 *'cpoptions'* *'cpo'*
1855 'cpoptions' 'cpo'       string  (Vim default: "aABceFs",
1856                                  Vi default:  all flags)
1857                         global
1858                         {not in Vi}
1859         A sequence of single character flags.  When a character is present
1860         this indicates vi-compatible behavior.  This is used for things where
1861         not being vi-compatible is mostly or sometimes preferred.
1862         'cpoptions' stands for "compatible-options".
1863         Commas can be added for readability.
1864         To avoid problems with flags that are added in the future, use the
1865         "+=" and "-=" feature of ":set" |add-option-flags|.
1866         NOTE: This option is set to the Vi default value when 'compatible' is
1867         set and to the Vim default value when 'compatible' is reset.
1868         NOTE: This option is set to the POSIX default value at startup when
1869         the Vi default value would be used and the $VIM_POSIX environment
1870         variable exists |posix|.  This means Vim tries to behave like the
1871         POSIX specification.
1872
1873             contains    behavior        ~
1874                                                                 *cpo-a*
1875                 a       When included, a ":read" command with a file name
1876                         argument will set the alternate file name for the
1877                         current window.
1878                                                                 *cpo-A*
1879                 A       When included, a ":write" command with a file name
1880                         argument will set the alternate file name for the
1881                         current window.
1882                                                                 *cpo-b*
1883                 b       "\|" in a ":map" command is recognized as the end of
1884                         the map command.  The '\' is included in the mapping,
1885                         the text after the '|' is interpreted as the next
1886                         command.  Use a CTRL-V instead of a backslash to
1887                         include the '|' in the mapping.  Applies to all
1888                         mapping, abbreviation, menu and autocmd commands.
1889                         See also |map_bar|.
1890                                                                 *cpo-B*
1891                 B       A backslash has no special meaning in mappings,
1892                         abbreviations and the "to" part of the menu commands.
1893                         Remove this flag to be able to use a backslash like a
1894                         CTRL-V.  For example, the command ":map X \<Esc>"
1895                         results in X being mapped to:
1896                                 'B' included:   "\^["    (^[ is a real <Esc>)
1897                                 'B' excluded:   "<Esc>"  (5 characters)
1898                                 ('<' excluded in both cases)
1899                                                                 *cpo-c*
1900                 c       Searching continues at the end of any match at the
1901                         cursor position, but not further than the start of the
1902                         next line.  When not present searching continues
1903                         one character from the cursor position.  With 'c'
1904                         "abababababab" only gets three matches when repeating
1905                         "/abab", without 'c' there are five matches.
1906                                                                 *cpo-C*
1907                 C       Do not concatenate sourced lines that start with a
1908                         backslash.  See |line-continuation|.
1909                                                                 *cpo-d*
1910                 d       Using "./" in the 'tags' option doesn't mean to use
1911                         the tags file relative to the current file, but the
1912                         tags file in the current directory.
1913                                                                 *cpo-D*
1914                 D       Can't use CTRL-K to enter a digraph after Normal mode
1915                         commands with a character argument, like |r|, |f| and
1916                         |t|.
1917                                                                 *cpo-e*
1918                 e       When executing a register with ":@r", always add a
1919                         <CR> to the last line, also when the register is not
1920                         linewise.  If this flag is not present, the register
1921                         is not linewise and the last line does not end in a
1922                         <CR>, then the last line is put on the command-line
1923                         and can be edited before hitting <CR>.
1924                                                                 *cpo-E*
1925                 E       It is an error when using "y", "d", "c", "g~", "gu" or
1926                         "gU" on an Empty region.  The operators only work when
1927                         at least one character is to be operate on.  Example:
1928                         This makes "y0" fail in the first column.
1929                                                                 *cpo-f*
1930                 f       When included, a ":read" command with a file name
1931                         argument will set the file name for the current buffer,
1932                         if the current buffer doesn't have a file name yet.
1933                                                                 *cpo-F*
1934                 F       When included, a ":write" command with a file name
1935                         argument will set the file name for the current
1936                         buffer, if the current buffer doesn't have a file name
1937                         yet.  Also see |cpo-P|.
1938                                                                 *cpo-g*
1939                 g       Goto line 1 when using ":edit" without argument.
1940                                                                 *cpo-H*
1941                 H       When using "I" on a line with only blanks, insert
1942                         before the last blank.  Without this flag insert after
1943                         the last blank.
1944                                                                 *cpo-i*
1945                 i       When included, interrupting the reading of a file will
1946                         leave it modified.
1947                                                                 *cpo-I*
1948                 I       When moving the cursor up or down just after inserting
1949                         indent for 'autoindent', do not delete the indent.
1950                                                                 *cpo-j*
1951                 j       When joining lines, only add two spaces after a '.',
1952                         not after '!' or '?'.  Also see 'joinspaces'.
1953                                                                 *cpo-J*
1954                 J       A |sentence| has to be followed by two spaces after
1955                         the '.', '!' or '?'.  A <Tab> is not recognized as
1956                         white space.
1957                                                                 *cpo-k*
1958                 k       Disable the recognition of raw key codes in
1959                         mappings, abbreviations, and the "to" part of menu
1960                         commands.  For example, if <Key> sends ^[OA (where ^[
1961                         is <Esc>), the command ":map X ^[OA" results in X
1962                         being mapped to:
1963                                 'k' included:   "^[OA"   (3 characters)
1964                                 'k' excluded:   "<Key>"  (one key code)
1965                         Also see the '<' flag below.
1966                                                                 *cpo-K*
1967                 K       Don't wait for a key code to complete when it is
1968                         halfway a mapping.  This breaks mapping <F1><F1> when
1969                         only part of the second <F1> has been read.  It
1970                         enables cancelling the mapping by typing <F1><Esc>.
1971                                                                 *cpo-l*
1972                 l       Backslash in a [] range in a search pattern is taken
1973                         literally, only "\]", "\^", "\-" and "\\" are special.
1974                         See |/[]|
1975                            'l' included: "/[ \t]"  finds <Space>, '\' and 't'
1976                            'l' excluded: "/[ \t]"  finds <Space> and <Tab>
1977                         Also see |cpo-\|.
1978                                                                 *cpo-L*
1979                 L       When the 'list' option is set, 'wrapmargin',
1980                         'textwidth', 'softtabstop' and Virtual Replace mode
1981                         (see |gR|) count a <Tab> as two characters, instead of
1982                         the normal behavior of a <Tab>.
1983                                                                 *cpo-m*
1984                 m       When included, a showmatch will always wait half a
1985                         second.  When not included, a showmatch will wait half
1986                         a second or until a character is typed.  |'showmatch'|
1987                                                                 *cpo-M*
1988                 M       When excluded, "%" matching will take backslashes into
1989                         account.  Thus in "( \( )" and "\( ( \)" the outer
1990                         parenthesis match.  When included "%" ignores
1991                         backslashes, which is Vi compatible.
1992                                                                 *cpo-n*
1993                 n       When included, the column used for 'number' and
1994                         'relativenumber' will also be used for text of wrapped
1995                         lines.
1996                                                                 *cpo-o*
1997                 o       Line offset to search command is not remembered for
1998                         next search.
1999                                                                 *cpo-O*
2000                 O       Don't complain if a file is being overwritten, even
2001                         when it didn't exist when editing it.  This is a
2002                         protection against a file unexpectedly created by
2003                         someone else.  Vi didn't complain about this.
2004                                                                 *cpo-p*
2005                 p       Vi compatible Lisp indenting.  When not present, a
2006                         slightly better algorithm is used.
2007                                                                 *cpo-P*
2008                 P       When included, a ":write" command that appends to a
2009                         file will set the file name for the current buffer, if
2010                         the current buffer doesn't have a file name yet and
2011                         the 'F' flag is also included |cpo-F|.
2012                                                                 *cpo-q*
2013                 q       When joining multiple lines leave the cursor at the
2014                         position where it would be when joining two lines.
2015                                                                 *cpo-r*
2016                 r       Redo ("." command) uses "/" to repeat a search
2017                         command, instead of the actually used search string.
2018                                                                 *cpo-R*
2019                 R       Remove marks from filtered lines.  Without this flag
2020                         marks are kept like |:keepmarks| was used.
2021                                                                 *cpo-s*
2022                 s       Set buffer options when entering the buffer for the
2023                         first time.  This is like it is in Vim version 3.0.
2024                         And it is the default.  If not present the options are
2025                         set when the buffer is created.
2026                                                                 *cpo-S*
2027                 S       Set buffer options always when entering a buffer
2028                         (except 'readonly', 'fileformat', 'filetype' and
2029                         'syntax').  This is the (most) Vi compatible setting.
2030                         The options are set to the values in the current
2031                         buffer.  When you change an option and go to another
2032                         buffer, the value is copied.  Effectively makes the
2033                         buffer options global to all buffers.
2034
2035                         's'    'S'     copy buffer options
2036                         no     no      when buffer created
2037                         yes    no      when buffer first entered (default)
2038                          X     yes     each time when buffer entered (vi comp.)
2039                                                                 *cpo-t*
2040                 t       Search pattern for the tag command is remembered for
2041                         "n" command.  Otherwise Vim only puts the pattern in
2042                         the history for search pattern, but doesn't change the
2043                         last used search pattern.
2044                                                                 *cpo-u*
2045                 u       Undo is Vi compatible.  See |undo-two-ways|.
2046                                                                 *cpo-v*
2047                 v       Backspaced characters remain visible on the screen in
2048                         Insert mode.  Without this flag the characters are
2049                         erased from the screen right away.  With this flag the
2050                         screen newly typed text overwrites backspaced
2051                         characters.
2052                                                                 *cpo-w*
2053                 w       When using "cw" on a blank character, only change one
2054                         character and not all blanks until the start of the
2055                         next word.
2056                                                                 *cpo-W*
2057                 W       Don't overwrite a readonly file.  When omitted, ":w!"
2058                         overwrites a readonly file, if possible.
2059                                                                 *cpo-x*
2060                 x       <Esc> on the command-line executes the command-line.
2061                         The default in Vim is to abandon the command-line,
2062                         because <Esc> normally aborts a command.  |c_<Esc>|
2063                                                                 *cpo-X*
2064                 X       When using a count with "R" the replaced text is
2065                         deleted only once.  Also when repeating "R" with "."
2066                         and a count.
2067                                                                 *cpo-y*
2068                 y       A yank command can be redone with ".".
2069                                                                 *cpo-Z*
2070                 Z       When using "w!" while the 'readonly' option is set,
2071                         don't reset 'readonly'.
2072                                                                 *cpo-!*
2073                 !       When redoing a filter command, use the last used
2074                         external command, whatever it was.  Otherwise the last
2075                         used -filter- command is used.
2076                                                                 *cpo-$*
2077                 $       When making a change to one line, don't redisplay the
2078                         line, but put a '$' at the end of the changed text.
2079                         The changed text will be overwritten when you type the
2080                         new text.  The line is redisplayed if you type any
2081                         command that moves the cursor from the insertion
2082                         point.
2083                                                                 *cpo-%*
2084                 %       Vi-compatible matching is done for the "%" command.
2085                         Does not recognize "#if", "#endif", etc.
2086                         Does not recognize "/*" and "*/".
2087                         Parens inside single and double quotes are also
2088                         counted, causing a string that contains a paren to
2089                         disturb the matching.  For example, in a line like
2090                         "if (strcmp("foo(", s))" the first paren does not
2091                         match the last one.  When this flag is not included,
2092                         parens inside single and double quotes are treated
2093                         specially.  When matching a paren outside of quotes,
2094                         everything inside quotes is ignored.  When matching a
2095                         paren inside quotes, it will find the matching one (if
2096                         there is one).  This works very well for C programs.
2097                         This flag is also used for other features, such as
2098                         C-indenting.
2099                                                                 *cpo--*
2100                 -       When included, a vertical movement command fails when
2101                         it would go above the first line or below the last
2102                         line.  Without it the cursor moves to the first or
2103                         last line, unless it already was in that line.
2104                         Applies to the commands "-", "k", CTRL-P, "+", "j",
2105                         CTRL-N, CTRL-J and ":1234".
2106                                                                 *cpo-+*
2107                 +       When included, a ":write file" command will reset the
2108                         'modified' flag of the buffer, even though the buffer
2109                         itself may still be different from its file.
2110                                                                 *cpo-star*
2111                 *       Use ":*" in the same way as ":@".  When not included,
2112                         ":*" is an alias for ":'<,'>", select the Visual area.
2113                                                                 *cpo-<*
2114                 <       Disable the recognition of special key codes in |<>|
2115                         form in mappings, abbreviations, and the "to" part of
2116                         menu commands.  For example, the command
2117                         ":map X <Tab>" results in X being mapped to:
2118                                 '<' included:   "<Tab>"  (5 characters)
2119                                 '<' excluded:   "^I"     (^I is a real <Tab>)
2120                         Also see the 'k' flag above.
2121                                                                 *cpo->*
2122                 >       When appending to a register, put a line break before
2123                         the appended text.
2124                                                                 *cpo-;*
2125                 ;       When using |,| or |;| to repeat the last |t| search
2126                         and the cursor is right in front of the searched
2127                         character, the cursor won't move. When not included,
2128                         the cursor would skip over it and jump to the
2129                         following occurence.
2130
2131         POSIX flags.  These are not included in the Vi default value, except
2132         when $VIM_POSIX was set on startup. |posix|
2133
2134             contains    behavior        ~
2135                                                                 *cpo-#*
2136                 #       A count before "D", "o" and "O" has no effect.
2137                                                                 *cpo-&*
2138                 &       When ":preserve" was used keep the swap file when
2139                         exiting normally while this buffer is still loaded.
2140                         This flag is tested when exiting.
2141                                                                 *cpo-\*
2142                 \       Backslash in a [] range in a search pattern is taken
2143                         literally, only "\]" is special  See |/[]|
2144                            '\' included: "/[ \-]"  finds <Space>, '\' and '-'
2145                            '\' excluded: "/[ \-]"  finds <Space> and '-'
2146                         Also see |cpo-l|.
2147                                                                 *cpo-/*
2148                 /       When "%" is used as the replacement string in a |:s|
2149                         command, use the previous replacement string. |:s%|
2150                                                                 *cpo-{*
2151                 {       The |{| and |}| commands also stop at a "{" character
2152                         at the start of a line.
2153                                                                 *cpo-.*
2154                 .       The ":chdir" and ":cd" commands fail if the current
2155                         buffer is modified, unless ! is used.  Vim doesn't
2156                         need this, since it remembers the full path of an
2157                         opened file.
2158                                                                 *cpo-bar*
2159                 |       The value of the $LINES and $COLUMNS environment
2160                         variables overrule the terminal size values obtained
2161                         with system specific functions.
2162
2163
2164                                                 *'cryptmethod'* *'cm'*
2165 'cryptmethod'           string  (default "zip")
2166                         global or local to buffer |global-local|
2167                         {not in Vi}
2168         Method used for encryption when the buffer is written to a file:
2169                                                         *pkzip*
2170            zip          PkZip compatible method.  A weak kind of encryption.
2171                         Backwards compatible with Vim 7.2 and older.
2172                                                         *blowfish*
2173            blowfish     Blowfish method.  Strong encryption.  Requires Vim 7.3
2174                         or later, files can NOT be read by Vim 7.2 and older.
2175                         This adds a "seed" to the file, every time you write
2176                         the file the encrypted bytes will be different.
2177
2178         When reading an encrypted file 'cryptmethod' will be set automatically
2179         to the detected method of the file being read.  Thus if you write it
2180         without changing 'cryptmethod' the same method will be used.
2181         Changing 'cryptmethod' does not mark the file as modified, you have to
2182         explicitly write it, you don't get a warning unless there are other
2183         modifications.  Also see |:X|.
2184
2185         When setting the global value to an empty string, it will end up with
2186         the value "zip".  When setting the local value to an empty string the
2187         buffer will use the global value.
2188
2189         When a new encryption method is added in a later version of Vim, and
2190         the current version does not recognize it, you will get *E821* .
2191         You need to edit this file with the later version of Vim.
2192
2193
2194                                                 *'cscopepathcomp'* *'cspc'*
2195 'cscopepathcomp' 'cspc' number  (default 0)
2196                         global
2197                         {not available when compiled without the |+cscope|
2198                         feature}
2199                         {not in Vi}
2200         Determines how many components of the path to show in a list of tags.
2201         See |cscopepathcomp|.
2202
2203                                                 *'cscopeprg'* *'csprg'*
2204 'cscopeprg' 'csprg'     string  (default "cscope")
2205                         global
2206                         {not available when compiled without the |+cscope|
2207                         feature}
2208                         {not in Vi}
2209         Specifies the command to execute cscope.  See |cscopeprg|.
2210         This option cannot be set from a |modeline| or in the |sandbox|, for
2211         security reasons.
2212
2213                                                 *'cscopequickfix'* *'csqf'*
2214 'cscopequickfix' 'csqf' string  (default "")
2215                         global
2216                         {not available when compiled without the |+cscope|
2217                         or |+quickfix| features}
2218                         {not in Vi}
2219         Specifies whether to use quickfix window to show cscope results.
2220         See |cscopequickfix|.
2221
2222                                                 *'cscoperelative'* *'csre'*
2223 'cscoperelative' 'csre' boolean (default off)
2224                         global
2225                         {not available when compiled without the |+cscope|
2226                         feature}
2227                         {not in Vi}
2228         In the absence of a prefix (-P) for cscope. setting this option enables
2229         to use the basename of cscope.out path as the prefix.
2230         See |cscoperelative|.
2231
2232                                 *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
2233 'cscopetag' 'cst'       boolean (default off)
2234                         global
2235                         {not available when compiled without the |+cscope|
2236                         feature}
2237                         {not in Vi}
2238         Use cscope for tag commands.  See |cscope-options|.
2239         NOTE: This option is reset when 'compatible' is set.
2240
2241                                                 *'cscopetagorder'* *'csto'*
2242 'cscopetagorder' 'csto' number  (default 0)
2243                         global
2244                         {not available when compiled without the |+cscope|
2245                         feature}
2246                         {not in Vi}
2247         Determines the order in which ":cstag" performs a search.  See
2248         |cscopetagorder|.
2249         NOTE: This option is set to 0 when 'compatible' is set.
2250
2251                                         *'cscopeverbose'* *'csverb'*
2252                                         *'nocscopeverbose'* *'nocsverb'*
2253 'cscopeverbose' 'csverb' boolean (default off)
2254                         global
2255                         {not available when compiled without the |+cscope|
2256                         feature}
2257                         {not in Vi}
2258         Give messages when adding a cscope database.  See |cscopeverbose|.
2259         NOTE: This option is reset when 'compatible' is set.
2260
2261                         *'cursorbind'* *'crb'* *'nocursorbind'* *'nocrb'*
2262 'cursorbind' 'crb'      boolean  (default off)
2263                         local to window
2264                         {not in Vi}
2265                         {not available when compiled without the |+cursorbind|
2266                         feature}
2267         When this option is set, as the cursor in the current
2268         window moves other cursorbound windows (windows that also have
2269         this option set) move their cursors to the corresponding line and
2270         column.  This option is useful for viewing the
2271         differences between two versions of a file (see 'diff'); in diff mode,
2272         inserted and deleted lines (though not characters within a line) are
2273         taken into account.
2274
2275
2276                         *'cursorcolumn'* *'cuc'* *'nocursorcolumn'* *'nocuc'*
2277 'cursorcolumn' 'cuc'    boolean (default off)
2278                         local to window
2279                         {not in Vi}
2280                         {not available when compiled without the |+syntax|
2281                         feature}
2282         Highlight the screen column of the cursor with CursorColumn
2283         |hl-CursorColumn|.  Useful to align text.  Will make screen redrawing
2284         slower.
2285         If you only want the highlighting in the current window you can use
2286         these autocommands: >
2287                 au WinLeave * set nocursorline nocursorcolumn
2288                 au WinEnter * set cursorline cursorcolumn
2289 <
2290
2291                         *'cursorline'* *'cul'* *'nocursorline'* *'nocul'*
2292 'cursorline' 'cul'      boolean (default off)
2293                         local to window
2294                         {not in Vi}
2295                         {not available when compiled without the |+syntax|
2296                         feature}
2297         Highlight the screen line of the cursor with CursorLine
2298         |hl-CursorLine|.  Useful to easily spot the cursor.  Will make screen
2299         redrawing slower.
2300         When Visual mode is active the highlighting isn't used to make it
2301         easier to see the selected text.
2302
2303
2304                                                 *'debug'*
2305 'debug'                 string  (default "")
2306                         global
2307                         {not in Vi}
2308         These values can be used:
2309         msg     Error messages that would otherwise be omitted will be given
2310                 anyway.
2311         throw   Error messages that would otherwise be omitted will be given
2312                 anyway and also throw an exception and set |v:errmsg|.
2313         beep    A message will be given when otherwise only a beep would be
2314                 produced.
2315         The values can be combined, separated by a comma.
2316         "msg" and "throw" are useful for debugging 'foldexpr', 'formatexpr' or
2317         'indentexpr'.
2318
2319                                                 *'define'* *'def'*
2320 'define' 'def'          string  (default "^\s*#\s*define")
2321                         global or local to buffer |global-local|
2322                         {not in Vi}
2323         Pattern to be used to find a macro definition.  It is a search
2324         pattern, just like for the "/" command.  This option is used for the
2325         commands like "[i" and "[d" |include-search|.  The 'isident' option is
2326         used to recognize the defined name after the match:
2327                 {match with 'define'}{non-ID chars}{defined name}{non-ID char}
2328         See |option-backslash| about inserting backslashes to include a space
2329         or backslash.
2330         The default value is for C programs.  For C++ this value would be
2331         useful, to include const type declarations: >
2332                 ^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\)
2333 <       When using the ":set" command, you need to double the backslashes!
2334
2335                         *'delcombine'* *'deco'* *'nodelcombine'* *'nodeco'*
2336 'delcombine' 'deco'     boolean (default off)
2337                         global
2338                         {not in Vi}
2339                         {only available when compiled with the |+multi_byte|
2340                         feature}
2341         If editing Unicode and this option is set, backspace and Normal mode
2342         "x" delete each combining character on its own.  When it is off (the
2343         default) the character along with its combining characters are
2344         deleted.
2345         Note: When 'delcombine' is set "xx" may work different from "2x"!
2346
2347         This is useful for Arabic, Hebrew and many other languages where one
2348         may have combining characters overtop of base characters, and want
2349         to remove only the combining ones.
2350
2351                                                 *'dictionary'* *'dict'*
2352 'dictionary' 'dict'     string  (default "")
2353                         global or local to buffer |global-local|
2354                         {not in Vi}
2355         List of file names, separated by commas, that are used to lookup words
2356         for keyword completion commands |i_CTRL-X_CTRL-K|.  Each file should
2357         contain a list of words.  This can be one word per line, or several
2358         words per line, separated by non-keyword characters (white space is
2359         preferred).  Maximum line length is 510 bytes.
2360         When this option is empty, or an entry "spell" is present, spell
2361         checking is enabled the currently active spelling is used. |spell|
2362         To include a comma in a file name precede it with a backslash.  Spaces
2363         after a comma are ignored, otherwise spaces are included in the file
2364         name.  See |option-backslash| about using backslashes.
2365         This has nothing to do with the |Dictionary| variable type.
2366         Where to find a list of words?
2367         - On FreeBSD, there is the file "/usr/share/dict/words".
2368         - In the Simtel archive, look in the "msdos/linguist" directory.
2369         - In "miscfiles" of the GNU collection.
2370         The use of |:set+=| and |:set-=| is preferred when adding or removing
2371         directories from the list.  This avoids problems when a future version
2372         uses another default.
2373         Backticks cannot be used in this option for security reasons.
2374
2375                                                         *'diff'* *'nodiff'*
2376 'diff'                  boolean (default off)
2377                         local to window
2378                         {not in Vi}
2379                         {not available when compiled without the |+diff|
2380                         feature}
2381         Join the current window in the group of windows that shows differences
2382         between files.  See |vimdiff|.
2383
2384                                                 *'dex'* *'diffexpr'*
2385 'diffexpr' 'dex'        string  (default "")
2386                         global
2387                         {not in Vi}
2388                         {not available when compiled without the |+diff|
2389                         feature}
2390         Expression which is evaluated to obtain an ed-style diff file from two
2391         versions of a file.  See |diff-diffexpr|.
2392         This option cannot be set from a |modeline| or in the |sandbox|, for
2393         security reasons.
2394
2395                                                 *'dip'* *'diffopt'*
2396 'diffopt' 'dip'         string  (default "filler")
2397                         global
2398                         {not in Vi}
2399                         {not available when compiled without the |+diff|
2400                         feature}
2401         Option settings for diff mode.  It can consist of the following items.
2402         All are optional.  Items must be separated by a comma.
2403
2404                 filler          Show filler lines, to keep the text
2405                                 synchronized with a window that has inserted
2406                                 lines at the same position.  Mostly useful
2407                                 when windows are side-by-side and 'scrollbind'
2408                                 is set.
2409
2410                 context:{n}     Use a context of {n} lines between a change
2411                                 and a fold that contains unchanged lines.
2412                                 When omitted a context of six lines is used.
2413                                 See |fold-diff|.
2414
2415                 icase           Ignore changes in case of text.  "a" and "A"
2416                                 are considered the same.  Adds the "-i" flag
2417                                 to the "diff" command if 'diffexpr' is empty.
2418
2419                 iwhite          Ignore changes in amount of white space.  Adds
2420                                 the "-b" flag to the "diff" command if
2421                                 'diffexpr' is empty.  Check the documentation
2422                                 of the "diff" command for what this does
2423                                 exactly.  It should ignore adding trailing
2424                                 white space, but not leading white space.
2425
2426                 horizontal      Start diff mode with horizontal splits (unless
2427                                 explicitly specified otherwise).
2428
2429                 vertical        Start diff mode with vertical splits (unless
2430                                 explicitly specified otherwise).
2431
2432                 foldcolumn:{n}  Set the 'foldcolumn' option to {n} when
2433                                 starting diff mode.  Without this 2 is used.
2434
2435         Examples: >
2436
2437                 :set diffopt=filler,context:4
2438                 :set diffopt=
2439                 :set diffopt=filler,foldcolumn:3
2440 <
2441                                      *'digraph'* *'dg'* *'nodigraph'* *'nodg'*
2442 'digraph' 'dg'          boolean (default off)
2443                         global
2444                         {not in Vi}
2445                         {not available when compiled without the |+digraphs|
2446                         feature}
2447         Enable the entering of digraphs in Insert mode with {char1} <BS>
2448         {char2}.  See |digraphs|.
2449         NOTE: This option is reset when 'compatible' is set.
2450
2451                                                 *'directory'* *'dir'*
2452 'directory' 'dir'       string  (default for Amiga: ".,t:",
2453                                  for MS-DOS and Win32: ".,c:\tmp,c:\temp"
2454                                  for Unix: ".,~/tmp,/var/tmp,/tmp")
2455                         global
2456         List of directory names for the swap file, separated with commas.
2457         - The swap file will be created in the first directory where this is
2458           possible.
2459         - Empty means that no swap file will be used (recovery is
2460           impossible!).
2461         - A directory "." means to put the swap file in the same directory as
2462           the edited file.  On Unix, a dot is prepended to the file name, so
2463           it doesn't show in a directory listing.  On MS-Windows the "hidden"
2464           attribute is set and a dot prepended if possible.
2465         - A directory starting with "./" (or ".\" for MS-DOS et al.) means to
2466           put the swap file relative to where the edited file is.  The leading
2467           "." is replaced with the path name of the edited file.
2468         - For Unix and Win32, if a directory ends in two path separators "//"
2469           or "\\", the swap file name will be built from the complete path to
2470           the file with all path separators substituted to percent '%' signs.
2471           This will ensure file name uniqueness in the preserve directory.
2472           On Win32, when a separating comma is following, you must use "//",
2473           since "\\" will include the comma in the file name.
2474         - Spaces after the comma are ignored, other spaces are considered part
2475           of the directory name.  To have a space at the start of a directory
2476           name, precede it with a backslash.
2477         - To include a comma in a directory name precede it with a backslash.
2478         - A directory name may end in an ':' or '/'.
2479         - Environment variables are expanded |:set_env|.
2480         - Careful with '\' characters, type one before a space, type two to
2481           get one in the option (see |option-backslash|), for example: >
2482             :set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
2483 <       - For backwards compatibility with Vim version 3.0 a '>' at the start
2484           of the option is removed.
2485         Using "." first in the list is recommended.  This means that editing
2486         the same file twice will result in a warning.  Using "/tmp" on Unix is
2487         discouraged: When the system crashes you lose the swap file.
2488         "/var/tmp" is often not cleared when rebooting, thus is a better
2489         choice than "/tmp".  But it can contain a lot of files, your swap
2490         files get lost in the crowd.  That is why a "tmp" directory in your
2491         home directory is tried first.
2492         The use of |:set+=| and |:set-=| is preferred when adding or removing
2493         directories from the list.  This avoids problems when a future version
2494         uses another default.
2495         This option cannot be set from a |modeline| or in the |sandbox|, for
2496         security reasons.
2497         {Vi: directory to put temp file in, defaults to "/tmp"}
2498
2499                                         *'display'* *'dy'*
2500 'display' 'dy'          string  (default "")
2501                         global
2502                         {not in Vi}
2503         Change the way text is displayed.  This is comma separated list of
2504         flags:
2505         lastline        When included, as much as possible of the last line
2506                         in a window will be displayed.  When not included, a
2507                         last line that doesn't fit is replaced with "@" lines.
2508         uhex            Show unprintable characters hexadecimal as <xx>
2509                         instead of using ^C and ~C.
2510
2511                                                 *'eadirection'* *'ead'*
2512 'eadirection' 'ead'     string  (default "both")
2513                         global
2514                         {not in Vi}
2515                         {not available when compiled without the |+vertsplit|
2516                         feature}
2517         Tells when the 'equalalways' option applies:
2518                 ver     vertically, width of windows is not affected
2519                 hor     horizontally, height of windows is not affected
2520                 both    width and height of windows is affected
2521
2522                            *'ed'* *'edcompatible'* *'noed'* *'noedcompatible'*
2523 'edcompatible' 'ed'     boolean (default off)
2524                         global
2525         Makes the 'g' and 'c' flags of the ":substitute" command to be
2526         toggled each time the flag is given.  See |complex-change|.  See
2527         also 'gdefault' option.
2528         Switching this option on is discouraged!
2529
2530                                         *'encoding'* *'enc'* *E543*
2531 'encoding' 'enc'        string (default: "latin1" or value from $LANG)
2532                         global
2533                         {only available when compiled with the |+multi_byte|
2534                         feature}
2535                         {not in Vi}
2536         Sets the character encoding used inside Vim.  It applies to text in
2537         the buffers, registers, Strings in expressions, text stored in the
2538         viminfo file, etc.  It sets the kind of characters which Vim can work
2539         with.  See |encoding-names| for the possible values.
2540
2541         NOTE: Changing this option will not change the encoding of the
2542         existing text in Vim.  It may cause non-ASCII text to become invalid.
2543         It should normally be kept at its default value, or set when Vim
2544         starts up.  See |multibyte|.  To reload the menus see |:menutrans|.
2545
2546         This option cannot be set from a |modeline|.  It would most likely
2547         corrupt the text.
2548
2549         NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to
2550         "utf-8".  Although care has been taken to allow different values of
2551         'encoding', "utf-8" is the natural choice for the environment and
2552         avoids unnecessary conversion overhead.  "utf-8" has not been made
2553         the default to prevent different behavior of the GUI and terminal
2554         versions, and to avoid changing the encoding of newly created files
2555         without your knowledge (in case 'fileencodings' is empty).
2556
2557         The character encoding of files can be different from 'encoding'.
2558         This is specified with 'fileencoding'.  The conversion is done with
2559         iconv() or as specified with 'charconvert'.
2560
2561         If you need to know whether 'encoding' is a multi-byte encoding, you
2562         can use: >
2563                 if has("multi_byte_encoding")
2564 <
2565         Normally 'encoding' will be equal to your current locale.  This will
2566         be the default if Vim recognizes your environment settings.  If
2567         'encoding' is not set to the current locale, 'termencoding' must be
2568         set to convert typed and displayed text.  See |encoding-table|.
2569
2570         When you set this option, it fires the |EncodingChanged| autocommand
2571         event so that you can set up fonts if necessary.
2572
2573         When the option is set, the value is converted to lowercase.  Thus
2574         you can set it with uppercase values too.  Underscores are translated
2575         to '-' signs.
2576         When the encoding is recognized, it is changed to the standard name.
2577         For example "Latin-1" becomes "latin1", "ISO_88592" becomes
2578         "iso-8859-2" and "utf8" becomes "utf-8".
2579
2580         Note: "latin1" is also used when the encoding could not be detected.
2581         This only works when editing files in the same encoding!  When the
2582         actual character set is not latin1, make sure 'fileencoding' and
2583         'fileencodings' are empty.  When conversion is needed, switch to using
2584         utf-8.
2585
2586         When "unicode", "ucs-2" or "ucs-4" is used, Vim internally uses utf-8.
2587         You don't notice this while editing, but it does matter for the
2588         |viminfo-file|.  And Vim expects the terminal to use utf-8 too.  Thus
2589         setting 'encoding' to one of these values instead of utf-8 only has
2590         effect for encoding used for files when 'fileencoding' is empty.
2591
2592         When 'encoding' is set to a Unicode encoding, and 'fileencodings' was
2593         not set yet, the default for 'fileencodings' is changed.
2594
2595                         *'endofline'* *'eol'* *'noendofline'* *'noeol'*
2596 'endofline' 'eol'       boolean (default on)
2597                         local to buffer
2598                         {not in Vi}
2599         When writing a file and this option is off and the 'binary' option
2600         is on, no <EOL> will be written for the last line in the file.  This
2601         option is automatically set when starting to edit a new file, unless
2602         the file does not have an <EOL> for the last line in the file, in
2603         which case it is reset.  Normally you don't have to set or reset this
2604         option.  When 'binary' is off the value is not used when writing the
2605         file.  When 'binary' is on it is used to remember the presence of a
2606         <EOL> for the last line in the file, so that when you write the file
2607         the situation from the original file can be kept.  But you can change
2608         it if you want to.
2609
2610                              *'equalalways'* *'ea'* *'noequalalways'* *'noea'*
2611 'equalalways' 'ea'      boolean (default on)
2612                         global
2613                         {not in Vi}
2614         When on, all the windows are automatically made the same size after
2615         splitting or closing a window.  This also happens the moment the
2616         option is switched on.  When off, splitting a window will reduce the
2617         size of the current window and leave the other windows the same.  When
2618         closing a window the extra lines are given to the window next to it
2619         (depending on 'splitbelow' and 'splitright').
2620         When mixing vertically and horizontally split windows, a minimal size
2621         is computed and some windows may be larger if there is room.  The
2622         'eadirection' option tells in which direction the size is affected.
2623         Changing the height and width of a window can be avoided by setting
2624         'winfixheight' and 'winfixwidth', respectively.
2625         If a window size is specified when creating a new window sizes are
2626         currently not equalized (it's complicated, but may be implemented in
2627         the future).
2628
2629                                                 *'equalprg'* *'ep'*
2630 'equalprg' 'ep'         string  (default "")
2631                         global or local to buffer |global-local|
2632                         {not in Vi}
2633         External program to use for "=" command.  When this option is empty
2634         the internal formatting functions are used; either 'lisp', 'cindent'
2635         or 'indentexpr'.  When Vim was compiled without internal formatting,
2636         the "indent" program is used.
2637         Environment variables are expanded |:set_env|.  See |option-backslash|
2638         about including spaces and backslashes.
2639         This option cannot be set from a |modeline| or in the |sandbox|, for
2640         security reasons.
2641
2642                         *'errorbells'* *'eb'* *'noerrorbells'* *'noeb'*
2643 'errorbells' 'eb'       boolean (default off)
2644                         global
2645         Ring the bell (beep or screen flash) for error messages.  This only
2646         makes a difference for error messages, the bell will be used always
2647         for a lot of errors without a message (e.g., hitting <Esc> in Normal
2648         mode).  See 'visualbell' on how to make the bell behave like a beep,
2649         screen flash or do nothing.
2650
2651                                                 *'errorfile'* *'ef'*
2652 'errorfile' 'ef'        string  (Amiga default: "AztecC.Err",
2653                                         others: "errors.err")
2654                         global
2655                         {not in Vi}
2656                         {not available when compiled without the |+quickfix|
2657                         feature}
2658         Name of the errorfile for the QuickFix mode (see |:cf|).
2659         When the "-q" command-line argument is used, 'errorfile' is set to the
2660         following argument.  See |-q|.
2661         NOT used for the ":make" command.  See 'makeef' for that.
2662         Environment variables are expanded |:set_env|.
2663         See |option-backslash| about including spaces and backslashes.
2664         This option cannot be set from a |modeline| or in the |sandbox|, for
2665         security reasons.
2666
2667                                                 *'errorformat'* *'efm'*
2668 'errorformat' 'efm'     string  (default is very long)
2669                         global or local to buffer |global-local|
2670                         {not in Vi}
2671                         {not available when compiled without the |+quickfix|
2672                         feature}
2673         Scanf-like description of the format for the lines in the error file
2674         (see |errorformat|).
2675
2676                                      *'esckeys'* *'ek'* *'noesckeys'* *'noek'*
2677 'esckeys' 'ek'          boolean (Vim default: on, Vi default: off)
2678                         global
2679                         {not in Vi}
2680         Function keys that start with an <Esc> are recognized in Insert
2681         mode.  When this option is off, the cursor and function keys cannot be
2682         used in Insert mode if they start with an <Esc>.  The advantage of
2683         this is that the single <Esc> is recognized immediately, instead of
2684         after one second.  Instead of resetting this option, you might want to
2685         try changing the values for 'timeoutlen' and 'ttimeoutlen'.  Note that
2686         when 'esckeys' is off, you can still map anything, but the cursor keys
2687         won't work by default.
2688         NOTE: This option is set to the Vi default value when 'compatible' is
2689         set and to the Vim default value when 'compatible' is reset.
2690
2691                                                 *'eventignore'* *'ei'*
2692 'eventignore' 'ei'      string  (default "")
2693                         global
2694                         {not in Vi}
2695                         {not available when compiled without the |+autocmd|
2696                         feature}
2697         A list of autocommand event names, which are to be ignored.
2698         When set to "all" or when "all" is one of the items, all autocommand
2699         events are ignored, autocommands will not be executed.
2700         Otherwise this is a comma separated list of event names.  Example: >
2701             :set ei=WinEnter,WinLeave
2702 <
2703                                  *'expandtab'* *'et'* *'noexpandtab'* *'noet'*
2704 'expandtab' 'et'        boolean (default off)
2705                         local to buffer
2706                         {not in Vi}
2707         In Insert mode: Use the appropriate number of spaces to insert a
2708         <Tab>.  Spaces are used in indents with the '>' and '<' commands and
2709         when 'autoindent' is on.  To insert a real tab when 'expandtab' is
2710         on, use CTRL-V<Tab>.  See also |:retab| and |ins-expandtab|.
2711         NOTE: This option is reset when 'compatible' is set.
2712
2713                                         *'exrc'* *'ex'* *'noexrc'* *'noex'*
2714 'exrc' 'ex'             boolean (default off)
2715                         global
2716                         {not in Vi}
2717         Enables the reading of .vimrc, .exrc and .gvimrc in the current
2718         directory.  If you switch this option on you should also consider
2719         setting the 'secure' option (see |initialization|).  Using a local
2720         .exrc, .vimrc or .gvimrc is a potential security leak, use with care!
2721         also see |.vimrc| and |gui-init|.
2722         This option cannot be set from a |modeline| or in the |sandbox|, for
2723         security reasons.
2724
2725                                 *'fileencoding'* *'fenc'* *E213*
2726 'fileencoding' 'fenc'   string (default: "")
2727                         local to buffer
2728                         {only available when compiled with the |+multi_byte|
2729                         feature}
2730                         {not in Vi}
2731         Sets the character encoding for the file of this buffer.
2732
2733         When 'fileencoding' is different from 'encoding', conversion will be
2734         done when writing the file.  For reading see below.
2735         When 'fileencoding' is empty, the same value as 'encoding' will be
2736         used (no conversion when reading or writing a file).
2737         Conversion will also be done when 'encoding' and 'fileencoding' are
2738         both a Unicode encoding and 'fileencoding' is not utf-8.  That's
2739         because internally Unicode is always stored as utf-8.
2740                 WARNING: Conversion can cause loss of information!  When
2741                 'encoding' is "utf-8" or another Unicode encoding, conversion
2742                 is most likely done in a way that the reverse conversion
2743                 results in the same text.  When 'encoding' is not "utf-8" some
2744                 characters may be lost!
2745
2746         See 'encoding' for the possible values.  Additionally, values may be
2747         specified that can be handled by the converter, see
2748         |mbyte-conversion|.
2749
2750         When reading a file 'fileencoding' will be set from 'fileencodings'.
2751         To read a file in a certain encoding it won't work by setting
2752         'fileencoding', use the |++enc| argument.  One exception: when
2753         'fileencodings' is empty the value of 'fileencoding' is used.
2754         For a new file the global value of 'fileencoding' is used.
2755
2756         Prepending "8bit-" and "2byte-" has no meaning here, they are ignored.
2757         When the option is set, the value is converted to lowercase.  Thus
2758         you can set it with uppercase values too.  '_' characters are
2759         replaced with '-'.  If a name is recognized from the list for
2760         'encoding', it is replaced by the standard name.  For example
2761         "ISO8859-2" becomes "iso-8859-2".
2762
2763         When this option is set, after starting to edit a file, the 'modified'
2764         option is set, because the file would be different when written.
2765
2766         Keep in mind that changing 'fenc' from a modeline happens
2767         AFTER the text has been read, thus it applies to when the file will be
2768         written.  If you do set 'fenc' in a modeline, you might want to set
2769         'nomodified' to avoid not being able to ":q".
2770
2771         This option can not be changed when 'modifiable' is off.
2772
2773                                                         *'fe'*
2774         NOTE: Before version 6.0 this option specified the encoding for the
2775         whole of Vim, this was a mistake.  Now use 'encoding' instead.  The
2776         old short name was 'fe', which is no longer used.
2777
2778                                         *'fileencodings'* *'fencs'*
2779 'fileencodings' 'fencs' string (default: "ucs-bom",
2780                                     "ucs-bom,utf-8,default,latin1" when
2781                                     'encoding' is set to a Unicode value)
2782                         global
2783                         {only available when compiled with the |+multi_byte|
2784                         feature}
2785                         {not in Vi}
2786         This is a list of character encodings considered when starting to edit
2787         an existing file.  When a file is read, Vim tries to use the first
2788         mentioned character encoding.  If an error is detected, the next one
2789         in the list is tried.  When an encoding is found that works,
2790         'fileencoding' is set to it.  If all fail, 'fileencoding' is set to
2791         an empty string, which means the value of 'encoding' is used.
2792                 WARNING: Conversion can cause loss of information!  When
2793                 'encoding' is "utf-8" (or one of the other Unicode variants)
2794                 conversion is most likely done in a way that the reverse
2795                 conversion results in the same text.  When 'encoding' is not
2796                 "utf-8" some non-ASCII characters may be lost!  You can use
2797                 the |++bad| argument to specify what is done with characters
2798                 that can't be converted.
2799         For an empty file or a file with only ASCII characters most encodings
2800         will work and the first entry of 'fileencodings' will be used (except
2801         "ucs-bom", which requires the BOM to be present).  If you prefer
2802         another encoding use an BufReadPost autocommand event to test if your
2803         preferred encoding is to be used.  Example: >
2804                 au BufReadPost * if search('\S', 'w') == 0 |
2805                         \ set fenc=iso-2022-jp | endif
2806 <       This sets 'fileencoding' to "iso-2022-jp" if the file does not contain
2807         non-blank characters.
2808         When the |++enc| argument is used then the value of 'fileencodings' is
2809         not used.
2810         Note that 'fileencodings' is not used for a new file, the global value
2811         of 'fileencoding' is used instead.  You can set it with: >
2812                 :setglobal fenc=iso-8859-2
2813 <       This means that a non-existing file may get a different encoding than
2814         an empty file.
2815         The special value "ucs-bom" can be used to check for a Unicode BOM
2816         (Byte Order Mark) at the start of the file.  It must not be preceded
2817         by "utf-8" or another Unicode encoding for this to work properly.
2818         An entry for an 8-bit encoding (e.g., "latin1") should be the last,
2819         because Vim cannot detect an error, thus the encoding is always
2820         accepted.
2821         The special value "default" can be used for the encoding from the
2822         environment.  This is the default value for 'encoding'.  It is useful
2823         when 'encoding' is set to "utf-8" and your environment uses a
2824         non-latin1 encoding, such as Russian.
2825         When 'encoding' is "utf-8" and a file contains an illegal byte
2826         sequence it won't be recognized as UTF-8.  You can use the |8g8|
2827         command to find the illegal byte sequence.
2828         WRONG VALUES:                   WHAT'S WRONG:
2829                 latin1,utf-8            "latin1" will always be used
2830                 utf-8,ucs-bom,latin1    BOM won't be recognized in an utf-8
2831                                         file
2832                 cp1250,latin1           "cp1250" will always be used
2833         If 'fileencodings' is empty, 'fileencoding' is not modified.
2834         See 'fileencoding' for the possible values.
2835         Setting this option does not have an effect until the next time a file
2836         is read.
2837
2838                                         *'fileformat'* *'ff'*
2839 'fileformat' 'ff'       string (MS-DOS, MS-Windows, OS/2 default: "dos",
2840                                 Unix default: "unix",
2841                                 Macintosh default: "mac")
2842                         local to buffer
2843                         {not in Vi}
2844         This gives the <EOL> of the current buffer, which is used for
2845         reading/writing the buffer from/to a file:
2846             dos     <CR> <NL>
2847             unix    <NL>
2848             mac     <CR>
2849         When "dos" is used, CTRL-Z at the end of a file is ignored.
2850         See |file-formats| and |file-read|.
2851         For the character encoding of the file see 'fileencoding'.
2852         When 'binary' is set, the value of 'fileformat' is ignored, file I/O
2853         works like it was set to "unix'.
2854         This option is set automatically when starting to edit a file and
2855         'fileformats' is not empty and 'binary' is off.
2856         When this option is set, after starting to edit a file, the 'modified'
2857         option is set, because the file would be different when written.
2858         This option can not be changed when 'modifiable' is off.
2859         For backwards compatibility: When this option is set to "dos",
2860         'textmode' is set, otherwise 'textmode' is reset.
2861
2862                                         *'fileformats'* *'ffs'*
2863 'fileformats' 'ffs'     string (default:
2864                                 Vim+Vi  MS-DOS, MS-Windows OS/2: "dos,unix",
2865                                 Vim     Unix: "unix,dos",
2866                                 Vim     Mac: "mac,unix,dos",
2867                                 Vi      Cygwin: "unix,dos",
2868                                 Vi      others: "")
2869                         global
2870                         {not in Vi}
2871         This gives the end-of-line (<EOL>) formats that will be tried when
2872         starting to edit a new buffer and when reading a file into an existing
2873         buffer:
2874         - When empty, the format defined with 'fileformat' will be used
2875           always.  It is not set automatically.
2876         - When set to one name, that format will be used whenever a new buffer
2877           is opened.  'fileformat' is set accordingly for that buffer.  The
2878           'fileformats' name will be used when a file is read into an existing
2879           buffer, no matter what 'fileformat' for that buffer is set to.
2880         - When more than one name is present, separated by commas, automatic
2881           <EOL> detection will be done when reading a file.  When starting to
2882           edit a file, a check is done for the <EOL>:
2883           1. If all lines end in <CR><NL>, and 'fileformats' includes "dos",
2884              'fileformat' is set to "dos".
2885           2. If a <NL> is found and 'fileformats' includes "unix", 'fileformat'
2886              is set to "unix".  Note that when a <NL> is found without a
2887              preceding <CR>, "unix" is preferred over "dos".
2888           3. If 'fileformat' has not yet been set, and if 'fileformats'
2889              includes "mac", 'fileformat' is set to "mac".
2890              This means that "mac" is only chosen when:
2891               "unix" is not present or no <NL> is found in the file, and
2892               "dos" is not present or no <CR><NL> is found in the file.
2893              Except: if "unix" was chosen, but there is a <CR> before
2894              the first <NL>, and there appear to be more <CR>s than <NL>s in
2895              the first few lines, "mac" is used.
2896           4. If 'fileformat' is still not set, the first name from
2897              'fileformats' is used.
2898           When reading a file into an existing buffer, the same is done, but
2899           this happens like 'fileformat' has been set appropriately for that
2900           file only, the option is not changed.
2901         When 'binary' is set, the value of 'fileformats' is not used.
2902
2903         Note that when Vim starts up with an empty buffer this option is not
2904         used.  Set 'fileformat' in your .vimrc instead.
2905
2906         For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
2907         are ":source"ed and for vimrc files, automatic <EOL> detection may be
2908         done:
2909         - When 'fileformats' is empty, there is no automatic detection.  Dos
2910           format will be used.
2911         - When 'fileformats' is set to one or more names, automatic detection
2912           is done.  This is based on the first <NL> in the file: If there is a
2913           <CR> in front of it, Dos format is used, otherwise Unix format is
2914           used.
2915         Also see |file-formats|.
2916         For backwards compatibility: When this option is set to an empty
2917         string or one format (no comma is included), 'textauto' is reset,
2918         otherwise 'textauto' is set.
2919         NOTE: This option is set to the Vi default value when 'compatible' is
2920         set and to the Vim default value when 'compatible' is reset.
2921
2922                                         *'filetype'* *'ft'*
2923 'filetype' 'ft'         string (default: "")
2924                         local to buffer
2925                         {not in Vi}
2926                         {not available when compiled without the |+autocmd|
2927                         feature}
2928         When this option is set, the FileType autocommand event is triggered.
2929         All autocommands that match with the value of this option will be
2930         executed.  Thus the value of 'filetype' is used in place of the file
2931         name.
2932         Otherwise this option does not always reflect the current file type.
2933         This option is normally set when the file type is detected.  To enable
2934         this use the ":filetype on" command. |:filetype|
2935         Setting this option to a different value is most useful in a modeline,
2936         for a file for which the file type is not automatically recognized.
2937         Example, for in an IDL file:
2938                 /* vim: set filetype=idl : */ ~
2939         |FileType| |filetypes|
2940         When a dot appears in the value then this separates two filetype
2941         names.  Example:
2942                 /* vim: set filetype=c.doxygen : */ ~
2943         This will use the "c" filetype first, then the "doxygen" filetype.
2944         This works both for filetype plugins and for syntax files.  More than
2945         one dot may appear.
2946         This option is not copied to another buffer, independent of the 's' or
2947         'S' flag in 'cpoptions'.
2948         Only normal file name characters can be used, "/\*?[|<>" are illegal.
2949
2950                                                 *'fillchars'* *'fcs'*
2951 'fillchars' 'fcs'       string  (default "vert:|,fold:-")
2952                         global
2953                         {not in Vi}
2954                         {not available when compiled without the |+windows|
2955                         and |+folding| features}
2956         Characters to fill the statuslines and vertical separators.
2957         It is a comma separated list of items:
2958
2959           item          default         Used for ~
2960           stl:c         ' ' or '^'      statusline of the current window
2961           stlnc:c       ' ' or '-'      statusline of the non-current windows
2962           vert:c        '|'             vertical separators |:vsplit|
2963           fold:c        '-'             filling 'foldtext'
2964           diff:c        '-'             deleted lines of the 'diff' option
2965
2966         Any one that is omitted will fall back to the default.  For "stl" and
2967         "stlnc" the space will be used when there is highlighting, '^' or '-'
2968         otherwise.
2969
2970         Example: >
2971             :set fillchars=stl:^,stlnc:-,vert:\|,fold:-,diff:-
2972 <       This is similar to the default, except that these characters will also
2973         be used when there is highlighting.
2974
2975         for "stl" and "stlnc" only single-byte values are supported.
2976
2977         The highlighting used for these items:
2978           item          highlight group ~
2979           stl:c         StatusLine              |hl-StatusLine|
2980           stlnc:c       StatusLineNC            |hl-StatusLineNC|
2981           vert:c        VertSplit               |hl-VertSplit|
2982           fold:c        Folded                  |hl-Folded|
2983           diff:c        DiffDelete              |hl-DiffDelete|
2984
2985                                         *'fkmap'* *'fk'* *'nofkmap'* *'nofk'*
2986 'fkmap' 'fk'            boolean (default off)                   *E198*
2987                         global
2988                         {not in Vi}
2989                         {only available when compiled with the |+rightleft|
2990                         feature}
2991         When on, the keyboard is mapped for the Farsi character set.
2992         Normally you would set 'allowrevins' and use CTRL-_ in insert mode to
2993         toggle this option |i_CTRL-_|.  See |farsi.txt|.
2994
2995                                                 *'foldclose'* *'fcl'*
2996 'foldclose' 'fcl'       string (default "")
2997                         global
2998                         {not in Vi}
2999                         {not available when compiled without the |+folding|
3000                         feature}
3001         When set to "all", a fold is closed when the cursor isn't in it and
3002         its level is higher than 'foldlevel'.  Useful if you want folds to
3003         automatically close when moving out of them.
3004
3005                                                 *'foldcolumn'* *'fdc'*
3006 'foldcolumn' 'fdc'      number (default 0)
3007                         local to window
3008                         {not in Vi}
3009                         {not available when compiled without the |+folding|
3010                         feature}
3011         When non-zero, a column with the specified width is shown at the side
3012         of the window which indicates open and closed folds.  The maximum
3013         value is 12.
3014         See |folding|.
3015
3016                         *'foldenable'* *'fen'* *'nofoldenable'* *'nofen'*
3017 'foldenable' 'fen'      boolean (default on)
3018                         local to window
3019                         {not in Vi}
3020                         {not available when compiled without the |+folding|
3021                         feature}
3022         When off, all folds are open.  This option can be used to quickly
3023         switch between showing all text unfolded and viewing the text with
3024         folds (including manually opened or closed folds).  It can be toggled
3025         with the |zi| command.  The 'foldcolumn' will remain blank when
3026         'foldenable' is off.
3027         This option is set by commands that create a new fold or close a fold.
3028         See |folding|.
3029
3030                                                 *'foldexpr'* *'fde'*
3031 'foldexpr' 'fde'        string (default: "0")
3032                         local to window
3033                         {not in Vi}
3034                         {not available when compiled without the |+folding|
3035                         or |+eval| features}
3036         The expression used for when 'foldmethod' is "expr".  It is evaluated
3037         for each line to obtain its fold level.  See |fold-expr|.
3038
3039         The expression may be evaluated in the |sandbox|, see
3040         |sandbox-option|.
3041         This option can't be set from a |modeline| when the 'diff' option is
3042         on.
3043
3044         It is not allowed to change text or jump to another window while
3045         evaluating 'foldexpr' |textlock|.
3046
3047                                                 *'foldignore'* *'fdi'*
3048 'foldignore' 'fdi'      string (default: "#")
3049                         local to window
3050                         {not in Vi}
3051                         {not available when compiled without the |+folding|
3052                         feature}
3053         Used only when 'foldmethod' is "indent".  Lines starting with
3054         characters in 'foldignore' will get their fold level from surrounding
3055         lines.  White space is skipped before checking for this character.
3056         The default "#" works well for C programs.  See |fold-indent|.
3057
3058                                                 *'foldlevel'* *'fdl'*
3059 'foldlevel' 'fdl'       number (default: 0)
3060                         local to window
3061                         {not in Vi}
3062                         {not available when compiled without the |+folding|
3063                         feature}
3064         Sets the fold level: Folds with a higher level will be closed.
3065         Setting this option to zero will close all folds.  Higher numbers will
3066         close fewer folds.
3067         This option is set by commands like |zm|, |zM| and |zR|.
3068         See |fold-foldlevel|.
3069
3070                                                 *'foldlevelstart'* *'fdls'*
3071 'foldlevelstart' 'fdls' number (default: -1)
3072                         global
3073                         {not in Vi}
3074                         {not available when compiled without the |+folding|
3075                         feature}
3076         Sets 'foldlevel' when starting to edit another buffer in a window.
3077         Useful to always start editing with all folds closed (value zero),
3078         some folds closed (one) or no folds closed (99).
3079         This is done before reading any modeline, thus a setting in a modeline
3080         overrules this option.  Starting to edit a file for |diff-mode| also
3081         ignores this option and closes all folds.
3082         It is also done before BufReadPre autocommands, to allow an autocmd to
3083         overrule the 'foldlevel' value for specific files.
3084         When the value is negative, it is not used.
3085
3086                                                 *'foldmarker'* *'fmr'* *E536*
3087 'foldmarker' 'fmr'      string (default: "{{{,}}}")
3088                         local to window
3089                         {not in Vi}
3090                         {not available when compiled without the |+folding|
3091                         feature}
3092         The start and end marker used when 'foldmethod' is "marker".  There
3093         must be one comma, which separates the start and end marker.  The
3094         marker is a literal string (a regular expression would be too slow).
3095         See |fold-marker|.
3096
3097                                                 *'foldmethod'* *'fdm'*
3098 'foldmethod' 'fdm'      string (default: "manual")
3099                         local to window
3100                         {not in Vi}
3101                         {not available when compiled without the |+folding|
3102                         feature}
3103         The kind of folding used for the current window.  Possible values:
3104         |fold-manual|   manual      Folds are created manually.
3105         |fold-indent|   indent      Lines with equal indent form a fold.
3106         |fold-expr|     expr        'foldexpr' gives the fold level of a line.
3107         |fold-marker|   marker      Markers are used to specify folds.
3108         |fold-syntax|   syntax      Syntax highlighting items specify folds.
3109         |fold-diff|     diff        Fold text that is not changed.
3110
3111                                                 *'foldminlines'* *'fml'*
3112 'foldminlines' 'fml'    number (default: 1)
3113                         local to window
3114                         {not in Vi}
3115                         {not available when compiled without the |+folding|
3116                         feature}
3117         Sets the number of screen lines above which a fold can be displayed
3118         closed.  Also for manually closed folds.  With the default value of
3119         one a fold can only be closed if it takes up two or more screen lines.
3120         Set to zero to be able to close folds of just one screen line.
3121         Note that this only has an effect on what is displayed.  After using
3122         "zc" to close a fold, which is displayed open because it's smaller
3123         than 'foldminlines', a following "zc" may close a containing fold.
3124
3125                                                 *'foldnestmax'* *'fdn'*
3126 'foldnestmax' 'fdn'     number (default: 20)
3127                         local to window
3128                         {not in Vi}
3129                         {not available when compiled without the |+folding|
3130                         feature}
3131         Sets the maximum nesting of folds for the "indent" and "syntax"
3132         methods.  This avoids that too many folds will be created.  Using more
3133         than 20 doesn't work, because the internal limit is 20.
3134
3135                                                 *'foldopen'* *'fdo'*
3136 'foldopen' 'fdo'        string (default: "block,hor,mark,percent,quickfix,
3137                                                              search,tag,undo")
3138                         global
3139                         {not in Vi}
3140                         {not available when compiled without the |+folding|
3141                         feature}
3142         Specifies for which type of commands folds will be opened, if the
3143         command moves the cursor into a closed fold.  It is a comma separated
3144         list of items.
3145         NOTE: When the command is part of a mapping this option is not used.
3146         Add the |zv| command to the mapping to get the same effect.
3147         (rationale: the mapping may want to control opening folds itself)
3148
3149                 item            commands ~
3150                 all             any
3151                 block           "(", "{", "[[", "[{", etc.
3152                 hor             horizontal movements: "l", "w", "fx", etc.
3153                 insert          any command in Insert mode
3154                 jump            far jumps: "G", "gg", etc.
3155                 mark            jumping to a mark: "'m", CTRL-O, etc.
3156                 percent         "%"
3157                 quickfix        ":cn", ":crew", ":make", etc.
3158                 search          search for a pattern: "/", "n", "*", "gd", etc.
3159                                 (not for a search pattern in a ":" command)
3160                                 Also for |[s| and |]s|.
3161                 tag             jumping to a tag: ":ta", CTRL-T, etc.
3162                 undo            undo or redo: "u" and CTRL-R
3163         When a movement command is used for an operator (e.g., "dl" or "y%")
3164         this option is not used.  This means the operator will include the
3165         whole closed fold.
3166         Note that vertical movements are not here, because it would make it
3167         very difficult to move onto a closed fold.
3168         In insert mode the folds containing the cursor will always be open
3169         when text is inserted.
3170         To close folds you can re-apply 'foldlevel' with the |zx| command or
3171         set the 'foldclose' option to "all".
3172
3173                                                 *'foldtext'* *'fdt'*
3174 'foldtext' 'fdt'        string (default: "foldtext()")
3175                         local to window
3176                         {not in Vi}
3177                         {not available when compiled without the |+folding|
3178                         feature}
3179         An expression which is used to specify the text displayed for a closed
3180         fold.  See |fold-foldtext|.
3181
3182         The expression may be evaluated in the |sandbox|, see
3183         |sandbox-option|.
3184
3185         It is not allowed to change text or jump to another window while
3186         evaluating 'foldtext' |textlock|.
3187
3188                                         *'formatoptions'* *'fo'*
3189 'formatoptions' 'fo'    string (Vim default: "tcq", Vi default: "vt")
3190                         local to buffer
3191                         {not in Vi}
3192         This is a sequence of letters which describes how automatic
3193         formatting is to be done.  See |fo-table|.  When the 'paste' option is
3194         on, no formatting is done (like 'formatoptions' is empty).  Commas can
3195         be inserted for readability.
3196         To avoid problems with flags that are added in the future, use the
3197         "+=" and "-=" feature of ":set" |add-option-flags|.
3198         NOTE: This option is set to the Vi default value when 'compatible' is
3199         set and to the Vim default value when 'compatible' is reset.
3200
3201                                         *'formatlistpat'* *'flp'*
3202 'formatlistpat' 'flp'   string (default: "^\s*\d\+[\]:.)}\t ]\s*")
3203                         local to buffer
3204                         {not in Vi}
3205         A pattern that is used to recognize a list header.  This is used for
3206         the "n" flag in 'formatoptions'.
3207         The pattern must match exactly the text that will be the indent for
3208         the line below it.  You can use |/\ze| to mark the end of the match
3209         while still checking more characters.  There must be a character
3210         following the pattern, when it matches the whole line it is handled
3211         like there is no match.
3212         The default recognizes a number, followed by an optional punctuation
3213         character and white space.
3214
3215                                                 *'formatprg'* *'fp'*
3216 'formatprg' 'fp'        string (default "")
3217                         global
3218                         {not in Vi}
3219         The name of an external program that will be used to format the lines
3220         selected with the |gq| operator.  The program must take the input on
3221         stdin and produce the output on stdout.  The Unix program "fmt" is
3222         such a program.
3223         If the 'formatexpr' option is not empty it will be used instead.
3224         Otherwise, if 'formatprg' option is an empty string, the internal
3225         format function will be used |C-indenting|.
3226         Environment variables are expanded |:set_env|.  See |option-backslash|
3227         about including spaces and backslashes.
3228         The expression may be evaluated in the |sandbox|, see
3229         |sandbox-option|.
3230
3231                                                 *'formatexpr'* *'fex'*
3232 'formatexpr' 'fex'      string (default "")
3233                         local to buffer
3234                         {not in Vi}
3235                         {not available when compiled without the |+eval|
3236                         feature}
3237         Expression which is evaluated to format a range of lines for the |gq|
3238         operator or automatic formatting (see 'formatoptions').  When this
3239         option is empty 'formatprg' is used.
3240
3241         The |v:lnum|  variable holds the first line to be formatted.
3242         The |v:count| variable holds the number of lines to be formatted.
3243         The |v:char|  variable holds the character that is going to be
3244                       inserted if the expression is being evaluated due to
3245                       automatic formatting.  This can be empty.  Don't insert
3246                       it yet!
3247
3248         Example: >
3249                 :set formatexpr=mylang#Format()
3250 <       This will invoke the mylang#Format() function in the
3251         autoload/mylang.vim file in 'runtimepath'. |autoload|
3252
3253         The expression is also evaluated when 'textwidth' is set and adding
3254         text beyond that limit.  This happens under the same conditions as
3255         when internal formatting is used.  Make sure the cursor is kept in the
3256         same spot relative to the text then!  The |mode()| function will
3257         return "i" or "R" in this situation.
3258         
3259         When the expression evaluates to non-zero Vim will fall back to using
3260         the internal format mechanism.
3261
3262         The expression may be evaluated in the |sandbox|, see
3263         |sandbox-option|.  That stops the option from working, since changing
3264         the buffer text is not allowed.
3265
3266                                                 *'fsync'* *'fs'*
3267 'fsync' 'fs'            boolean (default on)
3268                         global
3269                         {not in Vi}
3270         When on, the library function fsync() will be called after writing a
3271         file.  This will flush a file to disk, ensuring that it is safely
3272         written even on filesystems which do metadata-only journaling.  This
3273         will force the harddrive to spin up on Linux systems running in laptop
3274         mode, so it may be undesirable in some situations.  Be warned that
3275         turning this off increases the chances of data loss after a crash.  On
3276         systems without an fsync() implementation, this variable is always
3277         off.
3278         Also see 'swapsync' for controlling fsync() on swap files.
3279
3280                                    *'gdefault'* *'gd'* *'nogdefault'* *'nogd'*
3281 'gdefault' 'gd'         boolean (default off)
3282                         global
3283                         {not in Vi}
3284         When on, the ":substitute" flag 'g' is default on.  This means that
3285         all matches in a line are substituted instead of one.  When a 'g' flag
3286         is given to a ":substitute" command, this will toggle the substitution
3287         of all or one match.  See |complex-change|.
3288
3289                 command         'gdefault' on   'gdefault' off  ~
3290                 :s///             subst. all      subst. one
3291                 :s///g            subst. one      subst. all
3292                 :s///gg           subst. all      subst. one
3293
3294         NOTE: This option is reset when 'compatible' is set.
3295
3296                                                 *'grepformat'* *'gfm'*
3297 'grepformat' 'gfm'      string  (default "%f:%l%m,%f  %l%m")
3298                         global
3299                         {not in Vi}
3300         Format to recognize for the ":grep" command output.
3301         This is a scanf-like string that uses the same format as the
3302         'errorformat' option: see |errorformat|.
3303
3304                                                 *'grepprg'* *'gp'*
3305 'grepprg' 'gp'          string  (default "grep -n ",
3306                                         Unix: "grep -n $* /dev/null",
3307                                         Win32: "findstr /n" or "grep -n",
3308                                                       VMS: "SEARCH/NUMBERS ")
3309                         global or local to buffer |global-local|
3310                         {not in Vi}
3311         Program to use for the |:grep| command.  This option may contain '%'
3312         and '#' characters, which are expanded like when used in a command-
3313         line.  The placeholder "$*" is allowed to specify where the arguments
3314         will be included.  Environment variables are expanded |:set_env|.  See
3315         |option-backslash| about including spaces and backslashes.
3316         When your "grep" accepts the "-H" argument, use this to make ":grep"
3317         also work well with a single file: >
3318                 :set grepprg=grep\ -nH
3319 <       Special value: When 'grepprg' is set to "internal" the |:grep| command
3320         works like |:vimgrep|, |:lgrep| like |:lvimgrep|, |:grepadd| like
3321         |:vimgrepadd| and |:lgrepadd| like |:lvimgrepadd|.
3322         See also the section |:make_makeprg|, since most of the comments there
3323         apply equally to 'grepprg'.
3324         For Win32, the default is "findstr /n" if "findstr.exe" can be found,
3325         otherwise it's "grep -n".
3326         This option cannot be set from a |modeline| or in the |sandbox|, for
3327         security reasons.
3328
3329                         *'guicursor'* *'gcr'* *E545* *E546* *E548* *E549*
3330 'guicursor' 'gcr'       string  (default "n-v-c:block-Cursor/lCursor,
3331                                         ve:ver35-Cursor,
3332                                         o:hor50-Cursor,
3333                                         i-ci:ver25-Cursor/lCursor,
3334                                         r-cr:hor20-Cursor/lCursor,
3335                                         sm:block-Cursor
3336                                         -blinkwait175-blinkoff150-blinkon175",
3337                                 for MS-DOS and Win32 console:
3338                                         "n-v-c:block,o:hor50,i-ci:hor15,
3339                                         r-cr:hor30,sm:block")
3340                         global
3341                         {not in Vi}
3342                         {only available when compiled with GUI enabled, and
3343                         for MS-DOS and Win32 console}
3344         This option tells Vim what the cursor should look like in different
3345         modes.  It fully works in the GUI.  In an MSDOS or Win32 console, only
3346         the height of the cursor can be changed.  This can be done by
3347         specifying a block cursor, or a percentage for a vertical or
3348         horizontal cursor.
3349         For a console the 't_SI' and 't_EI' escape sequences are used.
3350
3351         The option is a comma separated list of parts.  Each part consist of a
3352         mode-list and an argument-list:
3353                 mode-list:argument-list,mode-list:argument-list,..
3354         The mode-list is a dash separated list of these modes:
3355                 n       Normal mode
3356                 v       Visual mode
3357                 ve      Visual mode with 'selection' "exclusive" (same as 'v',
3358                         if not specified)
3359                 o       Operator-pending mode
3360                 i       Insert mode
3361                 r       Replace mode
3362                 c       Command-line Normal (append) mode
3363                 ci      Command-line Insert mode
3364                 cr      Command-line Replace mode
3365                 sm      showmatch in Insert mode
3366                 a       all modes
3367         The argument-list is a dash separated list of these arguments:
3368                 hor{N}  horizontal bar, {N} percent of the character height
3369                 ver{N}  vertical bar, {N} percent of the character width
3370                 block   block cursor, fills the whole character
3371                         [only one of the above three should be present]
3372                 blinkwait{N}                            *cursor-blinking*
3373                 blinkon{N}
3374                 blinkoff{N}
3375                         blink times for cursor: blinkwait is the delay before
3376                         the cursor starts blinking, blinkon is the time that
3377                         the cursor is shown and blinkoff is the time that the
3378                         cursor is not shown.  The times are in msec.  When one
3379                         of the numbers is zero, there is no blinking.  The
3380                         default is: "blinkwait700-blinkon400-blinkoff250".
3381                         These numbers are used for a missing entry.  This
3382                         means that blinking is enabled by default.  To switch
3383                         blinking off you can use "blinkon0".  The cursor only
3384                         blinks when Vim is waiting for input, not while
3385                         executing a command.
3386                         To make the cursor blink in an xterm, see
3387                         |xterm-blink|.
3388                 {group-name}
3389                         a highlight group name, that sets the color and font
3390                         for the cursor
3391                 {group-name}/{group-name}
3392                         Two highlight group names, the first is used when
3393                         no language mappings are used, the other when they
3394                         are. |language-mapping|
3395
3396         Examples of parts:
3397            n-c-v:block-nCursor  in Normal, Command-line and Visual mode, use a
3398                                 block cursor with colors from the "nCursor"
3399                                 highlight group
3400            i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150
3401                                 In Insert and Command-line Insert mode, use a
3402                                 30% vertical bar cursor with colors from the
3403                                 "iCursor" highlight group.  Blink a bit
3404                                 faster.
3405
3406         The 'a' mode is different.  It will set the given argument-list for
3407         all modes.  It does not reset anything to defaults.  This can be used
3408         to do a common setting for all modes.  For example, to switch off
3409         blinking: "a:blinkon0"
3410
3411         Examples of cursor highlighting: >
3412             :highlight Cursor gui=reverse guifg=NONE guibg=NONE
3413             :highlight Cursor gui=NONE guifg=bg guibg=fg
3414 <
3415                                         *'guifont'* *'gfn'*
3416                                                    *E235* *E596*
3417 'guifont' 'gfn'         string  (default "")
3418                         global
3419                         {not in Vi}
3420                         {only available when compiled with GUI enabled}
3421         This is a list of fonts which will be used for the GUI version of Vim.
3422         In its simplest form the value is just one font name.  When
3423         the font cannot be found you will get an error message.  To try other
3424         font names a list can be specified, font names separated with commas.
3425         The first valid font is used.
3426
3427         On systems where 'guifontset' is supported (X11) and 'guifontset' is
3428         not empty, then 'guifont' is not used.
3429
3430         Spaces after a comma are ignored.  To include a comma in a font name
3431         precede it with a backslash.  Setting an option requires an extra
3432         backslash before a space and a backslash.  See also
3433         |option-backslash|.  For example: >
3434             :set guifont=Screen15,\ 7x13,font\\,with\\,commas
3435 <       will make Vim try to use the font "Screen15" first, and if it fails it
3436         will try to use "7x13" and then "font,with,commas" instead.
3437
3438         If none of the fonts can be loaded, Vim will keep the current setting.
3439         If an empty font list is given, Vim will try using other resource
3440         settings (for X, it will use the Vim.font resource), and finally it
3441         will try some builtin default which should always be there ("7x13" in
3442         the case of X).  The font names given should be "normal" fonts.  Vim
3443         will try to find the related bold and italic fonts.
3444
3445         For Win32, GTK, Motif, Mac OS and Photon: >
3446             :set guifont=*
3447 <       will bring up a font requester, where you can pick the font you want.
3448
3449         The font name depends on the GUI used.  See |setting-guifont| for a
3450         way to set 'guifont' for various systems.
3451
3452         For the GTK+ 2 GUI the font name looks like this: >
3453             :set guifont=Andale\ Mono\ 11
3454 <       That's all.  XLFDs are not used.  For Chinese this is reported to work
3455         well: >
3456             if has("gui_gtk2")
3457               set guifont=Bitstream\ Vera\ Sans\ Mono\ 12,Fixed\ 12
3458               set guifontwide=Microsoft\ Yahei\ 12,WenQuanYi\ Zen\ Hei\ 12
3459             endif
3460 <
3461         For Mac OSX you can use something like this: >
3462             :set guifont=Monaco:h10
3463 <       Also see 'macatsui', it can help fix display problems.
3464                                                                 *E236*
3465         Note that the fonts must be mono-spaced (all characters have the same
3466         width).  An exception is GTK 2: all fonts are accepted, but
3467         mono-spaced fonts look best.
3468
3469         To preview a font on X11, you might be able to use the "xfontsel"
3470         program.  The "xlsfonts" program gives a list of all available fonts.
3471
3472         For the Win32 GUI                                       *E244* *E245*
3473         - takes these options in the font name:
3474                 hXX - height is XX (points, can be floating-point)
3475                 wXX - width is XX (points, can be floating-point)
3476                 b   - bold
3477                 i   - italic
3478                 u   - underline
3479                 s   - strikeout
3480                 cXX - character set XX.  Valid charsets are: ANSI, ARABIC,
3481                       BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK,
3482                       HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
3483                       SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
3484                       Normally you would use "cDEFAULT".
3485
3486           Use a ':' to separate the options.
3487         - A '_' can be used in the place of a space, so you don't need to use
3488           backslashes to escape the spaces.
3489         - Examples: >
3490             :set guifont=courier_new:h12:w5:b:cRUSSIAN
3491             :set guifont=Andale_Mono:h7.5:w4.5
3492 <       See also |font-sizes|.
3493
3494                                         *'guifontset'* *'gfs'*
3495                                         *E250* *E252* *E234* *E597* *E598*
3496 'guifontset' 'gfs'      string  (default "")
3497                         global
3498                         {not in Vi}
3499                         {only available when compiled with GUI enabled and
3500                         with the |+xfontset| feature}
3501                         {not available in the GTK+ 2 GUI}
3502         When not empty, specifies two (or more) fonts to be used.  The first
3503         one for normal English, the second one for your special language.  See
3504         |xfontset|.
3505         Setting this option also means that all font names will be handled as
3506         a fontset name.  Also the ones used for the "font" argument of the
3507         |:highlight| command.
3508         The fonts must match with the current locale.  If fonts for the
3509         character sets that the current locale uses are not included, setting
3510         'guifontset' will fail.
3511         Note the difference between 'guifont' and 'guifontset': In 'guifont'
3512         the comma-separated names are alternative names, one of which will be
3513         used.  In 'guifontset' the whole string is one fontset name,
3514         including the commas.  It is not possible to specify alternative
3515         fontset names.
3516         This example works on many X11 systems: >
3517                 :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-*
3518 <
3519                                 *'guifontwide'* *'gfw'* *E231* *E533* *E534*
3520 'guifontwide' 'gfw'     string  (default "")
3521                         global
3522                         {not in Vi}
3523                         {only available when compiled with GUI enabled}
3524         When not empty, specifies a comma-separated list of fonts to be used
3525         for double-width characters.  The first font that can be loaded is
3526         used.
3527         Note: The size of these fonts must be exactly twice as wide as the one
3528         specified with 'guifont' and the same height.
3529
3530         All GUI versions but GTK+ 2:
3531
3532         'guifontwide' is only used when 'encoding' is set to "utf-8" and
3533         'guifontset' is empty or invalid.
3534         When 'guifont' is set and a valid font is found in it and
3535         'guifontwide' is empty Vim will attempt to find a matching
3536         double-width font and set 'guifontwide' to it.
3537
3538         GTK+ 2 GUI only:                        *guifontwide_gtk2*
3539
3540         If set and valid, 'guifontwide' is always used for double width
3541         characters, even if 'encoding' is not set to "utf-8".
3542         Vim does not attempt to find an appropriate value for 'guifontwide'
3543         automatically.  If 'guifontwide' is empty Pango/Xft will choose the
3544         font for characters not available in 'guifont'.  Thus you do not need
3545         to set 'guifontwide' at all unless you want to override the choice
3546         made by Pango/Xft.
3547
3548                                                 *'guiheadroom'* *'ghr'*
3549 'guiheadroom' 'ghr'     number  (default 50)
3550                         global
3551                         {not in Vi} {only for GTK and X11 GUI}
3552         The number of pixels subtracted from the screen height when fitting
3553         the GUI window on the screen.  Set this before the GUI is started,
3554         e.g., in your |gvimrc| file.  When zero, the whole screen height will
3555         be used by the window.  When positive, the specified number of pixel
3556         lines will be left for window decorations and other items on the
3557         screen.  Set it to a negative value to allow windows taller than the
3558         screen.
3559
3560                                                 *'guioptions'* *'go'*
3561 'guioptions' 'go'       string  (default "egmrLtT"   (MS-Windows),
3562                                          "aegimrLtT" (GTK, Motif and Athena))
3563                         global
3564                         {not in Vi}
3565                         {only available when compiled with GUI enabled}
3566         This option only has an effect in the GUI version of Vim.  It is a
3567         sequence of letters which describes what components and options of the
3568         GUI should be used.
3569         To avoid problems with flags that are added in the future, use the
3570         "+=" and "-=" feature of ":set" |add-option-flags|.
3571
3572         Valid letters are as follows:
3573                                                         *guioptions_a* *'go-a'*
3574           'a'   Autoselect:  If present, then whenever VISUAL mode is started,
3575                 or the Visual area extended, Vim tries to become the owner of
3576                 the windowing system's global selection.  This means that the
3577                 Visually highlighted text is available for pasting into other
3578                 applications as well as into Vim itself.  When the Visual mode
3579                 ends, possibly due to an operation on the text, or when an
3580                 application wants to paste the selection, the highlighted text
3581                 is automatically yanked into the "* selection register.
3582                 Thus the selection is still available for pasting into other
3583                 applications after the VISUAL mode has ended.
3584                     If not present, then Vim won't become the owner of the
3585                 windowing system's global selection unless explicitly told to
3586                 by a yank or delete operation for the "* register.
3587                 The same applies to the modeless selection.
3588                                                                 *'go-A'*
3589           'A'   Autoselect for the modeless selection.  Like 'a', but only
3590                 applies to the modeless selection.
3591
3592                     'guioptions'   autoselect Visual  autoselect modeless ~
3593                          ""              -                       -
3594                          "a"            yes                     yes
3595                          "A"             -                      yes
3596                          "aA"           yes                     yes
3597
3598                                                                 *'go-c'*
3599           'c'   Use console dialogs instead of popup dialogs for simple
3600                 choices.
3601                                                                 *'go-e'*
3602           'e'   Add tab pages when indicated with 'showtabline'.
3603                 'guitablabel' can be used to change the text in the labels.
3604                 When 'e' is missing a non-GUI tab pages line may be used.
3605                 The GUI tabs are only supported on some systems, currently
3606                 GTK, Motif, Mac OS/X and MS-Windows.
3607                                                                 *'go-f'*
3608           'f'   Foreground: Don't use fork() to detach the GUI from the shell
3609                 where it was started.  Use this for programs that wait for the
3610                 editor to finish (e.g., an e-mail program).  Alternatively you
3611                 can use "gvim -f" or ":gui -f" to start the GUI in the
3612                 foreground.  |gui-fork|
3613                 Note: Set this option in the vimrc file.  The forking may have
3614                 happened already when the |gvimrc| file is read.
3615                                                                 *'go-i'*
3616           'i'   Use a Vim icon.  For GTK with KDE it is used in the left-upper
3617                 corner of the window.  It's black&white on non-GTK, because of
3618                 limitations of X11.  For a color icon, see |X11-icon|.
3619                                                                 *'go-m'*
3620           'm'   Menu bar is present.
3621                                                                 *'go-M'*
3622           'M'   The system menu "$VIMRUNTIME/menu.vim" is not sourced.  Note
3623                 that this flag must be added in the .vimrc file, before
3624                 switching on syntax or filetype recognition (when the |gvimrc|
3625                 file is sourced the system menu has already been loaded; the
3626                 ":syntax on" and ":filetype on" commands load the menu too).
3627                                                                 *'go-g'*
3628           'g'   Grey menu items: Make menu items that are not active grey.  If
3629                 'g' is not included inactive menu items are not shown at all.
3630                 Exception: Athena will always use grey menu items.
3631                                                                 *'go-t'*
3632           't'   Include tearoff menu items.  Currently only works for Win32,
3633                 GTK+, and Motif 1.2 GUI.
3634                                                                 *'go-T'*
3635           'T'   Include Toolbar.  Currently only in Win32, GTK+, Motif, Photon
3636                 and Athena GUIs.
3637                                                                 *'go-r'*
3638           'r'   Right-hand scrollbar is always present.
3639                                                                 *'go-R'*
3640           'R'   Right-hand scrollbar is present when there is a vertically
3641                 split window.
3642                                                                 *'go-l'*
3643           'l'   Left-hand scrollbar is always present.
3644                                                                 *'go-L'*
3645           'L'   Left-hand scrollbar is present when there is a vertically
3646                 split window.
3647                                                                 *'go-b'*
3648           'b'   Bottom (horizontal) scrollbar is present.  Its size depends on
3649                 the longest visible line, or on the cursor line if the 'h'
3650                 flag is included. |gui-horiz-scroll|
3651                                                                 *'go-h'*
3652           'h'   Limit horizontal scrollbar size to the length of the cursor
3653                 line.  Reduces computations. |gui-horiz-scroll|
3654
3655         And yes, you may even have scrollbars on the left AND the right if
3656         you really want to :-).  See |gui-scrollbars| for more information.
3657
3658                                                                 *'go-v'*
3659           'v'   Use a vertical button layout for dialogs.  When not included,
3660                 a horizontal layout is preferred, but when it doesn't fit a
3661                 vertical layout is used anyway.
3662                                                                 *'go-p'*
3663           'p'   Use Pointer callbacks for X11 GUI.  This is required for some
3664                 window managers.  If the cursor is not blinking or hollow at
3665                 the right moment, try adding this flag.  This must be done
3666                 before starting the GUI.  Set it in your |gvimrc|.  Adding or
3667                 removing it after the GUI has started has no effect.
3668                                                                 *'go-F'*
3669           'F'   Add a footer.  Only for Motif.  See |gui-footer|.
3670
3671
3672                                                 *'guipty'* *'noguipty'*
3673 'guipty'                boolean (default on)
3674                         global
3675                         {not in Vi}
3676                         {only available when compiled with GUI enabled}
3677         Only in the GUI: If on, an attempt is made to open a pseudo-tty for
3678         I/O to/from shell commands.  See |gui-pty|.
3679
3680                                                 *'guitablabel'* *'gtl'*
3681 'guitablabel' 'gtl'     string  (default empty)
3682                         global
3683                         {not in Vi}
3684                         {only available when compiled with GUI enabled and
3685                         with the |+windows| feature}
3686         When nonempty describes the text to use in a label of the GUI tab
3687         pages line.  When empty and when the result is empty Vim will use a
3688         default label.  See |setting-guitablabel| for more info.
3689
3690         The format of this option is like that of 'statusline'.
3691         'guitabtooltip' is used for the tooltip, see below.
3692
3693         Only used when the GUI tab pages line is displayed.  'e' must be
3694         present in 'guioptions'.  For the non-GUI tab pages line 'tabline' is
3695         used.
3696
3697                                                 *'guitabtooltip'* *'gtt'*
3698 'guitabtooltip' 'gtt'   string  (default empty)
3699                         global
3700                         {not in Vi}
3701                         {only available when compiled with GUI enabled and
3702                         with the |+windows| feature}
3703         When nonempty describes the text to use in a tooltip for the GUI tab
3704         pages line.  When empty Vim will use a default tooltip.
3705         This option is otherwise just like 'guitablabel' above.
3706         You can include a line break.  Simplest method is to use |:let|: >
3707                 :let &guitabtooltip = "line one\nline two"
3708 <
3709
3710                                                 *'helpfile'* *'hf'*
3711 'helpfile' 'hf'         string  (default (MSDOS)  "$VIMRUNTIME\doc\help.txt"
3712                                          (others) "$VIMRUNTIME/doc/help.txt")
3713                         global
3714                         {not in Vi}
3715         Name of the main help file.  All distributed help files should be
3716         placed together in one directory.  Additionally, all "doc" directories
3717         in 'runtimepath' will be used.
3718         Environment variables are expanded |:set_env|.  For example:
3719         "$VIMRUNTIME/doc/help.txt".  If $VIMRUNTIME is not set, $VIM is also
3720         tried.  Also see |$VIMRUNTIME| and |option-backslash| about including
3721         spaces and backslashes.
3722         This option cannot be set from a |modeline| or in the |sandbox|, for
3723         security reasons.
3724
3725                                                 *'helpheight'* *'hh'*
3726 'helpheight' 'hh'       number  (default 20)
3727                         global
3728                         {not in Vi}
3729                         {not available when compiled without the |+windows|
3730                         feature}
3731         Minimal initial height of the help window when it is opened with the
3732         ":help" command.  The initial height of the help window is half of the
3733         current window, or (when the 'ea' option is on) the same as other
3734         windows.  When the height is less than 'helpheight', the height is
3735         set to 'helpheight'.  Set to zero to disable.
3736
3737                                                 *'helplang'* *'hlg'*
3738 'helplang' 'hlg'        string  (default: messages language or empty)
3739                         global
3740                         {only available when compiled with the |+multi_lang|
3741                         feature}
3742                         {not in Vi}
3743         Comma separated list of languages.  Vim will use the first language
3744         for which the desired help can be found.  The English help will always
3745         be used as a last resort.  You can add "en" to prefer English over
3746         another language, but that will only find tags that exist in that
3747         language and not in the English help.
3748         Example: >
3749                 :set helplang=de,it
3750 <       This will first search German, then Italian and finally English help
3751         files.
3752         When using |CTRL-]| and ":help!" in a non-English help file Vim will
3753         try to find the tag in the current language before using this option.
3754         See |help-translated|.
3755
3756                                      *'hidden'* *'hid'* *'nohidden'* *'nohid'*
3757 'hidden' 'hid'          boolean (default off)
3758                         global
3759                         {not in Vi}
3760         When off a buffer is unloaded when it is |abandon|ed.  When on a
3761         buffer becomes hidden when it is |abandon|ed.  If the buffer is still
3762         displayed in another window, it does not become hidden, of course.
3763         The commands that move through the buffer list sometimes make a buffer
3764         hidden although the 'hidden' option is off: When the buffer is
3765         modified, 'autowrite' is off or writing is not possible, and the '!'
3766         flag was used.  See also |windows.txt|.
3767         To only make one buffer hidden use the 'bufhidden' option.
3768         This option is set for one command with ":hide {command}" |:hide|.
3769         WARNING: It's easy to forget that you have changes in hidden buffers.
3770         Think twice when using ":q!" or ":qa!".
3771
3772                                                 *'highlight'* *'hl'*
3773 'highlight' 'hl'        string  (default (as a single string):
3774                                      "8:SpecialKey,@:NonText,d:Directory,
3775                                      e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,
3776                                      M:ModeMsg,n:LineNr,r:Question,
3777                                      s:StatusLine,S:StatusLineNC,c:VertSplit,
3778                                      t:Title,v:Visual,w:WarningMsg,W:WildMenu,
3779                                      f:Folded,F:FoldColumn,A:DiffAdd,
3780                                      C:DiffChange,D:DiffDelete,T:DiffText,
3781                                      >:SignColumn,B:SpellBad,P:SpellCap,
3782                                      R:SpellRare,L:SpellLocal,-:Conceal,
3783                                      +:Pmenu,=:PmenuSel,
3784                                      x:PmenuSbar,X:PmenuThumb")
3785                         global
3786                         {not in Vi}
3787         This option can be used to set highlighting mode for various
3788         occasions.  It is a comma separated list of character pairs.  The
3789         first character in a pair gives the occasion, the second the mode to
3790         use for that occasion.  The occasions are:
3791         |hl-SpecialKey|  8  Meta and special keys listed with ":map"
3792         |hl-NonText|     @  '~' and '@' at the end of the window and
3793                             characters from 'showbreak'
3794         |hl-Directory|   d  directories in CTRL-D listing and other special
3795                             things in listings
3796         |hl-ErrorMsg|    e  error messages
3797                          h  (obsolete, ignored)
3798         |hl-IncSearch|   i  'incsearch' highlighting
3799         |hl-Search|      l  last search pattern highlighting (see 'hlsearch')
3800         |hl-MoreMsg|     m  |more-prompt|
3801         |hl-ModeMsg|     M  Mode (e.g., "-- INSERT --")
3802         |hl-LineNr|      n  line number for ":number" and ":#" commands, and
3803                             when 'number' or 'relativenumber' option is set.
3804         |hl-Question|    r  |hit-enter| prompt and yes/no questions
3805         |hl-StatusLine|  s  status line of current window |status-line|
3806         |hl-StatusLineNC| S  status lines of not-current windows
3807         |hl-Title|       t  Titles for output from ":set all", ":autocmd" etc.
3808         |hl-VertSplit|   c  column used to separate vertically split windows
3809         |hl-Visual|      v  Visual mode
3810         |hl-VisualNOS|   V  Visual mode when Vim does is "Not Owning the
3811                             Selection" Only X11 Gui's |gui-x11| and
3812                             |xterm-clipboard|.
3813         |hl-WarningMsg|  w  warning messages
3814         |hl-WildMenu|    W  wildcard matches displayed for 'wildmenu'
3815         |hl-Folded|      f  line used for closed folds
3816         |hl-FoldColumn|  F  'foldcolumn'
3817         |hl-DiffAdd|     A  added line in diff mode
3818         |hl-DiffChange|  C  changed line in diff mode
3819         |hl-DiffDelete|  D  deleted line in diff mode
3820         |hl-DiffText|    T  inserted text in diff mode
3821         |hl-SignColumn|  >  column used for |signs|
3822         |hl-SpellBad|    B  misspelled word |spell|
3823         |hl-SpellCap|    P  word that should start with capital |spell|
3824         |hl-SpellRare|   R  rare word |spell|
3825         |hl-SpellLocal|  L  word from other region |spell|
3826         |hl-Conceal|     -  the placeholders used for concealed characters
3827                             (see 'conceallevel')
3828         |hl-Pmenu|       +  popup menu normal line
3829         |hl-PmenuSel|    =  popup menu normal line
3830         |hl-PmenuSbar|   x  popup menu scrollbar
3831         |hl-PmenuThumb|  X  popup menu scrollbar thumb
3832
3833         The display modes are:
3834                 r       reverse         (termcap entry "mr" and "me")
3835                 i       italic          (termcap entry "ZH" and "ZR")
3836                 b       bold            (termcap entry "md" and "me")
3837                 s       standout        (termcap entry "so" and "se")
3838                 u       underline       (termcap entry "us" and "ue")
3839                 c       undercurl       (termcap entry "Cs" and "Ce")
3840                 n       no highlighting
3841                 -       no highlighting
3842                 :       use a highlight group
3843         The default is used for occasions that are not included.
3844         If you want to change what the display modes do, see |dos-colors|
3845         for an example.
3846         When using the ':' display mode, this must be followed by the name of
3847         a highlight group.  A highlight group can be used to define any type
3848         of highlighting, including using color.  See |:highlight| on how to
3849         define one.  The default uses a different group for each occasion.
3850         See |highlight-default| for the default highlight groups.
3851
3852                                  *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'*
3853 'hlsearch' 'hls'        boolean (default off)
3854                         global
3855                         {not in Vi}
3856                         {not available when compiled without the
3857                         |+extra_search| feature}
3858         When there is a previous search pattern, highlight all its matches.
3859         The type of highlighting used can be set with the 'l' occasion in the
3860         'highlight' option.  This uses the "Search" highlight group by
3861         default.  Note that only the matching text is highlighted, any offsets
3862         are not applied.
3863         See also: 'incsearch' and |:match|.
3864         When you get bored looking at the highlighted matches, you can turn it
3865         off with |:nohlsearch|.  This does not change the option value, as
3866         soon as you use a search command, the highlighting comes back.
3867         'redrawtime' specifies the maximum time spent on finding matches.
3868         When the search pattern can match an end-of-line, Vim will try to
3869         highlight all of the matched text.  However, this depends on where the
3870         search starts.  This will be the first line in the window or the first
3871         line below a closed fold.  A match in a previous line which is not
3872         drawn may not continue in a newly drawn line.
3873         You can specify whether the highlight status is restored on startup
3874         with the 'h' flag in 'viminfo' |viminfo-h|.
3875         NOTE: This option is reset when 'compatible' is set.
3876
3877                                                 *'history'* *'hi'*
3878 'history' 'hi'          number  (Vim default: 20, Vi default: 0)
3879                         global
3880                         {not in Vi}
3881         A history of ":" commands, and a history of previous search patterns
3882         are remembered.  This option decides how many entries may be stored in
3883         each of these histories (see |cmdline-editing|).
3884         NOTE: This option is set to the Vi default value when 'compatible' is
3885         set and to the Vim default value when 'compatible' is reset.
3886
3887                                          *'hkmap'* *'hk'* *'nohkmap'* *'nohk'*
3888 'hkmap' 'hk'            boolean (default off)
3889                         global
3890                         {not in Vi}
3891                         {only available when compiled with the |+rightleft|
3892                         feature}
3893         When on, the keyboard is mapped for the Hebrew character set.
3894         Normally you would set 'allowrevins' and use CTRL-_ in insert mode to
3895         toggle this option.  See |rileft.txt|.
3896         NOTE: This option is reset when 'compatible' is set.
3897
3898                                  *'hkmapp'* *'hkp'* *'nohkmapp'* *'nohkp'*
3899 'hkmapp' 'hkp'          boolean (default off)
3900                         global
3901                         {not in Vi}
3902                         {only available when compiled with the |+rightleft|
3903                         feature}
3904         When on, phonetic keyboard mapping is used.  'hkmap' must also be on.
3905         This is useful if you have a non-Hebrew keyboard.
3906         See |rileft.txt|.
3907         NOTE: This option is reset when 'compatible' is set.
3908
3909                                                 *'icon'* *'noicon'*
3910 'icon'                  boolean (default off, on when title can be restored)
3911                         global
3912                         {not in Vi}
3913                         {not available when compiled without the |+title|
3914                         feature}
3915         When on, the icon text of the window will be set to the value of
3916         'iconstring' (if it is not empty), or to the name of the file
3917         currently being edited.  Only the last part of the name is used.
3918         Overridden by the 'iconstring' option.
3919         Only works if the terminal supports setting window icons (currently
3920         only X11 GUI and terminals with a non-empty 't_IS' option - these are
3921         Unix xterm and iris-ansi by default, where 't_IS' is taken from the
3922         builtin termcap).
3923         When Vim was compiled with HAVE_X11 defined, the original icon will be
3924         restored if possible |X11|.  See |X11-icon| for changing the icon on
3925         X11.
3926
3927                                                 *'iconstring'*
3928 'iconstring'            string  (default "")
3929                         global
3930                         {not in Vi}
3931                         {not available when compiled without the |+title|
3932                         feature}
3933         When this option is not empty, it will be used for the icon text of
3934         the window.  This happens only when the 'icon' option is on.
3935         Only works if the terminal supports setting window icon text
3936         (currently only X11 GUI and terminals with a non-empty 't_IS' option).
3937         Does not work for MS Windows.
3938         When Vim was compiled with HAVE_X11 defined, the original icon will be
3939         restored if possible |X11|.
3940         When this option contains printf-style '%' items, they will be
3941         expanded according to the rules used for 'statusline'.  See
3942         'titlestring' for example settings.
3943         {not available when compiled without the |+statusline| feature}
3944
3945                         *'ignorecase'* *'ic'* *'noignorecase'* *'noic'*
3946 'ignorecase' 'ic'       boolean (default off)
3947                         global
3948         Ignore case in search patterns.  Also used when searching in the tags
3949         file.
3950         Also see 'smartcase'.
3951         Can be overruled by using "\c" or "\C" in the pattern, see
3952         |/ignorecase|.
3953
3954                                                 *'imactivatekey'* *'imak'*
3955 'imactivatekey' 'imak'  string (default "")
3956                         global
3957                         {not in Vi}
3958                         {only available when compiled with |+xim| and
3959                         |+GUI_GTK|}                             *E599*
3960         Specifies the key that your Input Method in X-Windows uses for
3961         activation.  When this is specified correctly, vim can fully control
3962         IM with 'imcmdline', 'iminsert' and 'imsearch'.
3963         You can't use this option to change the activation key, the option
3964         tells Vim what the key is.
3965         Format:
3966                 [MODIFIER_FLAG-]KEY_STRING
3967
3968         These characters can be used for MODIFIER_FLAG (case is ignored):
3969                 S           Shift key
3970                 L           Lock key
3971                 C           Control key
3972                 1           Mod1 key
3973                 2           Mod2 key
3974                 3           Mod3 key
3975                 4           Mod4 key
3976                 5           Mod5 key
3977         Combinations are allowed, for example "S-C-space" or "SC-space" are
3978         both shift+ctrl+space.
3979         See <X11/keysymdef.h> and XStringToKeysym for KEY_STRING.
3980
3981         Example: >
3982                 :set imactivatekey=S-space
3983 <       "S-space" means shift+space.  This is the activation key for kinput2 +
3984         canna (Japanese), and ami (Korean).
3985
3986                                 *'imcmdline'* *'imc'* *'noimcmdline'* *'noimc'*
3987 'imcmdline' 'imc'       boolean (default off)
3988                         global
3989                         {not in Vi}
3990                         {only available when compiled with the |+xim|,
3991                         |+multi_byte_ime| or |global-ime| features}
3992         When set the Input Method is always on when starting to edit a command
3993         line, unless entering a search pattern (see 'imsearch' for that).
3994         Setting this option is useful when your input method allows entering
3995         English characters directly, e.g., when it's used to type accented
3996         characters with dead keys.
3997
3998                                 *'imdisable'* *'imd'* *'noimdisable'* *'noimd'*
3999 'imdisable' 'imd'       boolean (default off, on for some systems (SGI))
4000                         global
4001                         {not in Vi}
4002                         {only available when compiled with the |+xim|,
4003                         |+multi_byte_ime| or |global-ime| features}
4004         When set the Input Method is never used.  This is useful to disable
4005         the IM when it doesn't work properly.
4006         Currently this option is on by default for SGI/IRIX machines.  This
4007         may change in later releases.
4008
4009                                                 *'iminsert'* *'imi'*
4010 'iminsert' 'imi'        number (default 0, 2 when an input method is supported)
4011                         local to buffer
4012                         {not in Vi}
4013         Specifies whether :lmap or an Input Method (IM) is to be used in
4014         Insert mode.  Valid values:
4015                 0       :lmap is off and IM is off
4016                 1       :lmap is ON and IM is off
4017                 2       :lmap is off and IM is ON
4018         2 is available only when compiled with the |+multi_byte_ime|, |+xim|
4019         or |global-ime|.
4020         To always reset the option to zero when leaving Insert mode with <Esc>
4021         this can be used: >
4022                 :inoremap <ESC> <ESC>:set iminsert=0<CR>
4023 <       This makes :lmap and IM turn off automatically when leaving Insert
4024         mode.
4025         Note that this option changes when using CTRL-^ in Insert mode
4026         |i_CTRL-^|.
4027         The value is set to 1 when setting 'keymap' to a valid keymap name.
4028         It is also used for the argument of commands like "r" and "f".
4029         The value 0 may not work correctly with Athena and Motif with some XIM
4030         methods.  Use 'imdisable' to disable XIM then.
4031
4032                                                 *'imsearch'* *'ims'*
4033 'imsearch' 'ims'        number (default 0, 2 when an input method is supported)
4034                         local to buffer
4035                         {not in Vi}
4036         Specifies whether :lmap or an Input Method (IM) is to be used when
4037         entering a search pattern.  Valid values:
4038                 -1      the value of 'iminsert' is used, makes it look like
4039                         'iminsert' is also used when typing a search pattern
4040                 0       :lmap is off and IM is off
4041                 1       :lmap is ON and IM is off
4042                 2       :lmap is off and IM is ON
4043         Note that this option changes when using CTRL-^ in Command-line mode
4044         |c_CTRL-^|.
4045         The value is set to 1 when it is not -1 and setting the 'keymap'
4046         option to a valid keymap name.
4047         The value 0 may not work correctly with Athena and Motif with some XIM
4048         methods.  Use 'imdisable' to disable XIM then.
4049
4050                                                 *'include'* *'inc'*
4051 'include' 'inc'         string  (default "^\s*#\s*include")
4052                         global or local to buffer |global-local|
4053                         {not in Vi}
4054                         {not available when compiled without the
4055                         |+find_in_path| feature}
4056         Pattern to be used to find an include command.  It is a search
4057         pattern, just like for the "/" command (See |pattern|).  The default
4058         value is for C programs.  This option is used for the commands "[i",
4059         "]I", "[d", etc.
4060         Normally the 'isfname' option is used to recognize the file name that
4061         comes after the matched pattern.  But if "\zs" appears in the pattern
4062         then the text matched from "\zs" to the end, or until "\ze" if it
4063         appears, is used as the file name.  Use this to include characters
4064         that are not in 'isfname', such as a space.  You can then use
4065         'includeexpr' to process the matched text.
4066         See |option-backslash| about including spaces and backslashes.
4067
4068                                                 *'includeexpr'* *'inex'*
4069 'includeexpr' 'inex'    string  (default "")
4070                         local to buffer
4071                         {not in Vi}
4072                         {not available when compiled without the
4073                         |+find_in_path| or |+eval| features}
4074         Expression to be used to transform the string found with the 'include'
4075         option to a file name.  Mostly useful to change "." to "/" for Java: >
4076                 :set includeexpr=substitute(v:fname,'\\.','/','g')
4077 <       The "v:fname" variable will be set to the file name that was detected.
4078
4079         Also used for the |gf| command if an unmodified file name can't be
4080         found.  Allows doing "gf" on the name after an 'include' statement.
4081         Also used for |<cfile>|.
4082
4083         The expression may be evaluated in the |sandbox|, see
4084         |sandbox-option|.
4085
4086         It is not allowed to change text or jump to another window while
4087         evaluating 'includeexpr' |textlock|.
4088
4089                                  *'incsearch'* *'is'* *'noincsearch'* *'nois'*
4090 'incsearch' 'is'        boolean (default off)
4091                         global
4092                         {not in Vi}
4093                         {not available when compiled without the
4094                         |+extra_search| features}
4095         While typing a search command, show where the pattern, as it was typed
4096         so far, matches.  The matched string is highlighted.  If the pattern
4097         is invalid or not found, nothing is shown.  The screen will be updated
4098         often, this is only useful on fast terminals.
4099         Note that the match will be shown, but the cursor will return to its
4100         original position when no match is found and when pressing <Esc>.  You
4101         still need to finish the search command with <Enter> to move the
4102         cursor to the match.
4103         When compiled with the |+reltime| feature Vim only searches for about
4104         half a second.  With a complicated pattern and/or a lot of text the
4105         match may not be found.  This is to avoid that Vim hangs while you
4106         are typing the pattern.
4107         The highlighting can be set with the 'i' flag in 'highlight'.
4108         See also: 'hlsearch'.
4109         CTRL-L can be used to add one character from after the current match
4110         to the command line.  If 'ignorecase' and 'smartcase' are set and the
4111         command line has no uppercase characters, the added character is
4112         converted to lowercase.
4113         CTRL-R CTRL-W can be used to add the word at the end of the current
4114         match, excluding the characters that were already typed.
4115         NOTE: This option is reset when 'compatible' is set.
4116
4117                                                 *'indentexpr'* *'inde'*
4118 'indentexpr' 'inde'     string  (default "")
4119                         local to buffer
4120                         {not in Vi}
4121                         {not available when compiled without the |+cindent|
4122                         or |+eval| features}
4123         Expression which is evaluated to obtain the proper indent for a line.
4124         It is used when a new line is created, for the |=| operator and
4125         in Insert mode as specified with the 'indentkeys' option.
4126         When this option is not empty, it overrules the 'cindent' and
4127         'smartindent' indenting.  When 'lisp' is set, this option is
4128         overridden by the Lisp indentation algorithm.
4129         When 'paste' is set this option is not used for indenting.
4130         The expression is evaluated with |v:lnum| set to the line number for
4131         which the indent is to be computed.  The cursor is also in this line
4132         when the expression is evaluated (but it may be moved around).
4133         The expression must return the number of spaces worth of indent.  It
4134         can return "-1" to keep the current indent (this means 'autoindent' is
4135         used for the indent).
4136         Functions useful for computing the indent are |indent()|, |cindent()|
4137         and |lispindent()|.
4138         The evaluation of the expression must not have side effects!  It must
4139         not change the text, jump to another window, etc.  Afterwards the
4140         cursor position is always restored, thus the cursor may be moved.
4141         Normally this option would be set to call a function: >
4142                 :set indentexpr=GetMyIndent()
4143 <       Error messages will be suppressed, unless the 'debug' option contains
4144         "msg".
4145         See |indent-expression|.
4146         NOTE: This option is made empty when 'compatible' is set.
4147
4148         The expression may be evaluated in the |sandbox|, see
4149         |sandbox-option|.
4150
4151         It is not allowed to change text or jump to another window while
4152         evaluating 'indentexpr' |textlock|.
4153
4154
4155                                                 *'indentkeys'* *'indk'*
4156 'indentkeys' 'indk'     string  (default "0{,0},:,0#,!^F,o,O,e")
4157                         local to buffer
4158                         {not in Vi}
4159                         {not available when compiled without the |+cindent|
4160                         feature}
4161         A list of keys that, when typed in Insert mode, cause reindenting of
4162         the current line.  Only happens if 'indentexpr' isn't empty.
4163         The format is identical to 'cinkeys', see |indentkeys-format|.
4164         See |C-indenting| and |indent-expression|.
4165
4166                         *'infercase'* *'inf'* *'noinfercase'* *'noinf'*
4167 'infercase' 'inf'       boolean (default off)
4168                         local to buffer
4169                         {not in Vi}
4170         When doing keyword completion in insert mode |ins-completion|, and
4171         'ignorecase' is also on, the case of the match is adjusted depending
4172         on the typed text.  If the typed text contains a lowercase letter
4173         where the match has an upper case letter, the completed part is made
4174         lowercase.  If the typed text has no lowercase letters and the match
4175         has a lowercase letter where the typed text has an uppercase letter,
4176         and there is a letter before it, the completed part is made uppercase.
4177         With 'noinfercase' the match is used as-is.
4178
4179                         *'insertmode'* *'im'* *'noinsertmode'* *'noim'*
4180 'insertmode' 'im'       boolean (default off)
4181                         global
4182                         {not in Vi}
4183         Makes Vim work in a way that Insert mode is the default mode.  Useful
4184         if you want to use Vim as a modeless editor.  Used for |evim|.
4185         These Insert mode commands will be useful:
4186         - Use the cursor keys to move around.
4187         - Use CTRL-O to execute one Normal mode command |i_CTRL-O|).  When
4188           this is a mapping, it is executed as if 'insertmode' was off.
4189           Normal mode remains active until the mapping is finished.
4190         - Use CTRL-L to execute a number of Normal mode commands, then use
4191           <Esc> to get back to Insert mode.  Note that CTRL-L moves the cursor
4192           left, like <Esc> does when 'insertmode' isn't set.  |i_CTRL-L|
4193
4194         These items change when 'insertmode' is set:
4195         - when starting to edit of a file, Vim goes to Insert mode.
4196         - <Esc> in Insert mode is a no-op and beeps.
4197         - <Esc> in Normal mode makes Vim go to Insert mode.
4198         - CTRL-L in Insert mode is a command, it is not inserted.
4199         - CTRL-Z in Insert mode suspends Vim, see |CTRL-Z|.     *i_CTRL-Z*
4200         However, when <Esc> is used inside a mapping, it behaves like
4201         'insertmode' was not set.  This was done to be able to use the same
4202         mappings with 'insertmode' set or not set.
4203         When executing commands with |:normal| 'insertmode' is not used.
4204
4205         NOTE: This option is reset when 'compatible' is set.
4206
4207                                                 *'isfname'* *'isf'*
4208 'isfname' 'isf'         string  (default for MS-DOS, Win32 and OS/2:
4209                              "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],:,@-@,!,~,="
4210                             for AMIGA: "@,48-57,/,.,-,_,+,,,$,:"
4211                             for VMS: "@,48-57,/,.,-,_,+,,,#,$,%,<,>,[,],:,;,~"
4212                             for OS/390: "@,240-249,/,.,-,_,+,,,#,$,%,~,="
4213                             otherwise: "@,48-57,/,.,-,_,+,,,#,$,%,~,=")
4214                         global
4215                         {not in Vi}
4216         The characters specified by this option are included in file names and
4217         path names.  Filenames are used for commands like "gf", "[i" and in
4218         the tags file.  It is also used for "\f" in a |pattern|.
4219         Multi-byte characters 256 and above are always included, only the
4220         characters up to 255 are specified with this option.
4221         For UTF-8 the characters 0xa0 to 0xff are included as well.
4222         Think twice before adding white space to this option.  Although a
4223         space may appear inside a file name, the effect will be that Vim
4224         doesn't know where a file name starts or ends when doing completion.
4225         It most likely works better without a space in 'isfname'.
4226
4227         Note that on systems using a backslash as path separator, Vim tries to
4228         do its best to make it work as you would expect.  That is a bit
4229         tricky, since Vi originally used the backslash to escape special
4230         characters.  Vim will not remove a backslash in front of a normal file
4231         name character on these systems, but it will on Unix and alikes.  The
4232         '&' and '^' are not included by default, because these are special for
4233         cmd.exe.
4234
4235         The format of this option is a list of parts, separated with commas.
4236         Each part can be a single character number or a range.  A range is two
4237         character numbers with '-' in between.  A character number can be a
4238         decimal number between 0 and 255 or the ASCII character itself (does
4239         not work for digits).  Example:
4240                 "_,-,128-140,#-43"      (include '_' and '-' and the range
4241                                         128 to 140 and '#' to 43)
4242         If a part starts with '^', the following character number or range
4243         will be excluded from the option.  The option is interpreted from left
4244         to right.  Put the excluded character after the range where it is
4245         included.  To include '^' itself use it as the last character of the
4246         option or the end of a range.  Example:
4247                 "^a-z,#,^"      (exclude 'a' to 'z', include '#' and '^')
4248         If the character is '@', all characters where isalpha() returns TRUE
4249         are included.  Normally these are the characters a to z and A to Z,
4250         plus accented characters.  To include '@' itself use "@-@".  Examples:
4251                 "@,^a-z"        All alphabetic characters, excluding lower
4252                                 case ASCII letters.
4253                 "a-z,A-Z,@-@"   All letters plus the '@' character.
4254         A comma can be included by using it where a character number is
4255         expected.  Example:
4256                 "48-57,,,_"     Digits, comma and underscore.
4257         A comma can be excluded by prepending a '^'.  Example:
4258                 " -~,^,,9"      All characters from space to '~', excluding
4259                                 comma, plus <Tab>.
4260         See |option-backslash| about including spaces and backslashes.
4261
4262                                                 *'isident'* *'isi'*
4263 'isident' 'isi'         string  (default for MS-DOS, Win32 and OS/2:
4264                                            "@,48-57,_,128-167,224-235"
4265                                 otherwise: "@,48-57,_,192-255")
4266                         global
4267                         {not in Vi}
4268         The characters given by this option are included in identifiers.
4269         Identifiers are used in recognizing environment variables and after a
4270         match of the 'define' option.  It is also used for "\i" in a
4271         |pattern|.  See 'isfname' for a description of the format of this
4272         option.
4273         Careful: If you change this option, it might break expanding
4274         environment variables.  E.g., when '/' is included and Vim tries to
4275         expand "$HOME/.viminfo".  Maybe you should change 'iskeyword' instead.
4276
4277                                                 *'iskeyword'* *'isk'*
4278 'iskeyword' 'isk'       string (Vim default for MS-DOS and Win32:
4279                                             "@,48-57,_,128-167,224-235"
4280                                    otherwise:  "@,48-57,_,192-255"
4281                                 Vi default: "@,48-57,_")
4282                         local to buffer
4283                         {not in Vi}
4284         Keywords are used in searching and recognizing with many commands:
4285         "w", "*", "[i", etc.  It is also used for "\k" in a |pattern|.  See
4286         'isfname' for a description of the format of this option.  For C
4287         programs you could use "a-z,A-Z,48-57,_,.,-,>".
4288         For a help file it is set to all non-blank printable characters except
4289         '*', '"' and '|' (so that CTRL-] on a command finds the help for that
4290         command).
4291         When the 'lisp' option is on the '-' character is always included.
4292         NOTE: This option is set to the Vi default value when 'compatible' is
4293         set and to the Vim default value when 'compatible' is reset.
4294
4295                                                 *'isprint'* *'isp'*
4296 'isprint' 'isp' string  (default for MS-DOS, Win32, OS/2 and Macintosh:
4297                                 "@,~-255"; otherwise: "@,161-255")
4298                         global
4299                         {not in Vi}
4300         The characters given by this option are displayed directly on the
4301         screen.  It is also used for "\p" in a |pattern|.  The characters from
4302         space (ASCII 32) to '~' (ASCII 126) are always displayed directly,
4303         even when they are not included in 'isprint' or excluded.  See
4304         'isfname' for a description of the format of this option.
4305
4306         Non-printable characters are displayed with two characters:
4307                   0 -  31       "^@" - "^_"
4308                  32 - 126       always single characters
4309                    127          "^?"
4310                 128 - 159       "~@" - "~_"
4311                 160 - 254       "| " - "|~"
4312                    255          "~?"
4313         When 'encoding' is a Unicode one, illegal bytes from 128 to 255 are
4314         displayed as <xx>, with the hexadecimal value of the byte.
4315         When 'display' contains "uhex" all unprintable characters are
4316         displayed as <xx>.
4317         The SpecialKey highlighting will be used for unprintable characters.
4318         |hl-SpecialKey|
4319
4320         Multi-byte characters 256 and above are always included, only the
4321         characters up to 255 are specified with this option.  When a character
4322         is printable but it is not available in the current font, a
4323         replacement character will be shown.
4324         Unprintable and zero-width Unicode characters are displayed as <xxxx>.
4325         There is no option to specify these characters.
4326
4327                         *'joinspaces'* *'js'* *'nojoinspaces'* *'nojs'*
4328 'joinspaces' 'js'       boolean (default on)
4329                         global
4330                         {not in Vi}
4331         Insert two spaces after a '.', '?' and '!' with a join command.
4332         When 'cpoptions' includes the 'j' flag, only do this after a '.'.
4333         Otherwise only one space is inserted.
4334         NOTE: This option is set when 'compatible' is set.
4335
4336                                                         *'key'*
4337 'key'                   string  (default "")
4338                         local to buffer
4339                         {not in Vi}
4340                         {only available when compiled with the |+cryptv|
4341                         feature}
4342         The key that is used for encrypting and decrypting the current buffer.
4343         See |encryption| and 'cryptmethod'.
4344         Careful: Do not set the key value by hand, someone might see the typed
4345         key.  Use the |:X| command.  But you can make 'key' empty: >
4346                 :set key=
4347 <       It is not possible to get the value of this option with ":set key" or
4348         "echo &key".  This is to avoid showing it to someone who shouldn't
4349         know.  It also means you cannot see it yourself once you have set it,
4350         be careful not to make a typing error!
4351         You can use "&key" in an expression to detect whether encryption is
4352         enabled.  When 'key' is set it returns "*****" (five stars).
4353
4354                                         *'keymap'* *'kmp'* *E544*
4355 'keymap' 'kmp'          string  (default "")
4356                         local to buffer
4357                         {not in Vi}
4358                         {only available when compiled with the |+keymap|
4359                         feature}
4360         Name of a keyboard mapping.  See |mbyte-keymap|.
4361         Setting this option to a valid keymap name has the side effect of
4362         setting 'iminsert' to one, so that the keymap becomes effective.
4363         'imsearch' is also set to one, unless it was -1
4364         Only normal file name characters can be used, "/\*?[|<>" are illegal.
4365
4366                                         *'keymodel'* *'km'*
4367 'keymodel' 'km'         string  (default "")
4368                         global
4369                         {not in Vi}
4370         List of comma separated words, which enable special things that keys
4371         can do.  These values can be used:
4372            startsel     Using a shifted special key starts selection (either
4373                         Select mode or Visual mode, depending on "key" being
4374                         present in 'selectmode').
4375            stopsel      Using a not-shifted special key stops selection.
4376         Special keys in this context are the cursor keys, <End>, <Home>,
4377         <PageUp> and <PageDown>.
4378         The 'keymodel' option is set by the |:behave| command.
4379
4380                                         *'keywordprg'* *'kp'*
4381 'keywordprg' 'kp'       string  (default "man" or "man -s",  DOS: ":help",
4382                                                 OS/2: "view /", VMS: "help")
4383                         global or local to buffer |global-local|
4384                         {not in Vi}
4385         Program to use for the |K| command.  Environment variables are
4386         expanded |:set_env|.  ":help" may be used to access the Vim internal
4387         help.  (Note that previously setting the global option to the empty
4388         value did this, which is now deprecated.)
4389         When "man" is used, Vim will automatically translate a count for the
4390         "K" command to a section number.  Also for "man -s", in which case the
4391         "-s" is removed when there is no count.
4392         See |option-backslash| about including spaces and backslashes.
4393         Example: >
4394                 :set keywordprg=man\ -s
4395 <       This option cannot be set from a |modeline| or in the |sandbox|, for
4396         security reasons.
4397
4398                                         *'langmap'* *'lmap'* *E357* *E358*
4399 'langmap' 'lmap'        string  (default "")
4400                         global
4401                         {not in Vi}
4402                         {only available when compiled with the |+langmap|
4403                         feature}
4404         This option allows switching your keyboard into a special language
4405         mode.  When you are typing text in Insert mode the characters are
4406         inserted directly.  When in command mode the 'langmap' option takes
4407         care of translating these special characters to the original meaning
4408         of the key.  This means you don't have to change the keyboard mode to
4409         be able to execute Normal mode commands.
4410         This is the opposite of the 'keymap' option, where characters are
4411         mapped in Insert mode.
4412
4413         Example (for Greek, in UTF-8):                          *greek*  >
4414             :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
4415 <       Example (exchanges meaning of z and y for commands): >
4416             :set langmap=zy,yz,ZY,YZ
4417 <
4418         The 'langmap' option is a list of parts, separated with commas.  Each
4419         part can be in one of two forms:
4420         1.  A list of pairs.  Each pair is a "from" character immediately
4421             followed by the "to" character.  Examples: "aA", "aAbBcC".
4422         2.  A list of "from" characters, a semi-colon and a list of "to"
4423             characters.  Example: "abc;ABC"
4424         Example: "aA,fgh;FGH,cCdDeE"
4425         Special characters need to be preceded with a backslash.  These are
4426         ";", ',' and backslash itself.
4427
4428         This will allow you to activate vim actions without having to switch
4429         back and forth between the languages.  Your language characters will
4430         be understood as normal vim English characters (according to the
4431         langmap mappings) in the following cases:
4432          o Normal/Visual mode (commands, buffer/register names, user mappings)
4433          o Insert/Replace Mode: Register names after CTRL-R
4434          o Insert/Replace Mode: Mappings
4435         Characters entered in Command-line mode will NOT be affected by
4436         this option.   Note that this option can be changed at any time
4437         allowing to switch between mappings for different languages/encodings.
4438         Use a mapping to avoid having to type it each time!
4439
4440                                         *'langmenu'* *'lm'*
4441 'langmenu' 'lm'         string  (default "")
4442                         global
4443                         {not in Vi}
4444                         {only available when compiled with the |+menu| and
4445                         |+multi_lang| features}
4446         Language to use for menu translation.  Tells which file is loaded
4447         from the "lang" directory in 'runtimepath': >
4448                 "lang/menu_" . &langmenu . ".vim"
4449 <       (without the spaces).  For example, to always use the Dutch menus, no
4450         matter what $LANG is set to: >
4451                 :set langmenu=nl_NL.ISO_8859-1
4452 <       When 'langmenu' is empty, |v:lang| is used.
4453         Only normal file name characters can be used, "/\*?[|<>" are illegal.
4454         If your $LANG is set to a non-English language but you do want to use
4455         the English menus: >
4456                 :set langmenu=none
4457 <       This option must be set before loading menus, switching on filetype
4458         detection or syntax highlighting.  Once the menus are defined setting
4459         this option has no effect.  But you could do this: >
4460                 :source $VIMRUNTIME/delmenu.vim
4461                 :set langmenu=de_DE.ISO_8859-1
4462                 :source $VIMRUNTIME/menu.vim
4463 <       Warning: This deletes all menus that you defined yourself!
4464
4465                                         *'laststatus'* *'ls'*
4466 'laststatus' 'ls'       number  (default 1)
4467                         global
4468                         {not in Vi}
4469         The value of this option influences when the last window will have a
4470         status line:
4471                 0: never
4472                 1: only if there are at least two windows
4473                 2: always
4474         The screen looks nicer with a status line if you have several
4475         windows, but it takes another screen line. |status-line|
4476
4477                         *'lazyredraw'* *'lz'* *'nolazyredraw'* *'nolz'*
4478 'lazyredraw' 'lz'       boolean (default off)
4479                         global
4480                         {not in Vi}
4481         When this option is set, the screen will not be redrawn while
4482         executing macros, registers and other commands that have not been
4483         typed.  Also, updating the window title is postponed.  To force an
4484         update use |:redraw|.
4485
4486                         *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
4487 'linebreak' 'lbr'       boolean (default off)
4488                         local to window
4489                         {not in Vi}
4490                         {not available when compiled without the |+linebreak|
4491                         feature}
4492         If on Vim will wrap long lines at a character in 'breakat' rather
4493         than at the last character that fits on the screen.  Unlike
4494         'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
4495         it only affects the way the file is displayed, not its contents.  The
4496         value of 'showbreak' is used to put in front of wrapped lines.
4497         This option is not used when the 'wrap' option is off or 'list' is on.
4498         Note that <Tab> characters after an <EOL> are mostly not displayed
4499         with the right amount of white space.
4500
4501                                                 *'lines'* *E593*
4502 'lines'                 number  (default 24 or terminal height)
4503                         global
4504         Number of lines of the Vim window.
4505         Normally you don't need to set this.  It is done automatically by the
4506         terminal initialization code.  Also see |posix-screen-size|.
4507         When Vim is running in the GUI or in a resizable window, setting this
4508         option will cause the window size to be changed.  When you only want
4509         to use the size for the GUI, put the command in your |gvimrc| file.
4510         Vim limits the number of lines to what fits on the screen.  You can
4511         use this command to get the tallest window possible: >
4512                 :set lines=999
4513 <       Minimum value is 2, maximum value is 1000.
4514         If you get less lines than expected, check the 'guiheadroom' option.
4515         When you set this option and Vim is unable to change the physical
4516         number of lines of the display, the display may be messed up.
4517
4518                                                 *'linespace'* *'lsp'*
4519 'linespace' 'lsp'       number  (default 0, 1 for Win32 GUI)
4520                         global
4521                         {not in Vi}
4522                         {only in the GUI}
4523         Number of pixel lines inserted between characters.  Useful if the font
4524         uses the full character cell height, making lines touch each other.
4525         When non-zero there is room for underlining.
4526         With some fonts there can be too much room between lines (to have
4527         space for ascents and descents).  Then it makes sense to set
4528         'linespace' to a negative value.  This may cause display problems
4529         though!
4530
4531                                                 *'lisp'* *'nolisp'*
4532 'lisp'                  boolean (default off)
4533                         local to buffer
4534                         {not available when compiled without the |+lispindent|
4535                         feature}
4536         Lisp mode: When <Enter> is typed in insert mode set the indent for
4537         the next line to Lisp standards (well, sort of).  Also happens with
4538         "cc" or "S".  'autoindent' must also be on for this to work.  The 'p'
4539         flag in 'cpoptions' changes the method of indenting: Vi compatible or
4540         better.  Also see 'lispwords'.
4541         The '-' character is included in keyword characters.  Redefines the
4542         "=" operator to use this same indentation algorithm rather than
4543         calling an external program if 'equalprg' is empty.
4544         This option is not used when 'paste' is set.
4545         {Vi: Does it a little bit differently}
4546
4547                                                 *'lispwords'* *'lw'*
4548 'lispwords' 'lw'        string  (default is very long)
4549                         global
4550                         {not in Vi}
4551                         {not available when compiled without the |+lispindent|
4552                         feature}
4553         Comma separated list of words that influence the Lisp indenting.
4554         |'lisp'|
4555
4556                                                 *'list'* *'nolist'*
4557 'list'                  boolean (default off)
4558                         local to window
4559         List mode: Show tabs as CTRL-I is displayed, display $ after end of
4560         line.  Useful to see the difference between tabs and spaces and for
4561         trailing blanks.  Further changed by the 'listchars' option.
4562
4563         The cursor is displayed at the start of the space a Tab character
4564         occupies, not at the end as usual in Normal mode.  To get this cursor
4565         position while displaying Tabs with spaces, use: >
4566                 :set list lcs=tab\ \ 
4567 <
4568         Note that list mode will also affect formatting (set with 'textwidth'
4569         or 'wrapmargin') when 'cpoptions' includes 'L'.  See 'listchars' for
4570         changing the way tabs are displayed.
4571
4572                                                 *'listchars'* *'lcs'*
4573 'listchars' 'lcs'       string  (default "eol:$")
4574                         global
4575                         {not in Vi}
4576         Strings to use in 'list' mode and for the |:list| command.  It is a
4577         comma separated list of string settings.
4578           eol:c         Character to show at the end of each line.  When
4579                         omitted, there is no extra character at the end of the
4580                         line.
4581           tab:xy        Two characters to be used to show a tab.  The first
4582                         char is used once.  The second char is repeated to
4583                         fill the space that the tab normally occupies.
4584                         "tab:>-" will show a tab that takes four spaces as
4585                         ">---".  When omitted, a tab is show as ^I.
4586           trail:c       Character to show for trailing spaces.  When omitted,
4587                         trailing spaces are blank.
4588           extends:c     Character to show in the last column, when 'wrap' is
4589                         off and the line continues beyond the right of the
4590                         screen.
4591           precedes:c    Character to show in the first column, when 'wrap'
4592                         is off and there is text preceding the character
4593                         visible in the first column.
4594           conceal:c     Character to show in place of concealed text, when
4595                         'conceallevel' is set to 1.
4596           nbsp:c        Character to show for a non-breakable space (character
4597                         0xA0, 160).  Left blank when omitted.
4598
4599         The characters ':' and ',' should not be used.  UTF-8 characters can
4600         be used when 'encoding' is "utf-8", otherwise only printable
4601         characters are allowed.  All characters must be single width.
4602
4603         Examples: >
4604             :set lcs=tab:>-,trail:-
4605             :set lcs=tab:>-,eol:<,nbsp:%
4606             :set lcs=extends:>,precedes:<
4607 <       The "NonText" highlighting will be used for "eol", "extends" and
4608         "precedes".  "SpecialKey" for "nbsp", "tab" and "trail".
4609         |hl-NonText| |hl-SpecialKey|
4610
4611                         *'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'*
4612 'loadplugins' 'lpl'     boolean (default on)
4613                         global
4614                         {not in Vi}
4615         When on the plugin scripts are loaded when starting up |load-plugins|.
4616         This option can be reset in your |vimrc| file to disable the loading
4617         of plugins.
4618         Note that using the "-u NONE" and "--noplugin" command line arguments
4619         reset this option. |-u| |--noplugin|
4620
4621                                                 *'macatsui'* *'nomacatsui'*
4622 'macatsui'              boolean (default on)
4623                         global
4624                         {only available in Mac GUI version}
4625         This is a workaround for when drawing doesn't work properly.  When set
4626         and compiled with multi-byte support ATSUI text drawing is used.  When
4627         not set ATSUI text drawing is not used.  Switch this option off when
4628         you experience drawing problems.  In a future version the problems may
4629         be solved and this option becomes obsolete.  Therefore use this method
4630         to unset it: >
4631                 if exists('&macatsui')
4632                    set nomacatsui
4633                 endif
4634 <       Another option to check if you have drawing problems is
4635         'termencoding'.
4636
4637                                                 *'magic'* *'nomagic'*
4638 'magic'                 boolean (default on)
4639                         global
4640         Changes the special characters that can be used in search patterns.
4641         See |pattern|.
4642         NOTE: To avoid portability problems with using patterns, always keep
4643         this option at the default "on".  Only switch it off when working with
4644         old Vi scripts.  In any other situation write patterns that work when
4645         'magic' is on.  Include "\M" when you want to |/\M|.
4646
4647                                                 *'makeef'* *'mef'*
4648 'makeef' 'mef'          string  (default: "")
4649                         global
4650                         {not in Vi}
4651                         {not available when compiled without the |+quickfix|
4652                         feature}
4653         Name of the errorfile for the |:make| command (see |:make_makeprg|)
4654         and the |:grep| command.
4655         When it is empty, an internally generated temp file will be used.
4656         When "##" is included, it is replaced by a number to make the name
4657         unique.  This makes sure that the ":make" command doesn't overwrite an
4658         existing file.
4659         NOT used for the ":cf" command.  See 'errorfile' for that.
4660         Environment variables are expanded |:set_env|.
4661         See |option-backslash| about including spaces and backslashes.
4662         This option cannot be set from a |modeline| or in the |sandbox|, for
4663         security reasons.
4664
4665                                                 *'makeprg'* *'mp'*
4666 'makeprg' 'mp'          string  (default "make", VMS: "MMS")
4667                         global or local to buffer |global-local|
4668                         {not in Vi}
4669         Program to use for the ":make" command.  See |:make_makeprg|.
4670         This option may contain '%' and '#' characters, which are expanded to
4671         the current and alternate file name. |:_%| |:_#|
4672         Environment variables are expanded |:set_env|.  See |option-backslash|
4673         about including spaces and backslashes.
4674         Note that a '|' must be escaped twice: once for ":set" and once for
4675         the interpretation of a command.  When you use a filter called
4676         "myfilter" do it like this: >
4677             :set makeprg=gmake\ \\\|\ myfilter
4678 <       The placeholder "$*" can be given (even multiple times) to specify
4679         where the arguments will be included, for example: >
4680             :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
4681 <       This option cannot be set from a |modeline| or in the |sandbox|, for
4682         security reasons.
4683
4684                                                 *'matchpairs'* *'mps'*
4685 'matchpairs' 'mps'      string  (default "(:),{:},[:]")
4686                         local to buffer
4687                         {not in Vi}
4688         Characters that form pairs.  The |%| command jumps from one to the
4689         other.  Currently only single byte character pairs are allowed, and
4690         they must be different.  The characters must be separated by a colon.
4691         The pairs must be separated by a comma.  Example for including '<' and
4692         '>' (HTML): >
4693                 :set mps+=<:>
4694
4695 <       A more exotic example, to jump between the '=' and ';' in an
4696         assignment, useful for languages like C and Java: >
4697                 :au FileType c,cpp,java set mps+==:;
4698
4699 <       For a more advanced way of using "%", see the matchit.vim plugin in
4700         the $VIMRUNTIME/macros directory. |add-local-help|
4701
4702                                                 *'matchtime'* *'mat'*
4703 'matchtime' 'mat'       number  (default 5)
4704                         global
4705                         {not in Vi}{in Nvi}
4706         Tenths of a second to show the matching paren, when 'showmatch' is
4707         set.  Note that this is not in milliseconds, like other options that
4708         set a time.  This is to be compatible with Nvi.
4709
4710                                                 *'maxcombine'* *'mco'*
4711 'maxcombine' 'mco'      number (default 2)
4712                         global
4713                         {not in Vi}
4714                         {only available when compiled with the |+multi_byte|
4715                         feature}
4716         The maximum number of combining characters supported for displaying.
4717         Only used when 'encoding' is "utf-8".
4718         The default is OK for most languages.  Hebrew may require 4.
4719         Maximum value is 6.
4720         Even when this option is set to 2 you can still edit text with more
4721         combining characters, you just can't see them.  Use |g8| or |ga|.
4722         See |mbyte-combining|.
4723
4724                                                 *'maxfuncdepth'* *'mfd'*
4725 'maxfuncdepth' 'mfd'    number  (default 100)
4726                         global
4727                         {not in Vi}
4728                         {not available when compiled without the |+eval|
4729                         feature}
4730         Maximum depth of function calls for user functions.  This normally
4731         catches endless recursion.  When using a recursive function with
4732         more depth, set 'maxfuncdepth' to a bigger number.  But this will use
4733         more memory, there is the danger of failing when memory is exhausted.
4734         See also |:function|.
4735
4736                                                 *'maxmapdepth'* *'mmd'* *E223*
4737 'maxmapdepth' 'mmd'     number  (default 1000)
4738                         global
4739                         {not in Vi}
4740         Maximum number of times a mapping is done without resulting in a
4741         character to be used.  This normally catches endless mappings, like
4742         ":map x y" with ":map y x".  It still does not catch ":map g wg",
4743         because the 'w' is used before the next mapping is done.  See also
4744         |key-mapping|.
4745
4746                                                 *'maxmem'* *'mm'*
4747 'maxmem' 'mm'           number  (default between 256 to 5120 (system
4748                                  dependent) or half the amount of memory
4749                                  available)
4750                         global
4751                         {not in Vi}
4752         Maximum amount of memory (in Kbyte) to use for one buffer.  When this
4753         limit is reached allocating extra memory for a buffer will cause
4754         other memory to be freed.  The maximum usable value is about 2000000.
4755         Use this to work without a limit.  Also see 'maxmemtot'.
4756
4757                                                 *'maxmempattern'* *'mmp'*
4758 'maxmempattern' 'mmp'   number  (default 1000)
4759                         global
4760                         {not in Vi}
4761         Maximum amount of memory (in Kbyte) to use for pattern matching.
4762         The maximum value is about 2000000.  Use this to work without a limit.
4763                                                         *E363*
4764         When Vim runs into the limit it gives an error message and mostly
4765         behaves like CTRL-C was typed.
4766         Running into the limit often means that the pattern is very
4767         inefficient or too complex.  This may already happen with the pattern
4768         "\(.\)*" on a very long line.  ".*" works much better.
4769         Vim may run out of memory before hitting the 'maxmempattern' limit.
4770
4771                                                 *'maxmemtot'* *'mmt'*
4772 'maxmemtot' 'mmt'       number  (default between 2048 and 10240 (system
4773                                  dependent) or half the amount of memory
4774                                  available)
4775                         global
4776                         {not in Vi}
4777         Maximum amount of memory in Kbyte to use for all buffers together.
4778         The maximum usable value is about 2000000 (2 Gbyte).  Use this to work
4779         without a limit.  On 64 bit machines higher values might work.  But
4780         hey, do you really need more than 2 Gbyte for text editing?
4781         Also see 'maxmem'.
4782
4783                                                 *'menuitems'* *'mis'*
4784 'menuitems' 'mis'       number  (default 25)
4785                         global
4786                         {not in Vi}
4787                         {not available when compiled without the |+menu|
4788                         feature}
4789         Maximum number of items to use in a menu.  Used for menus that are
4790         generated from a list of items, e.g., the Buffers menu.  Changing this
4791         option has no direct effect, the menu must be refreshed first.
4792
4793                                                 *'mkspellmem'* *'msm'*
4794 'mkspellmem' 'msm'      string  (default "460000,2000,500")
4795                         global
4796                         {not in Vi}
4797                         {not available when compiled without the |+syntax|
4798                         feature}
4799         Parameters for |:mkspell|.  This tunes when to start compressing the
4800         word tree.  Compression can be slow when there are many words, but
4801         it's needed to avoid running out of memory.  The amount of memory used
4802         per word depends very much on how similar the words are, that's why
4803         this tuning is complicated.
4804
4805         There are three numbers, separated by commas:
4806                 {start},{inc},{added}
4807
4808         For most languages the uncompressed word tree fits in memory.  {start}
4809         gives the amount of memory in Kbyte that can be used before any
4810         compression is done.  It should be a bit smaller than the amount of
4811         memory that is available to Vim.
4812
4813         When going over the {start} limit the {inc} number specifies the
4814         amount of memory in Kbyte that can be allocated before another
4815         compression is done.  A low number means compression is done after
4816         less words are added, which is slow.  A high number means more memory
4817         will be allocated.
4818
4819         After doing compression, {added} times 1024 words can be added before
4820         the {inc} limit is ignored and compression is done when any extra
4821         amount of memory is needed.  A low number means there is a smaller
4822         chance of hitting the {inc} limit, less memory is used but it's
4823         slower.
4824
4825         The languages for which these numbers are important are Italian and
4826         Hungarian.  The default works for when you have about 512 Mbyte.  If
4827         you have 1 Gbyte you could use: >
4828                 :set mkspellmem=900000,3000,800
4829 <       If you have less than 512 Mbyte |:mkspell| may fail for some
4830         languages, no matter what you set 'mkspellmem' to.
4831
4832                                    *'modeline'* *'ml'* *'nomodeline'* *'noml'*
4833 'modeline' 'ml'         boolean (Vim default: on (off for root),
4834                                  Vi default: off)
4835                         local to buffer
4836                                                 *'modelines'* *'mls'*
4837 'modelines' 'mls'       number  (default 5)
4838                         global
4839                         {not in Vi}
4840         If 'modeline' is on 'modelines' gives the number of lines that is
4841         checked for set commands.  If 'modeline' is off or 'modelines' is zero
4842         no lines are checked.  See |modeline|.
4843         NOTE: 'modeline' is set to the Vi default value when 'compatible' is
4844         set and to the Vim default value when 'compatible' is reset.
4845
4846                                 *'modifiable'* *'ma'* *'nomodifiable'* *'noma'*
4847 'modifiable' 'ma'       boolean (default on)
4848                         local to buffer
4849                         {not in Vi}             *E21*
4850         When off the buffer contents cannot be changed.  The 'fileformat' and
4851         'fileencoding' options also can't be changed.
4852         Can be reset with the |-M| command line argument.
4853
4854                                 *'modified'* *'mod'* *'nomodified'* *'nomod'*
4855 'modified' 'mod'        boolean (default off)
4856                         local to buffer
4857                         {not in Vi}
4858         When on, the buffer is considered to be modified.  This option is set
4859         when:
4860         1. A change was made to the text since it was last written.  Using the
4861            |undo| command to go back to the original text will reset the
4862            option.  But undoing changes that were made before writing the
4863            buffer will set the option again, since the text is different from
4864            when it was written.
4865         2. 'fileformat' or 'fileencoding' is different from its original
4866            value.  The original value is set when the buffer is read or
4867            written.  A ":set nomodified" command also resets the original
4868            values to the current values and the 'modified' option will be
4869            reset.
4870         This option is not set when a change is made to the buffer as the
4871         result of a BufNewFile, BufRead/BufReadPost, BufWritePost,
4872         FileAppendPost or VimLeave autocommand event.  See |gzip-example| for
4873         an explanation.
4874         When 'buftype' is "nowrite" or "nofile" this option may be set, but
4875         will be ignored.
4876
4877                                                 *'more'* *'nomore'*
4878 'more'                  boolean (Vim default: on, Vi default: off)
4879                         global
4880                         {not in Vi}
4881         When on, listings pause when the whole screen is filled.  You will get
4882         the |more-prompt|.  When this option is off there are no pauses, the
4883         listing continues until finished.
4884         NOTE: This option is set to the Vi default value when 'compatible' is
4885         set and to the Vim default value when 'compatible' is reset.
4886
4887                                                 *'mouse'* *E538*
4888 'mouse'                 string  (default "", "a" for GUI, MS-DOS and Win32)
4889                         global
4890                         {not in Vi}
4891         Enable the use of the mouse.  Only works for certain terminals
4892         (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
4893         sysmouse and Linux console with gpm).  For using the mouse in the
4894         GUI, see |gui-mouse|.
4895         The mouse can be enabled for different modes:
4896                 n       Normal mode
4897                 v       Visual mode
4898                 i       Insert mode
4899                 c       Command-line mode
4900                 h       all previous modes when editing a help file
4901                 a       all previous modes
4902                 r       for |hit-enter| and |more-prompt| prompt
4903         Normally you would enable the mouse in all four modes with: >
4904                 :set mouse=a
4905 <       When the mouse is not enabled, the GUI will still use the mouse for
4906         modeless selection.  This doesn't move the text cursor.
4907
4908         See |mouse-using|.  Also see |'clipboard'|.
4909
4910         Note: When enabling the mouse in a terminal, copy/paste will use the
4911         "* register if there is access to an X-server.  The xterm handling of
4912         the mouse buttons can still be used by keeping the shift key pressed.
4913         Also see the 'clipboard' option.
4914
4915                         *'mousefocus'* *'mousef'* *'nomousefocus'* *'nomousef'*
4916 'mousefocus' 'mousef'   boolean (default off)
4917                         global
4918                         {not in Vi}
4919                         {only works in the GUI}
4920         The window that the mouse pointer is on is automatically activated.
4921         When changing the window layout or window focus in another way, the
4922         mouse pointer is moved to the window with keyboard focus.  Off is the
4923         default because it makes using the pull down menus a little goofy, as
4924         a pointer transit may activate a window unintentionally.
4925
4926                         *'mousehide'* *'mh'* *'nomousehide'* *'nomh'*
4927 'mousehide' 'mh'        boolean (default on)
4928                         global
4929                         {not in Vi}
4930                         {only works in the GUI}
4931         When on, the mouse pointer is hidden when characters are typed.
4932         The mouse pointer is restored when the mouse is moved.
4933
4934                                                 *'mousemodel'* *'mousem'*
4935 'mousemodel' 'mousem'   string  (default "extend", "popup" for MS-DOS and Win32)
4936                         global
4937                         {not in Vi}
4938         Sets the model to use for the mouse.  The name mostly specifies what
4939         the right mouse button is used for:
4940            extend       Right mouse button extends a selection.  This works
4941                         like in an xterm.
4942            popup        Right mouse button pops up a menu.  The shifted left
4943                         mouse button extends a selection.  This works like
4944                         with Microsoft Windows.
4945            popup_setpos Like "popup", but the cursor will be moved to the
4946                         position where the mouse was clicked, and thus the
4947                         selected operation will act upon the clicked object.
4948                         If clicking inside a selection, that selection will
4949                         be acted upon, i.e. no cursor move.  This implies of
4950                         course, that right clicking outside a selection will
4951                         end Visual mode.
4952         Overview of what button does what for each model:
4953         mouse               extend              popup(_setpos) ~
4954         left click          place cursor        place cursor
4955         left drag           start selection     start selection
4956         shift-left          search word         extend selection
4957         right click         extend selection    popup menu (place cursor)
4958         right drag          extend selection    -
4959         middle click        paste               paste
4960
4961         In the "popup" model the right mouse button produces a pop-up menu.
4962         You need to define this first, see |popup-menu|.
4963
4964         Note that you can further refine the meaning of buttons with mappings.
4965         See |gui-mouse-mapping|.  But mappings are NOT used for modeless
4966         selection (because that's handled in the GUI code directly).
4967
4968         The 'mousemodel' option is set by the |:behave| command.
4969
4970                                         *'mouseshape'* *'mouses'* *E547*
4971 'mouseshape' 'mouses'   string  (default "i:beam,r:beam,s:updown,sd:cross,
4972                                         m:no,ml:up-arrow,v:rightup-arrow")
4973                         global
4974                         {not in Vi}
4975                         {only available when compiled with the |+mouseshape|
4976                         feature}
4977         This option tells Vim what the mouse pointer should look like in
4978         different modes.  The option is a comma separated list of parts, much
4979         like used for 'guicursor'.  Each part consist of a mode/location-list
4980         and an argument-list:
4981                 mode-list:shape,mode-list:shape,..
4982         The mode-list is a dash separated list of these modes/locations:
4983                         In a normal window: ~
4984                 n       Normal mode
4985                 v       Visual mode
4986                 ve      Visual mode with 'selection' "exclusive" (same as 'v',
4987                         if not specified)
4988                 o       Operator-pending mode
4989                 i       Insert mode
4990                 r       Replace mode
4991
4992                         Others: ~
4993                 c       appending to the command-line
4994                 ci      inserting in the command-line
4995                 cr      replacing in the command-line
4996                 m       at the 'Hit ENTER' or 'More' prompts
4997                 ml      idem, but cursor in the last line
4998                 e       any mode, pointer below last window
4999                 s       any mode, pointer on a status line
5000                 sd      any mode, while dragging a status line
5001                 vs      any mode, pointer on a vertical separator line
5002                 vd      any mode, while dragging a vertical separator line
5003                 a       everywhere
5004
5005         The shape is one of the following:
5006         avail   name            looks like ~
5007         w x     arrow           Normal mouse pointer
5008         w x     blank           no pointer at all (use with care!)
5009         w x     beam            I-beam
5010         w x     updown          up-down sizing arrows
5011         w x     leftright       left-right sizing arrows
5012         w x     busy            The system's usual busy pointer
5013         w x     no              The system's usual 'no input' pointer
5014           x     udsizing        indicates up-down resizing
5015           x     lrsizing        indicates left-right resizing
5016           x     crosshair       like a big thin +
5017           x     hand1           black hand
5018           x     hand2           white hand
5019           x     pencil          what you write with
5020           x     question        big ?
5021           x     rightup-arrow   arrow pointing right-up
5022         w x     up-arrow        arrow pointing up
5023           x     <number>        any X11 pointer number (see X11/cursorfont.h)
5024
5025         The "avail" column contains a 'w' if the shape is available for Win32,
5026         x for X11.
5027         Any modes not specified or shapes not available use the normal mouse
5028         pointer.
5029
5030         Example: >
5031                 :set mouseshape=s:udsizing,m:no
5032 <       will make the mouse turn to a sizing arrow over the status lines and
5033         indicate no input when the hit-enter prompt is displayed (since
5034         clicking the mouse has no effect in this state.)
5035
5036                                                 *'mousetime'* *'mouset'*
5037 'mousetime' 'mouset'    number  (default 500)
5038                         global
5039                         {not in Vi}
5040         Only for GUI, MS-DOS, Win32 and Unix with xterm.  Defines the maximum
5041         time in msec between two mouse clicks for the second click to be
5042         recognized as a multi click.
5043
5044                                                     *'mzquantum'* *'mzq'*
5045 'mzquantum' 'mzq'       number  (default 100)
5046                         global
5047                         {not in Vi}
5048                         {not available when compiled without the |+mzscheme|
5049                         feature}
5050         The number of milliseconds between polls for MzScheme threads.
5051         Negative or zero value means no thread scheduling.
5052
5053                                                         *'nrformats'* *'nf'*
5054 'nrformats' 'nf'        string  (default "octal,hex")
5055                         local to buffer
5056                         {not in Vi}
5057         This defines what bases Vim will consider for numbers when using the
5058         CTRL-A and CTRL-X commands for adding to and subtracting from a number
5059         respectively; see |CTRL-A| for more info on these commands.
5060         alpha   If included, single alphabetical characters will be
5061                 incremented or decremented.  This is useful for a list with a
5062                 letter index a), b), etc.                       *octal-number*
5063         octal   If included, numbers that start with a zero will be considered
5064                 to be octal.  Example: Using CTRL-A on "007" results in "010".
5065         hex     If included, numbers starting with "0x" or "0X" will be
5066                 considered to be hexadecimal.  Example: Using CTRL-X on
5067                 "0x100" results in "0x0ff".
5068         Numbers which simply begin with a digit in the range 1-9 are always
5069         considered decimal.  This also happens for numbers that are not
5070         recognized as octal or hex.
5071
5072                                 *'number'* *'nu'* *'nonumber'* *'nonu'*
5073 'number' 'nu'           boolean (default off)
5074                         local to window
5075         Print the line number in front of each line.  When the 'n' option is
5076         excluded from 'cpoptions' a wrapped line will not use the column of
5077         line numbers (this is the default when 'compatible' isn't set).
5078         The 'numberwidth' option can be used to set the room used for the line
5079         number.
5080         When a long, wrapped line doesn't start with the first character, '-'
5081         characters are put before the number.
5082         See |hl-LineNr| for the highlighting used for the number.
5083         When setting this option, 'relativenumber' is reset.
5084
5085                                                 *'numberwidth'* *'nuw'*
5086 'numberwidth' 'nuw'     number  (Vim default: 4  Vi default: 8)
5087                         local to window
5088                         {not in Vi}
5089                         {only available when compiled with the |+linebreak|
5090                         feature}
5091         Minimal number of columns to use for the line number.  Only relevant
5092         when the 'number' or 'relativenumber' option is set or printing lines
5093         with a line number. Since one space is always between the number and
5094         the text, there is one less character for the number itself.
5095         The value is the minimum width.  A bigger width is used when needed to
5096         fit the highest line number in the buffer respectively the number of
5097         rows in the window, depending on whether 'number' or 'relativenumber'
5098         is set. Thus with the Vim default of 4 there is room for a line number
5099         up to 999. When the buffer has 1000 lines five columns will be used.
5100         The minimum value is 1, the maximum value is 10.
5101         NOTE: 'numberwidth' is reset to 8 when 'compatible' is set.
5102
5103                                                 *'omnifunc'* *'ofu'*
5104 'omnifunc' 'ofu'        string  (default: empty)
5105                         local to buffer
5106                         {not in Vi}
5107                         {not available when compiled without the |+eval|
5108                         or |+insert_expand| features}
5109         This option specifies a function to be used for Insert mode omni
5110         completion with CTRL-X CTRL-O. |i_CTRL-X_CTRL-O|
5111         See |complete-functions| for an explanation of how the function is
5112         invoked and what it should return.
5113         This option is usually set by a filetype plugin:
5114         |:filetype-plugin-on|
5115
5116
5117                             *'opendevice'* *'odev'* *'noopendevice'* *'noodev'*
5118 'opendevice' 'odev'     boolean (default off)
5119                         global
5120                         {not in Vi}
5121                         {only for MS-DOS, MS-Windows and OS/2}
5122         Enable reading and writing from devices.  This may get Vim stuck on a
5123         device that can be opened but doesn't actually do the I/O.  Therefore
5124         it is off by default.
5125         Note that on MS-Windows editing "aux.h", "lpt1.txt" and the like also
5126         result in editing a device.
5127
5128
5129                                                 *'operatorfunc'* *'opfunc'*
5130 'operatorfunc' 'opfunc' string  (default: empty)
5131                         global
5132                         {not in Vi}
5133         This option specifies a function to be called by the |g@| operator.
5134         See |:map-operator| for more info and an example.
5135
5136         This option cannot be set from a |modeline| or in the |sandbox|, for
5137         security reasons.
5138
5139
5140                                         *'osfiletype'* *'oft'*
5141 'osfiletype' 'oft'      string (default: "")
5142                         local to buffer
5143                         {not in Vi}
5144         This option was supported on RISC OS, which has been removed.
5145
5146
5147                                                 *'paragraphs'* *'para'*
5148 'paragraphs' 'para'     string  (default "IPLPPPQPP TPHPLIPpLpItpplpipbp")
5149                         global
5150         Specifies the nroff macros that separate paragraphs.  These are pairs
5151         of two letters (see |object-motions|).
5152
5153                                                 *'paste'* *'nopaste'*
5154 'paste'                 boolean (default off)
5155                         global
5156                         {not in Vi}
5157         Put Vim in Paste mode.  This is useful if you want to cut or copy
5158         some text from one window and paste it in Vim.  This will avoid
5159         unexpected effects.
5160         Setting this option is useful when using Vim in a terminal, where Vim
5161         cannot distinguish between typed text and pasted text.  In the GUI, Vim
5162         knows about pasting and will mostly do the right thing without 'paste'
5163         being set.  The same is true for a terminal where Vim handles the
5164         mouse clicks itself.
5165         This option is reset when starting the GUI.  Thus if you set it in
5166         your .vimrc it will work in a terminal, but not in the GUI.  Setting
5167         'paste' in the GUI has side effects: e.g., the Paste toolbar button
5168         will no longer work in Insert mode, because it uses a mapping.
5169         When the 'paste' option is switched on (also when it was already on):
5170                 - mapping in Insert mode and Command-line mode is disabled
5171                 - abbreviations are disabled
5172                 - 'textwidth' is set to 0
5173                 - 'wrapmargin' is set to 0
5174                 - 'autoindent' is reset
5175                 - 'smartindent' is reset
5176                 - 'softtabstop' is set to 0
5177                 - 'revins' is reset
5178                 - 'ruler' is reset
5179                 - 'showmatch' is reset
5180                 - 'formatoptions' is used like it is empty
5181         These options keep their value, but their effect is disabled:
5182                 - 'lisp'
5183                 - 'indentexpr'
5184                 - 'cindent'
5185         NOTE: When you start editing another file while the 'paste' option is
5186         on, settings from the modelines or autocommands may change the
5187         settings again, causing trouble when pasting text.  You might want to
5188         set the 'paste' option again.
5189         When the 'paste' option is reset the mentioned options are restored to
5190         the value before the moment 'paste' was switched from off to on.
5191         Resetting 'paste' before ever setting it does not have any effect.
5192         Since mapping doesn't work while 'paste' is active, you need to use
5193         the 'pastetoggle' option to toggle the 'paste' option with some key.
5194
5195                                                 *'pastetoggle'* *'pt'*
5196 'pastetoggle' 'pt'      string  (default "")
5197                         global
5198                         {not in Vi}
5199         When non-empty, specifies the key sequence that toggles the 'paste'
5200         option.  This is like specifying a mapping: >
5201             :map {keys} :set invpaste<CR>
5202 <       Where {keys} is the value of 'pastetoggle'.
5203         The difference is that it will work even when 'paste' is set.
5204         'pastetoggle' works in Insert mode and Normal mode, but not in
5205         Command-line mode.
5206         Mappings are checked first, thus overrule 'pastetoggle'.  However,
5207         when 'paste' is on mappings are ignored in Insert mode, thus you can do
5208         this: >
5209             :map <F10> :set paste<CR>
5210             :map <F11> :set nopaste<CR>
5211             :imap <F10> <C-O>:set paste<CR>
5212             :imap <F11> <nop>
5213             :set pastetoggle=<F11>
5214 <       This will make <F10> start paste mode and <F11> stop paste mode.
5215         Note that typing <F10> in paste mode inserts "<F10>", since in paste
5216         mode everything is inserted literally, except the 'pastetoggle' key
5217         sequence.
5218         When the value has several bytes 'ttimeoutlen' applies.
5219
5220                                                 *'pex'* *'patchexpr'*
5221 'patchexpr' 'pex'       string  (default "")
5222                         global
5223                         {not in Vi}
5224                         {not available when compiled without the |+diff|
5225                         feature}
5226         Expression which is evaluated to apply a patch to a file and generate
5227         the resulting new version of the file.  See |diff-patchexpr|.
5228
5229                                                 *'patchmode'* *'pm'* *E206*
5230 'patchmode' 'pm'        string  (default "")
5231                         global
5232                         {not in Vi}
5233         When non-empty the oldest version of a file is kept.  This can be used
5234         to keep the original version of a file if you are changing files in a
5235         source distribution.  Only the first time that a file is written a
5236         copy of the original file will be kept.  The name of the copy is the
5237         name of the original file with the string in the 'patchmode' option
5238         appended.  This option should start with a dot.  Use a string like
5239         ".org".  'backupdir' must not be empty for this to work (Detail: The
5240         backup file is renamed to the patchmode file after the new file has
5241         been successfully written, that's why it must be possible to write a
5242         backup file).  If there was no file to be backed up, an empty file is
5243         created.
5244         When the 'backupskip' pattern matches, a patchmode file is not made.
5245         Using 'patchmode' for compressed files appends the extension at the
5246         end (e.g., "file.gz.orig"), thus the resulting name isn't always
5247         recognized as a compressed file.
5248         Only normal file name characters can be used, "/\*?[|<>" are illegal.
5249
5250                                 *'path'* *'pa'* *E343* *E345* *E347* *E854*
5251 'path' 'pa'             string  (default on Unix: ".,/usr/include,,"
5252                                    on OS/2:       ".,/emx/include,,"
5253                                    other systems: ".,,")
5254                         global or local to buffer |global-local|
5255                         {not in Vi}
5256         This is a list of directories which will be searched when using the
5257         |gf|, [f, ]f, ^Wf, |:find|, |:sfind|, |:tabfind| and other commands,
5258         provided that the file being searched for has a relative path (not
5259         starting with "/", "./" or "../").  The directories in the 'path'
5260         option may be relative or absolute.
5261         - Use commas to separate directory names: >
5262                 :set path=.,/usr/local/include,/usr/include
5263 <       - Spaces can also be used to separate directory names (for backwards
5264           compatibility with version 3.0).  To have a space in a directory
5265           name, precede it with an extra backslash, and escape the space: >
5266                 :set path=.,/dir/with\\\ space
5267 <       - To include a comma in a directory name precede it with an extra
5268           backslash: >
5269                 :set path=.,/dir/with\\,comma
5270 <       - To search relative to the directory of the current file, use: >
5271                 :set path=.
5272 <       - To search in the current directory use an empty string between two
5273           commas: >
5274                 :set path=,,
5275 <       - A directory name may end in a ':' or '/'.
5276         - Environment variables are expanded |:set_env|.
5277         - When using |netrw.vim| URLs can be used.  For example, adding
5278           "http://www.vim.org" will make ":find index.html" work.
5279         - Search upwards and downwards in a directory tree using "*", "**" and
5280           ";".  See |file-searching| for info and syntax.
5281           {not available when compiled without the |+path_extra| feature}
5282         - Careful with '\' characters, type two to get one in the option: >
5283                 :set path=.,c:\\include
5284 <         Or just use '/' instead: >
5285                 :set path=.,c:/include
5286 <       Don't forget "." or files won't even be found in the same directory as
5287         the file!
5288         The maximum length is limited.  How much depends on the system, mostly
5289         it is something like 256 or 1024 characters.
5290         You can check if all the include files are found, using the value of
5291         'path', see |:checkpath|.
5292         The use of |:set+=| and |:set-=| is preferred when adding or removing
5293         directories from the list.  This avoids problems when a future version
5294         uses another default.  To remove the current directory use: >
5295                 :set path-=
5296 <       To add the current directory use: >
5297                 :set path+=
5298 <       To use an environment variable, you probably need to replace the
5299         separator.  Here is an example to append $INCL, in which directory
5300         names are separated with a semi-colon: >
5301                 :let &path = &path . "," . substitute($INCL, ';', ',', 'g')
5302 <       Replace the ';' with a ':' or whatever separator is used.  Note that
5303         this doesn't work when $INCL contains a comma or white space.
5304
5305                         *'preserveindent'* *'pi'* *'nopreserveindent'* *'nopi'*
5306 'preserveindent' 'pi'   boolean (default off)
5307                         local to buffer
5308                         {not in Vi}
5309         When changing the indent of the current line, preserve as much of the
5310         indent structure as possible.  Normally the indent is replaced by a
5311         series of tabs followed by spaces as required (unless |'expandtab'| is
5312         enabled, in which case only spaces are used).  Enabling this option
5313         means the indent will preserve as many existing characters as possible
5314         for indenting, and only add additional tabs or spaces as required.
5315         'expandtab' does not apply to the preserved white space, a Tab remains
5316         a Tab.
5317         NOTE: When using ">>" multiple times the resulting indent is a mix of
5318         tabs and spaces.  You might not like this.
5319         NOTE: 'preserveindent' is reset when 'compatible' is set.
5320         Also see 'copyindent'.
5321         Use |:retab| to clean up white space.
5322
5323                                         *'previewheight'* *'pvh'*
5324 'previewheight' 'pvh'   number (default 12)
5325                         global
5326                         {not in Vi}
5327                         {not available when compiled without the |+windows| or
5328                         |+quickfix| features}
5329         Default height for a preview window.  Used for |:ptag| and associated
5330         commands.  Used for |CTRL-W_}| when no count is given.
5331
5332                                         *'previewwindow'* *'nopreviewwindow'*
5333                                         *'pvw'* *'nopvw'* *E590*
5334 'previewwindow' 'pvw'   boolean (default off)
5335                         local to window
5336                         {not in Vi}
5337                         {not available when compiled without the |+windows| or
5338                         |+quickfix| features}
5339         Identifies the preview window.  Only one window can have this option
5340         set.  It's normally not set directly, but by using one of the commands
5341         |:ptag|, |:pedit|, etc.
5342
5343                                                 *'printdevice'* *'pdev'*
5344 'printdevice' 'pdev'    string  (default empty)
5345                         global
5346                         {not in Vi}
5347                         {only available when compiled with the |+printer|
5348                         feature}
5349         The name of the printer to be used for |:hardcopy|.
5350         See |pdev-option|.
5351         This option cannot be set from a |modeline| or in the |sandbox|, for
5352         security reasons.
5353
5354                                                 *'printencoding'* *'penc'*
5355 'printencoding' 'penc'  String  (default empty, except for some systems)
5356                         global
5357                         {not in Vi}
5358                         {only available when compiled with the |+printer|
5359                         and |+postscript| features}
5360         Sets the character encoding used when printing.
5361         See |penc-option|.
5362
5363                                                 *'printexpr'* *'pexpr'*
5364 'printexpr' 'pexpr'     String  (default: see below)
5365                         global
5366                         {not in Vi}
5367                         {only available when compiled with the |+printer|
5368                         and |+postscript| features}
5369         Expression used to print the PostScript produced with |:hardcopy|.
5370         See |pexpr-option|.
5371
5372                                                 *'printfont'* *'pfn'*
5373 'printfont' 'pfn'       string  (default "courier")
5374                         global
5375                         {not in Vi}
5376                         {only available when compiled with the |+printer|
5377                         feature}
5378         The name of the font that will be used for |:hardcopy|.
5379         See |pfn-option|.
5380
5381                                                 *'printheader'* *'pheader'*
5382 'printheader' 'pheader'  string  (default "%<%f%h%m%=Page %N")
5383                         global
5384                         {not in Vi}
5385                         {only available when compiled with the |+printer|
5386                         feature}
5387         The format of the header produced in |:hardcopy| output.
5388         See |pheader-option|.
5389
5390                                                 *'printmbcharset'* *'pmbcs'*
5391 'printmbcharset' 'pmbcs'  string (default "")
5392                         global
5393                         {not in Vi}
5394                         {only available when compiled with the |+printer|,
5395                         |+postscript| and |+multi_byte| features}
5396         The CJK character set to be used for CJK output from |:hardcopy|.
5397         See |pmbcs-option|.
5398
5399                                                 *'printmbfont'* *'pmbfn'*
5400 'printmbfont' 'pmbfn'   string (default "")
5401                         global
5402                         {not in Vi}
5403                         {only available when compiled with the |+printer|,
5404                         |+postscript| and |+multi_byte| features}
5405         List of font names to be used for CJK output from |:hardcopy|.
5406         See |pmbfn-option|.
5407
5408                                                 *'printoptions'* *'popt'*
5409 'printoptions' 'popt' string (default "")
5410                         global
5411                         {not in Vi}
5412                         {only available when compiled with |+printer| feature}
5413         List of items that control the format of the output of |:hardcopy|.
5414         See |popt-option|.
5415
5416                                                 *'prompt'* *'noprompt'*
5417 'prompt'                boolean (default on)
5418                         global
5419         When on a ":" prompt is used in Ex mode.
5420
5421                                                 *'pumheight'* *'ph'*
5422 'pumheight' 'ph'        number  (default 0)
5423                         global
5424                         {not available when compiled without the
5425                         |+insert_expand| feature}
5426                         {not in Vi}
5427         Determines the maximum number of items to show in the popup menu for
5428         Insert mode completion.  When zero as much space as available is used.
5429         |ins-completion-menu|.
5430
5431
5432                                                 *'quoteescape'* *'qe'*
5433 'quoteescape' 'qe'      string  (default "\")
5434                         local to buffer
5435                         {not in Vi}
5436         The characters that are used to escape quotes in a string.  Used for
5437         objects like a', a" and a` |a'|.
5438         When one of the characters in this option is found inside a string,
5439         the following character will be skipped.  The default value makes the
5440         text "foo\"bar\\" considered to be one string.
5441
5442                                    *'readonly'* *'ro'* *'noreadonly'* *'noro'*
5443 'readonly' 'ro'         boolean (default off)
5444                         local to buffer
5445         If on, writes fail unless you use a '!'.  Protects you from
5446         accidentally overwriting a file.  Default on when Vim is started
5447         in read-only mode ("vim -R") or when the executable is called "view".
5448         When using ":w!" the 'readonly' option is reset for the current
5449         buffer, unless the 'Z' flag is in 'cpoptions'.
5450         {not in Vi:}  When using the ":view" command the 'readonly' option is
5451         set for the newly edited buffer.
5452
5453                                                 *'redrawtime'* *'rdt'*
5454 'redrawtime' 'rdt'      number  (default 2000)
5455                         global
5456                         {not in Vi}
5457                         {only available when compiled with the |+reltime|
5458                         feature}
5459         The time in milliseconds for redrawing the display.  This applies to
5460         searching for patterns for 'hlsearch' and |:match| highlighting.
5461         When redrawing takes more than this many milliseconds no further
5462         matches will be highlighted.  This is used to avoid that Vim hangs
5463         when using a very complicated pattern.
5464
5465                 *'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'*
5466 'relativenumber' 'rnu'  boolean (default off)
5467                         local to window
5468                         {not in Vi}
5469         Show the line number relative to the line with the cursor in front of
5470         each line. Relative line numbers help you use the |count| you can
5471         precede some vertical motion commands (e.g. j k + -) with, without
5472         having to calculate it yourself. Especially useful in combination with
5473         other commands (e.g. y d c < > gq gw =).
5474         When the 'n' option is excluded from 'cpoptions' a wrapped
5475         line will not use the column of line numbers (this is the default when
5476         'compatible' isn't set).
5477         The 'numberwidth' option can be used to set the room used for the line
5478         number.
5479         When a long, wrapped line doesn't start with the first character, '-'
5480         characters are put before the number.
5481         See |hl-LineNr| for the highlighting used for the number.
5482         When setting this option, 'number' is reset.
5483
5484                                                 *'remap'* *'noremap'*
5485 'remap'                 boolean (default on)
5486                         global
5487         Allows for mappings to work recursively.  If you do not want this for
5488         a single entry, use the :noremap[!] command.
5489         NOTE: To avoid portability problems with Vim scripts, always keep
5490         this option at the default "on".  Only switch it off when working with
5491         old Vi scripts.
5492
5493                                                 *'report'*
5494 'report'                number  (default 2)
5495                         global
5496         Threshold for reporting number of lines changed.  When the number of
5497         changed lines is more than 'report' a message will be given for most
5498         ":" commands.  If you want it always, set 'report' to 0.
5499         For the ":substitute" command the number of substitutions is used
5500         instead of the number of lines.
5501
5502                          *'restorescreen'* *'rs'* *'norestorescreen'* *'nors'*
5503 'restorescreen' 'rs'    boolean (default on)
5504                         global
5505                         {not in Vi}  {only in Windows 95/NT console version}
5506         When set, the screen contents is restored when exiting Vim.  This also
5507         happens when executing external commands.
5508
5509         For non-Windows Vim: You can set or reset the 't_ti' and 't_te'
5510         options in your .vimrc.  To disable restoring:
5511                 set t_ti= t_te=
5512         To enable restoring (for an xterm):
5513                 set t_ti=^[7^[[r^[[?47h t_te=^[[?47l^[8
5514         (Where ^[ is an <Esc>, type CTRL-V <Esc> to insert it)
5515
5516                                 *'revins'* *'ri'* *'norevins'* *'nori'*
5517 'revins' 'ri'           boolean (default off)
5518                         global
5519                         {not in Vi}
5520                         {only available when compiled with the |+rightleft|
5521                         feature}
5522         Inserting characters in Insert mode will work backwards.  See "typing
5523         backwards" |ins-reverse|.  This option can be toggled with the CTRL-_
5524         command in Insert mode, when 'allowrevins' is set.
5525         NOTE: This option is reset when 'compatible' or 'paste' is set.
5526
5527                                  *'rightleft'* *'rl'* *'norightleft'* *'norl'*
5528 'rightleft' 'rl'        boolean (default off)
5529                         local to window
5530                         {not in Vi}
5531                         {only available when compiled with the |+rightleft|
5532                         feature}
5533         When on, display orientation becomes right-to-left, i.e., characters
5534         that are stored in the file appear from the right to the left.
5535         Using this option, it is possible to edit files for languages that
5536         are written from the right to the left such as Hebrew and Arabic.
5537         This option is per window, so it is possible to edit mixed files
5538         simultaneously, or to view the same file in both ways (this is
5539         useful whenever you have a mixed text file with both right-to-left
5540         and left-to-right strings so that both sets are displayed properly
5541         in different windows).  Also see |rileft.txt|.
5542
5543                         *'rightleftcmd'* *'rlc'*
5544 'rightleftcmd' 'rlc'    string  (default "search")
5545                         local to window
5546                         {not in Vi}
5547                         {only available when compiled with the |+rightleft|
5548                         feature}
5549         Each word in this option enables the command line editing to work in
5550         right-to-left mode for a group of commands:
5551
5552                 search          "/" and "?" commands
5553
5554         This is useful for languages such as Hebrew, Arabic and Farsi.
5555         The 'rightleft' option must be set for 'rightleftcmd' to take effect.
5556
5557                                          *'ruler'* *'ru'* *'noruler'* *'noru'*
5558 'ruler' 'ru'            boolean (default off)
5559                         global
5560                         {not in Vi}
5561                         {not available when compiled without the
5562                         |+cmdline_info| feature}
5563         Show the line and column number of the cursor position, separated by a
5564         comma.  When there is room, the relative position of the displayed
5565         text in the file is shown on the far right:
5566                 Top     first line is visible
5567                 Bot     last line is visible
5568                 All     first and last line are visible
5569                 45%     relative position in the file
5570         If 'rulerformat' is set, it will determine the contents of the ruler.
5571         Each window has its own ruler.  If a window has a status line, the
5572         ruler is shown there.  Otherwise it is shown in the last line of the
5573         screen.  If the statusline is given by 'statusline' (i.e. not empty),
5574         this option takes precedence over 'ruler' and 'rulerformat'
5575         If the number of characters displayed is different from the number of
5576         bytes in the text (e.g., for a TAB or a multi-byte character), both
5577         the text column (byte number) and the screen column are shown,
5578         separated with a dash.
5579         For an empty line "0-1" is shown.
5580         For an empty buffer the line number will also be zero: "0,0-1".
5581         This option is reset when the 'paste' option is set.
5582         If you don't want to see the ruler all the time but want to know where
5583         you are, use "g CTRL-G" |g_CTRL-G|.
5584         NOTE: This option is reset when 'compatible' is set.
5585
5586                                                 *'rulerformat'* *'ruf'*
5587 'rulerformat' 'ruf'     string  (default empty)
5588                         global
5589                         {not in Vi}
5590                         {not available when compiled without the |+statusline|
5591                         feature}
5592         When this option is not empty, it determines the content of the ruler
5593         string, as displayed for the 'ruler' option.
5594         The format of this option is like that of 'statusline'.
5595         The default ruler width is 17 characters.  To make the ruler 15
5596         characters wide, put "%15(" at the start and "%)" at the end.
5597         Example: >
5598                 :set rulerformat=%15(%c%V\ %p%%%)
5599 <
5600                                 *'runtimepath'* *'rtp'* *vimfiles*
5601 'runtimepath' 'rtp'     string  (default:
5602                                         Unix: "$HOME/.vim,
5603                                                 $VIM/vimfiles,
5604                                                 $VIMRUNTIME,
5605                                                 $VIM/vimfiles/after,
5606                                                 $HOME/.vim/after"
5607                                         Amiga: "home:vimfiles,
5608                                                 $VIM/vimfiles,
5609                                                 $VIMRUNTIME,
5610                                                 $VIM/vimfiles/after,
5611                                                 home:vimfiles/after"
5612                                         PC, OS/2: "$HOME/vimfiles,
5613                                                 $VIM/vimfiles,
5614                                                 $VIMRUNTIME,
5615                                                 $VIM/vimfiles/after,
5616                                                 $HOME/vimfiles/after"
5617                                         Macintosh: "$VIM:vimfiles,
5618                                                 $VIMRUNTIME,
5619                                                 $VIM:vimfiles:after"
5620                                         RISC-OS: "Choices:vimfiles,
5621                                                 $VIMRUNTIME,
5622                                                 Choices:vimfiles/after"
5623                                         VMS: "sys$login:vimfiles,
5624                                                 $VIM/vimfiles,
5625                                                 $VIMRUNTIME,
5626                                                 $VIM/vimfiles/after,
5627                                                 sys$login:vimfiles/after")
5628                         global
5629                         {not in Vi}
5630         This is a list of directories which will be searched for runtime
5631         files:
5632           filetype.vim  filetypes by file name |new-filetype|
5633           scripts.vim   filetypes by file contents |new-filetype-scripts|
5634           autoload/     automatically loaded scripts |autoload-functions|
5635           colors/       color scheme files |:colorscheme|
5636           compiler/     compiler files |:compiler|
5637           doc/          documentation |write-local-help|
5638           ftplugin/     filetype plugins |write-filetype-plugin|
5639           indent/       indent scripts |indent-expression|
5640           keymap/       key mapping files |mbyte-keymap|
5641           lang/         menu translations |:menutrans|
5642           menu.vim      GUI menus |menu.vim|
5643           plugin/       plugin scripts |write-plugin|
5644           print/        files for printing |postscript-print-encoding|
5645           spell/        spell checking files |spell|
5646           syntax/       syntax files |mysyntaxfile|
5647           tutor/        files for vimtutor |tutor|
5648
5649         And any other file searched for with the |:runtime| command.
5650
5651         The defaults for most systems are setup to search five locations:
5652         1. In your home directory, for your personal preferences.
5653         2. In a system-wide Vim directory, for preferences from the system
5654            administrator.
5655         3. In $VIMRUNTIME, for files distributed with Vim.
5656                                                         *after-directory*
5657         4. In the "after" directory in the system-wide Vim directory.  This is
5658            for the system administrator to overrule or add to the distributed
5659            defaults (rarely needed)
5660         5. In the "after" directory in your home directory.  This is for
5661            personal preferences to overrule or add to the distributed defaults
5662            or system-wide settings (rarely needed).
5663
5664         Note that, unlike 'path', no wildcards like "**" are allowed.  Normal
5665         wildcards are allowed, but can significantly slow down searching for
5666         runtime files.  For speed, use as few items as possible and avoid
5667         wildcards.
5668         See |:runtime|.
5669         Example: >
5670                 :set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME
5671 <       This will use the directory "~/vimruntime" first (containing your
5672         personal Vim runtime files), then "/mygroup/vim" (shared between a
5673         group of people) and finally "$VIMRUNTIME" (the distributed runtime
5674         files).
5675         You probably should always include $VIMRUNTIME somewhere, to use the
5676         distributed runtime files.  You can put a directory before $VIMRUNTIME
5677         to find files which replace a distributed runtime files.  You can put
5678         a directory after $VIMRUNTIME to find files which add to distributed
5679         runtime files.
5680         This option cannot be set from a |modeline| or in the |sandbox|, for
5681         security reasons.
5682
5683                                                 *'scroll'* *'scr'*
5684 'scroll' 'scr'          number  (default: half the window height)
5685                         local to window
5686         Number of lines to scroll with CTRL-U and CTRL-D commands.  Will be
5687         set to half the number of lines in the window when the window size
5688         changes.  If you give a count to the CTRL-U or CTRL-D command it will
5689         be used as the new value for 'scroll'.  Reset to half the window
5690         height with ":set scroll=0".   {Vi is a bit different: 'scroll' gives
5691         the number of screen lines instead of file lines, makes a difference
5692         when lines wrap}
5693
5694                         *'scrollbind'* *'scb'* *'noscrollbind'* *'noscb'*
5695 'scrollbind' 'scb'      boolean  (default off)
5696                         local to window
5697                         {not in Vi}
5698                         {not available when compiled without the |+scrollbind|
5699                         feature}
5700         See also |scroll-binding|.  When this option is set, the current
5701         window scrolls as other scrollbind windows (windows that also have
5702         this option set) scroll.  This option is useful for viewing the
5703         differences between two versions of a file, see 'diff'.
5704         See |'scrollopt'| for options that determine how this option should be
5705         interpreted.
5706         This option is mostly reset when splitting a window to edit another
5707         file.  This means that ":split | edit file" results in two windows
5708         with scroll-binding, but ":split file" does not.
5709
5710                                                 *'scrolljump'* *'sj'*
5711 'scrolljump' 'sj'       number  (default 1)
5712                         global
5713                         {not in Vi}
5714         Minimal number of lines to scroll when the cursor gets off the
5715         screen (e.g., with "j").  Not used for scroll commands (e.g., CTRL-E,
5716         CTRL-D).  Useful if your terminal scrolls very slowly.
5717         When set to a negative number from -1 to -100 this is used as the
5718         percentage of the window height.  Thus -50 scrolls half the window
5719         height.
5720         NOTE: This option is set to 1 when 'compatible' is set.
5721
5722                                                 *'scrolloff'* *'so'*
5723 'scrolloff' 'so'        number  (default 0)
5724                         global
5725                         {not in Vi}
5726         Minimal number of screen lines to keep above and below the cursor.
5727         This will make some context visible around where you are working.  If
5728         you set it to a very large value (999) the cursor line will always be
5729         in the middle of the window (except at the start or end of the file or
5730         when long lines wrap).
5731         For scrolling horizontally see 'sidescrolloff'.
5732         NOTE: This option is set to 0 when 'compatible' is set.
5733
5734                                                 *'scrollopt'* *'sbo'*
5735 'scrollopt' 'sbo'       string  (default "ver,jump")
5736                         global
5737                         {not available when compiled without the |+scrollbind|
5738                         feature}
5739                         {not in Vi}
5740         This is a comma-separated list of words that specifies how
5741         'scrollbind' windows should behave.  'sbo' stands for ScrollBind
5742         Options.
5743         The following words are available:
5744             ver         Bind vertical scrolling for 'scrollbind' windows
5745             hor         Bind horizontal scrolling for 'scrollbind' windows
5746             jump        Applies to the offset between two windows for vertical
5747                         scrolling.  This offset is the difference in the first
5748                         displayed line of the bound windows.  When moving
5749                         around in a window, another 'scrollbind' window may
5750                         reach a position before the start or after the end of
5751                         the buffer.  The offset is not changed though, when
5752                         moving back the 'scrollbind' window will try to scroll
5753                         to the desired position when possible.
5754                         When now making that window the current one, two
5755                         things can be done with the relative offset:
5756                         1. When "jump" is not included, the relative offset is
5757                            adjusted for the scroll position in the new current
5758                            window.  When going back to the other window, the
5759                            new relative offset will be used.
5760                         2. When "jump" is included, the other windows are
5761                            scrolled to keep the same relative offset.  When
5762                            going back to the other window, it still uses the
5763                            same relative offset.
5764         Also see |scroll-binding|.
5765         When 'diff' mode is active there always is vertical scroll binding,
5766         even when "ver" isn't there.
5767
5768                                                 *'sections'* *'sect'*
5769 'sections' 'sect'       string  (default "SHNHH HUnhsh")
5770                         global
5771         Specifies the nroff macros that separate sections.  These are pairs of
5772         two letters (See |object-motions|).  The default makes a section start
5773         at the nroff macros ".SH", ".NH", ".H", ".HU", ".nh" and ".sh".
5774
5775                                                 *'secure'* *'nosecure'* *E523*
5776 'secure'                boolean (default off)
5777                         global
5778                         {not in Vi}
5779         When on, ":autocmd", shell and write commands are not allowed in
5780         ".vimrc" and ".exrc" in the current directory and map commands are
5781         displayed.  Switch it off only if you know that you will not run into
5782         problems, or when the 'exrc' option is off.  On Unix this option is
5783         only used if the ".vimrc" or ".exrc" is not owned by you.  This can be
5784         dangerous if the systems allows users to do a "chown".  You better set
5785         'secure' at the end of your ~/.vimrc then.
5786         This option cannot be set from a |modeline| or in the |sandbox|, for
5787         security reasons.
5788
5789                                                 *'selection'* *'sel'*
5790 'selection' 'sel'       string  (default "inclusive")
5791                         global
5792                         {not in Vi}
5793         This option defines the behavior of the selection.  It is only used
5794         in Visual and Select mode.
5795         Possible values:
5796            value        past line     inclusive ~
5797            old             no           yes
5798            inclusive       yes          yes
5799            exclusive       yes          no
5800         "past line" means that the cursor is allowed to be positioned one
5801         character past the line.
5802         "inclusive" means that the last character of the selection is included
5803         in an operation.  For example, when "x" is used to delete the
5804         selection.
5805         Note that when "exclusive" is used and selecting from the end
5806         backwards, you cannot include the last character of a line, when
5807         starting in Normal mode and 'virtualedit' empty.
5808
5809         The 'selection' option is set by the |:behave| command.
5810
5811                                                 *'selectmode'* *'slm'*
5812 'selectmode' 'slm'      string  (default "")
5813                         global
5814                         {not in Vi}
5815         This is a comma separated list of words, which specifies when to start
5816         Select mode instead of Visual mode, when a selection is started.
5817         Possible values:
5818            mouse        when using the mouse
5819            key          when using shifted special keys
5820            cmd          when using "v", "V" or CTRL-V
5821         See |Select-mode|.
5822         The 'selectmode' option is set by the |:behave| command.
5823
5824                                                 *'sessionoptions'* *'ssop'*
5825 'sessionoptions' 'ssop' string  (default: "blank,buffers,curdir,folds,
5826                                                help,options,tabpages,winsize")
5827                         global
5828                         {not in Vi}
5829                         {not available when compiled without the |+mksession|
5830                         feature}
5831         Changes the effect of the |:mksession| command.  It is a comma
5832         separated list of words.  Each word enables saving and restoring
5833         something:
5834            word         save and restore ~
5835            blank        empty windows
5836            buffers      hidden and unloaded buffers, not just those in windows
5837            curdir       the current directory
5838            folds        manually created folds, opened/closed folds and local
5839                         fold options
5840            globals      global variables that start with an uppercase letter
5841                         and contain at least one lowercase letter.  Only
5842                         String and Number types are stored.
5843            help         the help window
5844            localoptions options and mappings local to a window or buffer (not
5845                         global values for local options)
5846            options      all options and mappings (also global values for local
5847                         options)
5848            resize       size of the Vim window: 'lines' and 'columns'
5849            sesdir       the directory in which the session file is located
5850                         will become the current directory (useful with
5851                         projects accessed over a network from different
5852                         systems)
5853            slash        backslashes in file names replaced with forward
5854                         slashes
5855            tabpages     all tab pages; without this only the current tab page
5856                         is restored, so that you can make a session for each
5857                         tab page separately
5858            unix         with Unix end-of-line format (single <NL>), even when
5859                         on Windows or DOS
5860            winpos       position of the whole Vim window
5861            winsize      window sizes
5862
5863         Don't include both "curdir" and "sesdir".
5864         When neither "curdir" nor "sesdir" is included, file names are stored
5865         with absolute paths.
5866         "slash" and "unix" are useful on Windows when sharing session files
5867         with Unix.  The Unix version of Vim cannot source dos format scripts,
5868         but the Windows version of Vim can source unix format scripts.
5869
5870                                                 *'shell'* *'sh'* *E91*
5871 'shell' 'sh'            string  (default $SHELL or "sh",
5872                                         MS-DOS and Win32: "command.com" or
5873                                         "cmd.exe", OS/2: "cmd")
5874                         global
5875         Name of the shell to use for ! and :! commands.  When changing the
5876         value also check these options: 'shelltype', 'shellpipe', 'shellslash'
5877         'shellredir', 'shellquote', 'shellxquote' and 'shellcmdflag'.
5878         It is allowed to give an argument to the command, e.g.  "csh -f".
5879         See |option-backslash| about including spaces and backslashes.
5880         Environment variables are expanded |:set_env|.
5881         If the name of the shell contains a space, you might need to enclose
5882         it in quotes.  Example: >
5883                 :set shell=\"c:\program\ files\unix\sh.exe\"\ -f
5884 <       Note the backslash before each quote (to avoid starting a comment) and
5885         each space (to avoid ending the option value).  Also note that the
5886         "-f" is not inside the quotes, because it is not part of the command
5887         name.  And Vim automagically recognizes the backslashes that are path
5888         separators.
5889         For Dos 32 bits (DJGPP), you can set the $DJSYSFLAGS environment
5890         variable to change the way external commands are executed.  See the
5891         libc.inf file of DJGPP.
5892         Under MS-Windows, when the executable ends in ".com" it must be
5893         included.  Thus setting the shell to "command.com" or "4dos.com"
5894         works, but "command" and "4dos" do not work for all commands (e.g.,
5895         filtering).
5896         For unknown reasons, when using "4dos.com" the current directory is
5897         changed to "C:\".  To avoid this set 'shell' like this: >
5898                 :set shell=command.com\ /c\ 4dos
5899 <       This option cannot be set from a |modeline| or in the |sandbox|, for
5900         security reasons.
5901
5902                                                 *'shellcmdflag'* *'shcf'*
5903 'shellcmdflag' 'shcf'   string  (default: "-c", MS-DOS and Win32, when 'shell'
5904                                         does not contain "sh" somewhere: "/c")
5905                         global
5906                         {not in Vi}
5907         Flag passed to the shell to execute "!" and ":!" commands; e.g.,
5908         "bash.exe -c ls" or "command.com /c dir".  For the MS-DOS-like
5909         systems, the default is set according to the value of 'shell', to
5910         reduce the need to set this option by the user.  It's not used for
5911         OS/2 (EMX figures this out itself).
5912         On Unix it can have more than one flag.  Each white space separated
5913         part is passed as an argument to the shell command.
5914         See |option-backslash| about including spaces and backslashes.
5915         Also see |dos-shell| for MS-DOS and MS-Windows.
5916         This option cannot be set from a |modeline| or in the |sandbox|, for
5917         security reasons.
5918
5919                                                 *'shellpipe'* *'sp'*
5920 'shellpipe' 'sp'        string  (default ">", "| tee", "|& tee" or "2>&1| tee")
5921                         global
5922                         {not in Vi}
5923                         {not available when compiled without the |+quickfix|
5924                         feature}
5925         String to be used to put the output of the ":make" command in the
5926         error file.  See also |:make_makeprg|.  See |option-backslash| about
5927         including spaces and backslashes.
5928         The name of the temporary file can be represented by "%s" if necessary
5929         (the file name is appended automatically if no %s appears in the value
5930         of this option).
5931         For the Amiga and MS-DOS the default is ">".  The output is directly
5932         saved in a file and not echoed to the screen.
5933         For Unix the default it "| tee".  The stdout of the compiler is saved
5934         in a file and echoed to the screen.  If the 'shell' option is "csh" or
5935         "tcsh" after initializations, the default becomes "|& tee".  If the
5936         'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the
5937         default becomes "2>&1| tee".  This means that stderr is also included.
5938         Before using the 'shell' option a path is removed, thus "/bin/sh" uses
5939         "sh".
5940         The initialization of this option is done after reading the ".vimrc"
5941         and the other initializations, so that when the 'shell' option is set
5942         there, the 'shellpipe' option changes automatically, unless it was
5943         explicitly set before.
5944         When 'shellpipe' is set to an empty string, no redirection of the
5945         ":make" output will be done.  This is useful if you use a 'makeprg'
5946         that writes to 'makeef' by itself.  If you want no piping, but do
5947         want to include the 'makeef', set 'shellpipe' to a single space.
5948         Don't forget to precede the space with a backslash: ":set sp=\ ".
5949         In the future pipes may be used for filtering and this option will
5950         become obsolete (at least for Unix).
5951         This option cannot be set from a |modeline| or in the |sandbox|, for
5952         security reasons.
5953
5954                                                 *'shellquote'* *'shq'*
5955 'shellquote' 'shq'      string  (default: ""; MS-DOS and Win32, when 'shell'
5956                                         contains "sh" somewhere: "\"")
5957                         global
5958                         {not in Vi}
5959         Quoting character(s), put around the command passed to the shell, for
5960         the "!" and ":!" commands.  The redirection is kept outside of the
5961         quoting.  See 'shellxquote' to include the redirection.  It's
5962         probably not useful to set both options.
5963         This is an empty string by default.  Only known to be useful for
5964         third-party shells on MS-DOS-like systems, such as the MKS Korn Shell
5965         or bash, where it should be "\"".  The default is adjusted according
5966         the value of 'shell', to reduce the need to set this option by the
5967         user.  See |dos-shell|.
5968         This option cannot be set from a |modeline| or in the |sandbox|, for
5969         security reasons.
5970
5971                                                 *'shellredir'* *'srr'*
5972 'shellredir' 'srr'      string  (default ">", ">&" or ">%s 2>&1")
5973                         global
5974                         {not in Vi}
5975         String to be used to put the output of a filter command in a temporary
5976         file.  See also |:!|.  See |option-backslash| about including spaces
5977         and backslashes.
5978         The name of the temporary file can be represented by "%s" if necessary
5979         (the file name is appended automatically if no %s appears in the value
5980         of this option).
5981         The default is ">".  For Unix, if the 'shell' option is "csh", "tcsh"
5982         or "zsh" during initializations, the default becomes ">&".  If the
5983         'shell' option is "sh", "ksh" or "bash" the default becomes
5984         ">%s 2>&1".  This means that stderr is also included.
5985         For Win32, the Unix checks are done and additionally "cmd" is checked
5986         for, which makes the default ">%s 2>&1".  Also, the same names with
5987         ".exe" appended are checked for.
5988         The initialization of this option is done after reading the ".vimrc"
5989         and the other initializations, so that when the 'shell' option is set
5990         there, the 'shellredir' option changes automatically unless it was
5991         explicitly set before.
5992         In the future pipes may be used for filtering and this option will
5993         become obsolete (at least for Unix).
5994         This option cannot be set from a |modeline| or in the |sandbox|, for
5995         security reasons.
5996
5997                         *'shellslash'* *'ssl'* *'noshellslash'* *'nossl'*
5998 'shellslash' 'ssl'      boolean (default off)
5999                         global
6000                         {not in Vi} {only for MSDOS, MS-Windows and OS/2}
6001         When set, a forward slash is used when expanding file names.  This is
6002         useful when a Unix-like shell is used instead of command.com or
6003         cmd.exe.  Backward slashes can still be typed, but they are changed to
6004         forward slashes by Vim.
6005         Note that setting or resetting this option has no effect for some
6006         existing file names, thus this option needs to be set before opening
6007         any file for best results.  This might change in the future.
6008         'shellslash' only works when a backslash can be used as a path
6009         separator.  To test if this is so use: >
6010                 if exists('+shellslash')
6011 <
6012                         *'shelltemp'* *'stmp'* *'noshelltemp'* *'nostmp'*
6013 'shelltemp' 'stmp'      boolean (Vi default off, Vim default on)
6014                         global
6015                         {not in Vi}
6016         When on, use temp files for shell commands.  When off use a pipe.
6017         When using a pipe is not possible temp files are used anyway.
6018         Currently a pipe is only supported on Unix and MS-Windows 2K and
6019         later.  You can check it with: >
6020                 :if has("filterpipe")
6021 <       The advantage of using a pipe is that nobody can read the temp file
6022         and the 'shell' command does not need to support redirection.
6023         The advantage of using a temp file is that the file type and encoding
6024         can be detected.
6025         The |FilterReadPre|, |FilterReadPost| and |FilterWritePre|,
6026         |FilterWritePost| autocommands event are not triggered when
6027         'shelltemp' is off.
6028
6029                                                 *'shelltype'* *'st'*
6030 'shelltype' 'st'        number  (default 0)
6031                         global
6032                         {not in Vi} {only for the Amiga}
6033         On the Amiga this option influences the way how the commands work
6034         which use a shell.
6035         0 and 1: always use the shell
6036         2 and 3: use the shell only to filter lines
6037         4 and 5: use shell only for ':sh' command
6038         When not using the shell, the command is executed directly.
6039
6040         0 and 2: use "shell 'shellcmdflag' cmd" to start external commands
6041         1 and 3: use "shell cmd" to start external commands
6042
6043                                                 *'shellxquote'* *'sxq'*
6044 'shellxquote' 'sxq'     string  (default: "";
6045                                         for Win32, when 'shell' contains "sh"
6046                                         somewhere: "\""
6047                                         for Unix, when using system(): "\"")
6048                         global
6049                         {not in Vi}
6050         Quoting character(s), put around the command passed to the shell, for
6051         the "!" and ":!" commands.  Includes the redirection.  See
6052         'shellquote' to exclude the redirection.  It's probably not useful
6053         to set both options.
6054         This is an empty string by default.  Known to be useful for
6055         third-party shells when using the Win32 version, such as the MKS Korn
6056         Shell or bash, where it should be "\"".  The default is adjusted
6057         according the value of 'shell', to reduce the need to set this option
6058         by the user.  See |dos-shell|.
6059         This option cannot be set from a |modeline| or in the |sandbox|, for
6060         security reasons.
6061
6062                         *'shiftround'* *'sr'* *'noshiftround'* *'nosr'*
6063 'shiftround' 'sr'       boolean (default off)
6064                         global
6065                         {not in Vi}
6066         Round indent to multiple of 'shiftwidth'.  Applies to > and <
6067         commands.  CTRL-T and CTRL-D in Insert mode always round the indent to
6068         a multiple of 'shiftwidth' (this is Vi compatible).
6069         NOTE: This option is reset when 'compatible' is set.
6070
6071                                                 *'shiftwidth'* *'sw'*
6072 'shiftwidth' 'sw'       number  (default 8)
6073                         local to buffer
6074         Number of spaces to use for each step of (auto)indent.  Used for
6075         |'cindent'|, |>>|, |<<|, etc.
6076
6077                                                 *'shortmess'* *'shm'*
6078 'shortmess' 'shm'       string  (Vim default "filnxtToO", Vi default: "",
6079                                                         POSIX default: "A")
6080                         global
6081                         {not in Vi}
6082         This option helps to avoid all the |hit-enter| prompts caused by file
6083         messages, for example  with CTRL-G, and to avoid some other messages.
6084         It is a list of flags:
6085          flag   meaning when present    ~
6086           f     use "(3 of 5)" instead of "(file 3 of 5)"
6087           i     use "[noeol]" instead of "[Incomplete last line]"
6088           l     use "999L, 888C" instead of "999 lines, 888 characters"
6089           m     use "[+]" instead of "[Modified]"
6090           n     use "[New]" instead of "[New File]"
6091           r     use "[RO]" instead of "[readonly]"
6092           w     use "[w]" instead of "written" for file write message
6093                 and "[a]" instead of "appended" for ':w >> file' command
6094           x     use "[dos]" instead of "[dos format]", "[unix]" instead of
6095                 "[unix format]" and "[mac]" instead of "[mac format]".
6096           a     all of the above abbreviations
6097
6098           o     overwrite message for writing a file with subsequent message
6099                 for reading a file (useful for ":wn" or when 'autowrite' on)
6100           O     message for reading a file overwrites any previous message.
6101                 Also for quickfix message (e.g., ":cn").
6102           s     don't give "search hit BOTTOM, continuing at TOP" or "search
6103                 hit TOP, continuing at BOTTOM" messages
6104           t     truncate file message at the start if it is too long to fit
6105                 on the command-line, "<" will appear in the left most column.
6106                 Ignored in Ex mode.
6107           T     truncate other messages in the middle if they are too long to
6108                 fit on the command line.  "..." will appear in the middle.
6109                 Ignored in Ex mode.
6110           W     don't give "written" or "[w]" when writing a file
6111           A     don't give the "ATTENTION" message when an existing swap file
6112                 is found.
6113           I     don't give the intro message when starting Vim |:intro|.
6114
6115         This gives you the opportunity to avoid that a change between buffers
6116         requires you to hit <Enter>, but still gives as useful a message as
6117         possible for the space available.  To get the whole message that you
6118         would have got with 'shm' empty, use ":file!"
6119         Useful values:
6120             shm=        No abbreviation of message.
6121             shm=a       Abbreviation, but no loss of information.
6122             shm=at      Abbreviation, and truncate message when necessary.
6123
6124         NOTE: This option is set to the Vi default value when 'compatible' is
6125         set and to the Vim default value when 'compatible' is reset.
6126
6127                                  *'shortname'* *'sn'* *'noshortname'* *'nosn'*
6128 'shortname' 'sn'        boolean (default off)
6129                         local to buffer
6130                         {not in Vi, not in MS-DOS versions}
6131         Filenames are assumed to be 8 characters plus one extension of 3
6132         characters.  Multiple dots in file names are not allowed.  When this
6133         option is on, dots in file names are replaced with underscores when
6134         adding an extension (".~" or ".swp").  This option is not available
6135         for MS-DOS, because then it would always be on.  This option is useful
6136         when editing files on an MS-DOS compatible filesystem, e.g., messydos
6137         or crossdos.  When running the Win32 GUI version under Win32s, this
6138         option is always on by default.
6139
6140                                                 *'showbreak'* *'sbr'* *E595*
6141 'showbreak' 'sbr'       string  (default "")
6142                         global
6143                         {not in Vi}
6144                         {not available when compiled without the |+linebreak|
6145                         feature}
6146         String to put at the start of lines that have been wrapped.  Useful
6147         values are "> " or "+++ ": >
6148                 :set showbreak=>\ 
6149 <       Note the backslash to escape the trailing space.  It's easier like
6150         this: >
6151                 :let &showbreak = '+++ '
6152 <       Only printable single-cell characters are allowed, excluding <Tab> and
6153         comma (in a future version the comma might be used to separate the
6154         part that is shown at the end and at the start of a line).
6155         The characters are highlighted according to the '@' flag in
6156         'highlight'.
6157         Note that tabs after the showbreak will be displayed differently.
6158         If you want the 'showbreak' to appear in between line numbers, add the
6159         "n" flag to 'cpoptions'.
6160
6161                                      *'showcmd'* *'sc'* *'noshowcmd'* *'nosc'*
6162 'showcmd' 'sc'          boolean (Vim default: on, off for Unix, Vi default:
6163                                  off)
6164                         global
6165                         {not in Vi}
6166                         {not available when compiled without the
6167                         |+cmdline_info| feature}
6168         Show (partial) command in the last line of the screen.  Set this
6169         option off if your terminal is slow.
6170         In Visual mode the size of the selected area is shown:
6171         - When selecting characters within a line, the number of characters.
6172           If the number of bytes is different it is also displayed: "2-6"
6173           means two characters and six bytes.
6174         - When selecting more than one line, the number of lines.
6175         - When selecting a block, the size in screen characters:
6176           {lines}x{columns}.
6177         NOTE: This option is set to the Vi default value when 'compatible' is
6178         set and to the Vim default value when 'compatible' is reset.
6179
6180                         *'showfulltag'* *'sft'* *'noshowfulltag'* *'nosft'*
6181 'showfulltag' 'sft'     boolean (default off)
6182                         global
6183                         {not in Vi}
6184         When completing a word in insert mode (see |ins-completion|) from the
6185         tags file, show both the tag name and a tidied-up form of the search
6186         pattern (if there is one) as possible matches.  Thus, if you have
6187         matched a C function, you can see a template for what arguments are
6188         required (coding style permitting).
6189         Note that this doesn't work well together with having "longest" in
6190         'completeopt', because the completion from the search pattern may not
6191         match the typed text.
6192
6193                                  *'showmatch'* *'sm'* *'noshowmatch'* *'nosm'*
6194 'showmatch' 'sm'        boolean (default off)
6195                         global
6196         When a bracket is inserted, briefly jump to the matching one.  The
6197         jump is only done if the match can be seen on the screen.  The time to
6198         show the match can be set with 'matchtime'.
6199         A Beep is given if there is no match (no matter if the match can be
6200         seen or not).  This option is reset when the 'paste' option is set.
6201         When the 'm' flag is not included in 'cpoptions', typing a character
6202         will immediately move the cursor back to where it belongs.
6203         See the "sm" field in 'guicursor' for setting the cursor shape and
6204         blinking when showing the match.
6205         The 'matchpairs' option can be used to specify the characters to show
6206         matches for.  'rightleft' and 'revins' are used to look for opposite
6207         matches.
6208         Also see the matchparen plugin for highlighting the match when moving
6209         around |pi_paren.txt|.
6210         Note: Use of the short form is rated PG.
6211
6212                                  *'showmode'* *'smd'* *'noshowmode'* *'nosmd'*
6213 'showmode' 'smd'        boolean (Vim default: on, Vi default: off)
6214                         global
6215         If in Insert, Replace or Visual mode put a message on the last line.
6216         Use the 'M' flag in 'highlight' to set the type of highlighting for
6217         this message.
6218         When |XIM| may be used the message will include "XIM".  But this
6219         doesn't mean XIM is really active, especially when 'imactivatekey' is
6220         not set.
6221         NOTE: This option is set to the Vi default value when 'compatible' is
6222         set and to the Vim default value when 'compatible' is reset.
6223
6224                                                 *'showtabline'* *'stal'*
6225 'showtabline' 'stal'    number  (default 1)
6226                         global
6227                         {not in Vi}
6228                         {not available when compiled without the |+windows|
6229                         feature}
6230         The value of this option specifies when the line with tab page labels
6231         will be displayed:
6232                 0: never
6233                 1: only if there are at least two tab pages
6234                 2: always
6235         This is both for the GUI and non-GUI implementation of the tab pages
6236         line.
6237         See |tab-page| for more information about tab pages.
6238
6239                                                 *'sidescroll'* *'ss'*
6240 'sidescroll' 'ss'       number  (default 0)
6241                         global
6242                         {not in Vi}
6243         The minimal number of columns to scroll horizontally.  Used only when
6244         the 'wrap' option is off and the cursor is moved off of the screen.
6245         When it is zero the cursor will be put in the middle of the screen.
6246         When using a slow terminal set it to a large number or 0.  When using
6247         a fast terminal use a small number or 1.  Not used for "zh" and "zl"
6248         commands.
6249
6250                                                 *'sidescrolloff'* *'siso'*
6251 'sidescrolloff' 'siso'  number (default 0)
6252                         global
6253                         {not in Vi}
6254         The minimal number of screen columns to keep to the left and to the
6255         right of the cursor if 'nowrap' is set.  Setting this option to a
6256         value greater than 0 while having |'sidescroll'| also at a non-zero
6257         value makes some context visible in the line you are scrolling in
6258         horizontally (except at beginning of the line).  Setting this option
6259         to a large value (like 999) has the effect of keeping the cursor
6260         horizontally centered in the window, as long as one does not come too
6261         close to the beginning of the line.
6262         NOTE: This option is set to 0 when 'compatible' is set.
6263
6264         Example: Try this together with 'sidescroll' and 'listchars' as
6265                  in the following example to never allow the cursor to move
6266                  onto the "extends" character:
6267
6268                  :set nowrap sidescroll=1 listchars=extends:>,precedes:<
6269                  :set sidescrolloff=1
6270
6271
6272                         *'smartcase'* *'scs'* *'nosmartcase'* *'noscs'*
6273 'smartcase' 'scs'       boolean (default off)
6274                         global
6275                         {not in Vi}
6276         Override the 'ignorecase' option if the search pattern contains upper
6277         case characters.  Only used when the search pattern is typed and
6278         'ignorecase' option is on.  Used for the commands "/", "?", "n", "N",
6279         ":g" and ":s".  Not used for "*", "#", "gd", tag search, etc..  After
6280         "*" and "#" you can make 'smartcase' used by doing a "/" command,
6281         recalling the search pattern from history and hitting <Enter>.
6282         NOTE: This option is reset when 'compatible' is set.
6283
6284                              *'smartindent'* *'si'* *'nosmartindent'* *'nosi'*
6285 'smartindent' 'si'      boolean (default off)
6286                         local to buffer
6287                         {not in Vi}
6288                         {not available when compiled without the
6289                         |+smartindent| feature}
6290         Do smart autoindenting when starting a new line.  Works for C-like
6291         programs, but can also be used for other languages.  'cindent' does
6292         something like this, works better in most cases, but is more strict,
6293         see |C-indenting|.  When 'cindent' is on or 'indentexpr' is set,
6294         setting 'si' has no effect.  'indentexpr' is a more advanced
6295         alternative.
6296         Normally 'autoindent' should also be on when using 'smartindent'.
6297         An indent is automatically inserted:
6298         - After a line ending in '{'.
6299         - After a line starting with a keyword from 'cinwords'.
6300         - Before a line starting with '}' (only with the "O" command).
6301         When typing '}' as the first character in a new line, that line is
6302         given the same indent as the matching '{'.
6303         When typing '#' as the first character in a new line, the indent for
6304         that line is removed, the '#' is put in the first column.  The indent
6305         is restored for the next line.  If you don't want this, use this
6306         mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
6307         When using the ">>" command, lines starting with '#' are not shifted
6308         right.
6309         NOTE: 'smartindent' is reset when 'compatible' is set.  When 'paste'
6310         is set smart indenting is disabled.
6311
6312                                  *'smarttab'* *'sta'* *'nosmarttab'* *'nosta'*
6313 'smarttab' 'sta'        boolean (default off)
6314                         global
6315                         {not in Vi}
6316         When on, a <Tab> in front of a line inserts blanks according to
6317         'shiftwidth'.  'tabstop' or 'softtabstop' is used in other places.  A
6318         <BS> will delete a 'shiftwidth' worth of space at the start of the
6319         line.
6320         When off, a <Tab> always inserts blanks according to 'tabstop' or
6321         'softtabstop'.  'shiftwidth' is only used for shifting text left or
6322         right |shift-left-right|.
6323         What gets inserted (a <Tab> or spaces) depends on the 'expandtab'
6324         option.  Also see |ins-expandtab|.  When 'expandtab' is not set, the
6325         number of spaces is minimized by using <Tab>s.
6326         NOTE: This option is reset when 'compatible' is set.
6327
6328                                         *'softtabstop'* *'sts'*
6329 'softtabstop' 'sts'     number  (default 0)
6330                         local to buffer
6331                         {not in Vi}
6332         Number of spaces that a <Tab> counts for while performing editing
6333         operations, like inserting a <Tab> or using <BS>.  It "feels" like
6334         <Tab>s are being inserted, while in fact a mix of spaces and <Tab>s is
6335         used.  This is useful to keep the 'ts' setting at its standard value
6336         of 8, while being able to edit like it is set to 'sts'.  However,
6337         commands like "x" still work on the actual characters.
6338         When 'sts' is zero, this feature is off.
6339         'softtabstop' is set to 0 when the 'paste' option is set.
6340         See also |ins-expandtab|.  When 'expandtab' is not set, the number of
6341         spaces is minimized by using <Tab>s.
6342         The 'L' flag in 'cpoptions' changes how tabs are used when 'list' is
6343         set.
6344         NOTE: This option is set to 0 when 'compatible' is set.
6345
6346                                                 *'spell'* *'nospell'*
6347 'spell'                 boolean (default off)
6348                         local to window
6349                         {not in Vi}
6350                         {not available when compiled without the |+syntax|
6351                         feature}
6352         When on spell checking will be done.  See |spell|.
6353         The languages are specified with 'spelllang'.
6354
6355                                                 *'spellcapcheck'* *'spc'*
6356 'spellcapcheck' 'spc'   string  (default "[.?!]\_[\])'" \t]\+")
6357                         local to buffer
6358                         {not in Vi}
6359                         {not available when compiled without the |+syntax|
6360                         feature}
6361         Pattern to locate the end of a sentence.  The following word will be
6362         checked to start with a capital letter.  If not then it is highlighted
6363         with SpellCap |hl-SpellCap| (unless the word is also badly spelled).
6364         When this check is not wanted make this option empty.
6365         Only used when 'spell' is set.
6366         Be careful with special characters, see |option-backslash| about
6367         including spaces and backslashes.
6368         To set this option automatically depending on the language, see
6369         |set-spc-auto|.
6370
6371                                                 *'spellfile'* *'spf'*
6372 'spellfile' 'spf'       string  (default empty)
6373                         local to buffer
6374                         {not in Vi}
6375                         {not available when compiled without the |+syntax|
6376                         feature}
6377         Name of the word list file where words are added for the |zg| and |zw|
6378         commands.  It must end in ".{encoding}.add".  You need to include the
6379         path, otherwise the file is placed in the current directory.
6380                                                                 *E765*
6381         It may also be a comma separated list of names.  A count before the
6382         |zg| and |zw| commands can be used to access each.  This allows using
6383         a personal word list file and a project word list file.
6384         When a word is added while this option is empty Vim will set it for
6385         you: Using the first directory in 'runtimepath' that is writable.  If
6386         there is no "spell" directory yet it will be created.  For the file
6387         name the first language name that appears in 'spelllang' is used,
6388         ignoring the region.
6389         The resulting ".spl" file will be used for spell checking, it does not
6390         have to appear in 'spelllang'.
6391         Normally one file is used for all regions, but you can add the region
6392         name if you want to.  However, it will then only be used when
6393         'spellfile' is set to it, for entries in 'spelllang' only files
6394         without region name will be found.
6395         This option cannot be set from a |modeline| or in the |sandbox|, for
6396         security reasons.
6397
6398                                                 *'spelllang'* *'spl'*
6399 'spelllang' 'spl'       string  (default "en")
6400                         local to buffer
6401                         {not in Vi}
6402                         {not available when compiled without the |+syntax|
6403                         feature}
6404         A comma separated list of word list names.  When the 'spell' option is
6405         on spellchecking will be done for these languages.  Example: >
6406                 set spelllang=en_us,nl,medical
6407 <       This means US English, Dutch and medical words are recognized.  Words
6408         that are not recognized will be highlighted.
6409         The word list name must not include a comma or dot.  Using a dash is
6410         recommended to separate the two letter language name from a
6411         specification.  Thus "en-rare" is used for rare English words.
6412         A region name must come last and have the form "_xx", where "xx" is
6413         the two-letter, lower case region name.  You can use more than one
6414         region by listing them: "en_us,en_ca" supports both US and Canadian
6415         English, but not words specific for Australia, New Zealand or Great
6416         Britain.
6417                                                         *E757*
6418         As a special case the name of a .spl file can be given as-is.  The
6419         first "_xx" in the name is removed and used as the region name
6420         (_xx is an underscore, two letters and followed by a non-letter).
6421         This is mainly for testing purposes.  You must make sure the correct
6422         encoding is used, Vim doesn't check it.
6423         When 'encoding' is set the word lists are reloaded.  Thus it's a good
6424         idea to set 'spelllang' after setting 'encoding' to avoid loading the
6425         files twice.
6426         How the related spell files are found is explained here: |spell-load|.
6427
6428         If the |spellfile.vim| plugin is active and you use a language name
6429         for which Vim cannot find the .spl file in 'runtimepath' the plugin
6430         will ask you if you want to download the file.
6431
6432         After this option has been set successfully, Vim will source the files
6433         "spell/LANG.vim" in 'runtimepath'.  "LANG" is the value of 'spelllang'
6434         up to the first comma, dot or underscore.
6435         Also see |set-spc-auto|.
6436
6437
6438                                                 *'spellsuggest'* *'sps'*
6439 'spellsuggest' 'sps'    string  (default "best")
6440                         global
6441                         {not in Vi}
6442                         {not available when compiled without the |+syntax|
6443                         feature}
6444         Methods used for spelling suggestions.  Both for the |z=| command and
6445         the |spellsuggest()| function.  This is a comma-separated list of
6446         items:
6447
6448         best            Internal method that works best for English.  Finds
6449                         changes like "fast" and uses a bit of sound-a-like
6450                         scoring to improve the ordering.
6451
6452         double          Internal method that uses two methods and mixes the
6453                         results.  The first method is "fast", the other method
6454                         computes how much the suggestion sounds like the bad
6455                         word.  That only works when the language specifies
6456                         sound folding.  Can be slow and doesn't always give
6457                         better results.
6458
6459         fast            Internal method that only checks for simple changes:
6460                         character inserts/deletes/swaps.  Works well for
6461                         simple typing mistakes.
6462
6463         {number}        The maximum number of suggestions listed for |z=|.
6464                         Not used for |spellsuggest()|.  The number of
6465                         suggestions is never more than the value of 'lines'
6466                         minus two.
6467
6468         file:{filename} Read file {filename}, which must have two columns,
6469                         separated by a slash.  The first column contains the
6470                         bad word, the second column the suggested good word.
6471                         Example:
6472                                 theribal/terrible ~
6473                         Use this for common mistakes that do not appear at the
6474                         top of the suggestion list with the internal methods.
6475                         Lines without a slash are ignored, use this for
6476                         comments.
6477                         The file is used for all languages.
6478
6479         expr:{expr}     Evaluate expression {expr}.  Use a function to avoid
6480                         trouble with spaces.  |v:val| holds the badly spelled
6481                         word.  The expression must evaluate to a List of
6482                         Lists, each with a suggestion and a score.
6483                         Example:
6484                                 [['the', 33], ['that', 44]]
6485                         Set 'verbose' and use |z=| to see the scores that the
6486                         internal methods use.  A lower score is better.
6487                         This may invoke |spellsuggest()| if you temporarily
6488                         set 'spellsuggest' to exclude the "expr:" part.
6489                         Errors are silently ignored, unless you set the
6490                         'verbose' option to a non-zero value.
6491
6492         Only one of "best", "double" or "fast" may be used.  The others may
6493         appear several times in any order.  Example: >
6494                 :set sps=file:~/.vim/sugg,best,expr:MySuggest()
6495 <
6496         This option cannot be set from a |modeline| or in the |sandbox|, for
6497         security reasons.
6498
6499
6500                         *'splitbelow'* *'sb'* *'nosplitbelow'* *'nosb'*
6501 'splitbelow' 'sb'       boolean (default off)
6502                         global
6503                         {not in Vi}
6504                         {not available when compiled without the |+windows|
6505                         feature}
6506         When on, splitting a window will put the new window below the current
6507         one. |:split|
6508
6509                         *'splitright'* *'spr'* *'nosplitright'* *'nospr'*
6510 'splitright' 'spr'      boolean (default off)
6511                         global
6512                         {not in Vi}
6513                         {not available when compiled without the |+vertsplit|
6514                         feature}
6515         When on, splitting a window will put the new window right of the
6516         current one. |:vsplit|
6517
6518                            *'startofline'* *'sol'* *'nostartofline'* *'nosol'*
6519 'startofline' 'sol'     boolean (default on)
6520                         global
6521                         {not in Vi}
6522         When "on" the commands listed below move the cursor to the first
6523         non-blank of the line.  When off the cursor is kept in the same column
6524         (if possible).  This applies to the commands: CTRL-D, CTRL-U, CTRL-B,
6525         CTRL-F, "G", "H", "M", "L", gg, and to the commands "d", "<<" and ">>"
6526         with a linewise operator, with "%" with a count and to buffer changing
6527         commands (CTRL-^, :bnext, :bNext, etc.).  Also for an Ex command that
6528         only has a line number, e.g., ":25" or ":+".
6529         In case of buffer changing commands the cursor is placed at the column
6530         where it was the last time the buffer was edited.
6531         NOTE: This option is set when 'compatible' is set.
6532
6533                            *'statusline'* *'stl'* *E540* *E542*
6534 'statusline' 'stl'      string  (default empty)
6535                         global or local to window |global-local|
6536                         {not in Vi}
6537                         {not available when compiled without the |+statusline|
6538                         feature}
6539         When nonempty, this option determines the content of the status line.
6540         Also see |status-line|.
6541
6542         The option consists of printf style '%' items interspersed with
6543         normal text.  Each status line item is of the form:
6544           %-0{minwid}.{maxwid}{item}
6545         All fields except the {item} is optional.  A single percent sign can
6546         be given as "%%".  Up to 80 items can be specified.  *E541*
6547
6548         When the option starts with "%!" then it is used as an expression,
6549         evaluated and the result is used as the option value.  Example: >
6550                 :set statusline=%!MyStatusLine()
6551 <       The result can contain %{} items that will be evaluated too.
6552
6553         When there is error while evaluating the option then it will be made
6554         empty to avoid further errors.  Otherwise screen updating would loop.
6555
6556         Note that the only effect of 'ruler' when this option is set (and
6557         'laststatus' is 2) is controlling the output of |CTRL-G|.
6558
6559         field       meaning ~
6560         -           Left justify the item.  The default is right justified
6561                     when minwid is larger than the length of the item.
6562         0           Leading zeroes in numeric items.  Overridden by '-'.
6563         minwid      Minimum width of the item, padding as set by '-' & '0'.
6564                     Value must be 50 or less.
6565         maxwid      Maximum width of the item.  Truncation occurs with a '<'
6566                     on the left for text items.  Numeric items will be
6567                     shifted down to maxwid-2 digits followed by '>'number
6568                     where number is the amount of missing digits, much like
6569                     an exponential notation.
6570         item        A one letter code as described below.
6571
6572         Following is a description of the possible statusline items.  The
6573         second character in "item" is the type:
6574                 N for number
6575                 S for string
6576                 F for flags as described below
6577                 - not applicable
6578
6579         item  meaning ~
6580         f S   Path to the file in the buffer, as typed or relative to current
6581               directory.
6582         F S   Full path to the file in the buffer.
6583         t S   File name (tail) of file in the buffer.
6584         m F   Modified flag, text is "[+]"; "[-]" if 'modifiable' is off.
6585         M F   Modified flag, text is ",+" or ",-".
6586         r F   Readonly flag, text is "[RO]".
6587         R F   Readonly flag, text is ",RO".
6588         h F   Help buffer flag, text is "[help]".
6589         H F   Help buffer flag, text is ",HLP".
6590         w F   Preview window flag, text is "[Preview]".
6591         W F   Preview window flag, text is ",PRV".
6592         y F   Type of file in the buffer, e.g., "[vim]".  See 'filetype'.
6593         Y F   Type of file in the buffer, e.g., ",VIM".  See 'filetype'.
6594               {not available when compiled without |+autocmd| feature}
6595         q S   "[Quickfix List]", "[Location List]" or empty.
6596         k S   Value of "b:keymap_name" or 'keymap' when |:lmap| mappings are
6597               being used: "<keymap>"
6598         n N   Buffer number.
6599         b N   Value of character under cursor.
6600         B N   As above, in hexadecimal.
6601         o N   Byte number in file of byte under cursor, first byte is 1.
6602               Mnemonic: Offset from start of file (with one added)
6603               {not available when compiled without |+byte_offset| feature}
6604         O N   As above, in hexadecimal.
6605         N N   Printer page number.  (Only works in the 'printheader' option.)
6606         l N   Line number.
6607         L N   Number of lines in buffer.
6608         c N   Column number.
6609         v N   Virtual column number.
6610         V N   Virtual column number as -{num}.  Not displayed if equal to 'c'.
6611         p N   Percentage through file in lines as in |CTRL-G|.
6612         P S   Percentage through file of displayed window.  This is like the
6613               percentage described for 'ruler'.  Always 3 in length.
6614         a S   Argument list status as in default title.  ({current} of {max})
6615               Empty if the argument file count is zero or one.
6616         { NF  Evaluate expression between '%{' and '}' and substitute result.
6617               Note that there is no '%' before the closing '}'.
6618         ( -   Start of item group.  Can be used for setting the width and
6619               alignment of a section.  Must be followed by %) somewhere.
6620         ) -   End of item group.  No width fields allowed.
6621         T N   For 'tabline': start of tab page N label.  Use %T after the last
6622               label.  This information is used for mouse clicks.
6623         X N   For 'tabline': start of close tab N label.  Use %X after the
6624               label, e.g.: %3Xclose%X.  Use %999X for a "close current tab"
6625               mark.  This information is used for mouse clicks.
6626         < -   Where to truncate line if too long.  Default is at the start.
6627               No width fields allowed.
6628         = -   Separation point between left and right aligned items.
6629               No width fields allowed.
6630         # -   Set highlight group.  The name must follow and then a # again.
6631               Thus use %#HLname# for highlight group HLname.  The same
6632               highlighting is used, also for the statusline of non-current
6633               windows.
6634         * -   Set highlight group to User{N}, where {N} is taken from the
6635               minwid field, e.g. %1*.  Restore normal highlight with %* or %0*.
6636               The difference between User{N} and StatusLine  will be applied
6637               to StatusLineNC for the statusline of non-current windows.
6638               The number N must be between 1 and 9.  See |hl-User1..9|
6639
6640         When displaying a flag, Vim removes the leading comma, if any, when
6641         that flag comes right after plaintext.  This will make a nice display
6642         when flags are used like in the examples below.
6643
6644         When all items in a group becomes an empty string (i.e. flags that are
6645         not set) and a minwid is not set for the group, the whole group will
6646         become empty.  This will make a group like the following disappear
6647         completely from the statusline when none of the flags are set. >
6648                 :set statusline=...%(\ [%M%R%H]%)...
6649 <
6650         Beware that an expression is evaluated each and every time the status
6651         line is displayed.  The current buffer and current window will be set
6652         temporarily to that of the window (and buffer) whose statusline is
6653         currently being drawn.  The expression will evaluate in this context.
6654         The variable "actual_curbuf" is set to the 'bufnr()' number of the
6655         real current buffer.
6656
6657         The 'statusline' option may be evaluated in the |sandbox|, see
6658         |sandbox-option|.
6659
6660         It is not allowed to change text or jump to another window while
6661         evaluating 'statusline' |textlock|.
6662
6663         If the statusline is not updated when you want it (e.g., after setting
6664         a variable that's used in an expression), you can force an update by
6665         setting an option without changing its value.  Example: >
6666                 :let &ro = &ro
6667
6668 <       A result of all digits is regarded a number for display purposes.
6669         Otherwise the result is taken as flag text and applied to the rules
6670         described above.
6671
6672         Watch out for errors in expressions.  They may render Vim unusable!
6673         If you are stuck, hold down ':' or 'Q' to get a prompt, then quit and
6674         edit your .vimrc or whatever with "vim -u NONE" to get it right.
6675
6676         Examples:
6677         Emulate standard status line with 'ruler' set >
6678           :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
6679 <       Similar, but add ASCII value of char under the cursor (like "ga") >
6680           :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
6681 <       Display byte count and byte value, modified flag in red. >
6682           :set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
6683           :hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
6684 <       Display a ,GZ flag if a compressed file is loaded >
6685           :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
6686 <       In the |:autocmd|'s: >
6687           :let b:gzflag = 1
6688 <       And: >
6689           :unlet b:gzflag
6690 <       And define this function: >
6691           :function VarExists(var, val)
6692           :    if exists(a:var) | return a:val | else | return '' | endif
6693           :endfunction
6694 <
6695                                                 *'suffixes'* *'su'*
6696 'suffixes' 'su'         string  (default ".bak,~,.o,.h,.info,.swp,.obj")
6697                         global
6698                         {not in Vi}
6699         Files with these suffixes get a lower priority when multiple files
6700         match a wildcard.  See |suffixes|.  Commas can be used to separate the
6701         suffixes.  Spaces after the comma are ignored.  A dot is also seen as
6702         the start of a suffix.  To avoid a dot or comma being recognized as a
6703         separator, precede it with a backslash (see |option-backslash| about
6704         including spaces and backslashes).
6705         See 'wildignore' for completely ignoring files.
6706         The use of |:set+=| and |:set-=| is preferred when adding or removing
6707         suffixes from the list.  This avoids problems when a future version
6708         uses another default.
6709
6710                                                 *'suffixesadd'* *'sua'*
6711 'suffixesadd' 'sua'     string  (default "")
6712                         local to buffer
6713                         {not in Vi}
6714                         {not available when compiled without the
6715                         |+file_in_path| feature}
6716         Comma separated list of suffixes, which are used when searching for a
6717         file for the "gf", "[I", etc. commands.  Example: >
6718                 :set suffixesadd=.java
6719 <
6720                                 *'swapfile'* *'swf'* *'noswapfile'* *'noswf'*
6721 'swapfile' 'swf'        boolean (default on)
6722                         local to buffer
6723                         {not in Vi}
6724         Use a swapfile for the buffer.  This option can be reset when a
6725         swapfile is not wanted for a specific buffer.  For example, with
6726         confidential information that even root must not be able to access.
6727         Careful: All text will be in memory:
6728                 - Don't use this for big files.
6729                 - Recovery will be impossible!
6730         A swapfile will only be present when |'updatecount'| is non-zero and
6731         'swapfile' is set.
6732         When 'swapfile' is reset, the swap file for the current buffer is
6733         immediately deleted.  When 'swapfile' is set, and 'updatecount' is
6734         non-zero, a swap file is immediately created.
6735         Also see |swap-file| and |'swapsync'|.
6736
6737         This option is used together with 'bufhidden' and 'buftype' to
6738         specify special kinds of buffers.   See |special-buffers|.
6739
6740                                                 *'swapsync'* *'sws'*
6741 'swapsync' 'sws'        string  (default "fsync")
6742                         global
6743                         {not in Vi}
6744         When this option is not empty a swap file is synced to disk after
6745         writing to it.  This takes some time, especially on busy unix systems.
6746         When this option is empty parts of the swap file may be in memory and
6747         not written to disk.  When the system crashes you may lose more work.
6748         On Unix the system does a sync now and then without Vim asking for it,
6749         so the disadvantage of setting this option off is small.  On some
6750         systems the swap file will not be written at all.  For a unix system
6751         setting it to "sync" will use the sync() call instead of the default
6752         fsync(), which may work better on some systems.
6753         The 'fsync' option is used for the actual file.
6754
6755                                                 *'switchbuf'* *'swb'*
6756 'switchbuf' 'swb'       string  (default "")
6757                         global
6758                         {not in Vi}
6759         This option controls the behavior when switching between buffers.
6760         Possible values (comma separated list):
6761            useopen      If included, jump to the first open window that
6762                         contains the specified buffer (if there is one).
6763                         Otherwise: Do not examine other windows.
6764                         This setting is checked with |quickfix| commands, when
6765                         jumping to errors (":cc", ":cn", "cp", etc.).  It is
6766                         also used in all buffer related split commands, for
6767                         example ":sbuffer", ":sbnext", or ":sbrewind".
6768            usetab       Like "useopen", but also consider windows in other tab
6769                         pages.
6770            split        If included, split the current window before loading
6771                         a buffer for a |quickfix| command that display errors.
6772                         Otherwise: do not split, use current window.
6773            newtab       Like "split", but open a new tab page.  Overrules
6774                         "split" when both are present.
6775
6776                                                 *'synmaxcol'* *'smc'*
6777 'synmaxcol' 'smc'       number  (default 3000)
6778                         local to buffer
6779                         {not in Vi}
6780                         {not available when compiled without the |+syntax|
6781                         feature}
6782         Maximum column in which to search for syntax items.  In long lines the
6783         text after this column is not highlighted and following lines may not
6784         be highlighted correctly, because the syntax state is cleared.
6785         This helps to avoid very slow redrawing for an XML file that is one
6786         long line.
6787         Set to zero to remove the limit.
6788
6789                                                 *'syntax'* *'syn'*
6790 'syntax' 'syn'          string  (default empty)
6791                         local to buffer
6792                         {not in Vi}
6793                         {not available when compiled without the |+syntax|
6794                         feature}
6795         When this option is set, the syntax with this name is loaded, unless
6796         syntax highlighting has been switched off with ":syntax off".
6797         Otherwise this option does not always reflect the current syntax (the
6798         b:current_syntax variable does).
6799         This option is most useful in a modeline, for a file which syntax is
6800         not automatically recognized.  Example, in an IDL file:
6801                 /* vim: set syntax=idl : */ ~
6802         When a dot appears in the value then this separates two filetype
6803         names.  Example:
6804                 /* vim: set syntax=c.doxygen : */ ~
6805         This will use the "c" syntax first, then the "doxygen" syntax.
6806         Note that the second one must be prepared to be loaded as an addition,
6807         otherwise it will be skipped.  More than one dot may appear.
6808         To switch off syntax highlighting for the current file, use: >
6809                 :set syntax=OFF
6810 <       To switch syntax highlighting on according to the current value of the
6811         'filetype' option: >
6812                 :set syntax=ON
6813 <       What actually happens when setting the 'syntax' option is that the
6814         Syntax autocommand event is triggered with the value as argument.
6815         This option is not copied to another buffer, independent of the 's' or
6816         'S' flag in 'cpoptions'.
6817         Only normal file name characters can be used, "/\*?[|<>" are illegal.
6818
6819                                                 *'tabline'* *'tal'*
6820 'tabline' 'tal'         string  (default empty)
6821                         global
6822                         {not in Vi}
6823                         {not available when compiled without the |+windows|
6824                         feature}
6825         When nonempty, this option determines the content of the tab pages
6826         line at the top of the Vim window.  When empty Vim will use a default
6827         tab pages line.  See |setting-tabline| for more info.
6828
6829         The tab pages line only appears as specified with the 'showtabline'
6830         option and only when there is no GUI tab line.  When 'e' is in
6831         'guioptions' and the GUI supports a tab line 'guitablabel' is used
6832         instead.  Note that the two tab pages lines are very different.
6833
6834         The value is evaluated like with 'statusline'.  You can use
6835         |tabpagenr()|, |tabpagewinnr()| and |tabpagebuflist()| to figure out
6836         the text to be displayed.  Use "%1T" for the first label, "%2T" for
6837         the second one, etc.  Use "%X" items for closing labels.
6838
6839         Keep in mind that only one of the tab pages is the current one, others
6840         are invisible and you can't jump to their windows.
6841
6842
6843                                                 *'tabpagemax'* *'tpm'*
6844 'tabpagemax' 'tpm'      number  (default 10)
6845                         global
6846                         {not in Vi}
6847                         {not available when compiled without the |+windows|
6848                         feature}
6849         Maximum number of tab pages to be opened by the |-p| command line
6850         argument or the ":tab all" command. |tabpage|
6851
6852
6853                                                 *'tabstop'* *'ts'*
6854 'tabstop' 'ts'          number  (default 8)
6855                         local to buffer
6856         Number of spaces that a <Tab> in the file counts for.  Also see
6857         |:retab| command, and 'softtabstop' option.
6858
6859         Note: Setting 'tabstop' to any other value than 8 can make your file
6860         appear wrong in many places (e.g., when printing it).
6861
6862         There are four main ways to use tabs in Vim:
6863         1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
6864            (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
6865            will use a mix of tabs and spaces, but typing <Tab> and <BS> will
6866            behave like a tab appears every 4 (or 3) characters.
6867         2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
6868            'expandtab'.  This way you will always insert spaces.  The
6869            formatting will never be messed up when 'tabstop' is changed.
6870         3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
6871            |modeline| to set these values when editing the file again.  Only
6872            works when using Vim to edit the file.
6873         4. Always set 'tabstop' and 'shiftwidth' to the same value, and
6874            'noexpandtab'.  This should then work (for initial indents only)
6875            for any tabstop setting that people use.  It might be nice to have
6876            tabs after the first non-blank inserted as spaces if you do this
6877            though.  Otherwise aligned comments will be wrong when 'tabstop' is
6878            changed.
6879
6880                         *'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'*
6881 'tagbsearch' 'tbs'      boolean (default on)
6882                         global
6883                         {not in Vi}
6884         When searching for a tag (e.g., for the |:ta| command), Vim can either
6885         use a binary search or a linear search in a tags file.  Binary
6886         searching makes searching for a tag a LOT faster, but a linear search
6887         will find more tags if the tags file wasn't properly sorted.
6888         Vim normally assumes that your tags files are sorted, or indicate that
6889         they are not sorted.  Only when this is not the case does the
6890         'tagbsearch' option need to be switched off.
6891
6892         When 'tagbsearch' is on, binary searching is first used in the tags
6893         files.  In certain situations, Vim will do a linear search instead for
6894         certain files, or retry all files with a linear search.  When
6895         'tagbsearch' is off, only a linear search is done.
6896
6897         Linear searching is done anyway, for one file, when Vim finds a line
6898         at the start of the file indicating that it's not sorted: >
6899    !_TAG_FILE_SORTED    0       /some comment/
6900 <       [The whitespace before and after the '0' must be a single <Tab>]
6901
6902         When a binary search was done and no match was found in any of the
6903         files listed in 'tags', and 'ignorecase' is set or a pattern is used
6904         instead of a normal tag name, a retry is done with a linear search.
6905         Tags in unsorted tags files, and matches with different case will only
6906         be found in the retry.
6907
6908         If a tag file indicates that it is case-fold sorted, the second,
6909         linear search can be avoided for the 'ignorecase' case.  Use a value
6910         of '2' in the "!_TAG_FILE_SORTED" line for this.  A tag file can be
6911         case-fold sorted with the -f switch to "sort" in most unices, as in
6912         the command: "sort -f -o tags tags".  For "Exuberant ctags" version
6913         5.x or higher (at least 5.5) the --sort=foldcase switch can be used
6914         for this as well.  Note that case must be folded to uppercase for this
6915         to work.
6916
6917         When 'tagbsearch' is off, tags searching is slower when a full match
6918         exists, but faster when no full match exists.  Tags in unsorted tags
6919         files may only be found with 'tagbsearch' off.
6920         When the tags file is not sorted, or sorted in a wrong way (not on
6921         ASCII byte value), 'tagbsearch' should be off, or the line given above
6922         must be included in the tags file.
6923         This option doesn't affect commands that find all matching tags (e.g.,
6924         command-line completion and ":help").
6925         {Vi: always uses binary search in some versions}
6926
6927                                                 *'taglength'* *'tl'*
6928 'taglength' 'tl'        number  (default 0)
6929                         global
6930         If non-zero, tags are significant up to this number of characters.
6931
6932                         *'tagrelative'* *'tr'* *'notagrelative'* *'notr'*
6933 'tagrelative' 'tr'      boolean (Vim default: on, Vi default: off)
6934                         global
6935                         {not in Vi}
6936         If on and using a tags file in another directory, file names in that
6937         tags file are relative to the directory where the tags file is.
6938         NOTE: This option is set to the Vi default value when 'compatible' is
6939         set and to the Vim default value when 'compatible' is reset.
6940
6941                                                 *'tags'* *'tag'* *E433*
6942 'tags' 'tag'            string  (default "./tags,tags", when compiled with
6943                                 |+emacs_tags|: "./tags,./TAGS,tags,TAGS")
6944                         global or local to buffer |global-local|
6945         Filenames for the tag command, separated by spaces or commas.  To
6946         include a space or comma in a file name, precede it with a backslash
6947         (see |option-backslash| about including spaces and backslashes).
6948         When a file name starts with "./", the '.' is replaced with the path
6949         of the current file.  But only when the 'd' flag is not included in
6950         'cpoptions'.  Environment variables are expanded |:set_env|.  Also see
6951         |tags-option|.
6952         "*", "**" and other wildcards can be used to search for tags files in
6953         a directory tree.  See |file-searching|.  E.g., "/lib/**/tags" will
6954         find all files named "tags" below "/lib".  The filename itself cannot
6955         contain wildcards, it is used as-is.  E.g., "/lib/**/tags?" will find
6956         files called "tags?".  {not available when compiled without the
6957         |+path_extra| feature}
6958         The |tagfiles()| function can be used to get a list of the file names
6959         actually used.
6960         If Vim was compiled with the |+emacs_tags| feature, Emacs-style tag
6961         files are also supported.  They are automatically recognized.  The
6962         default value becomes "./tags,./TAGS,tags,TAGS", unless case
6963         differences are ignored (MS-Windows).  |emacs-tags|
6964         The use of |:set+=| and |:set-=| is preferred when adding or removing
6965         file names from the list.  This avoids problems when a future version
6966         uses another default.
6967         {Vi: default is "tags /usr/lib/tags"}
6968
6969                                 *'tagstack'* *'tgst'* *'notagstack'* *'notgst'*
6970 'tagstack' 'tgst'       boolean (default on)
6971                         global
6972                         {not in all versions of Vi}
6973         When on, the |tagstack| is used normally.  When off, a ":tag" or
6974         ":tselect" command with an argument will not push the tag onto the
6975         tagstack.  A following ":tag" without an argument, a ":pop" command or
6976         any other command that uses the tagstack will use the unmodified
6977         tagstack, but does change the pointer to the active entry.
6978         Resetting this option is useful when using a ":tag" command in a
6979         mapping which should not change the tagstack.
6980
6981                                                 *'term'* *E529* *E530* *E531*
6982 'term'                  string  (default is $TERM, if that fails:
6983                                       in the GUI: "builtin_gui"
6984                                         on Amiga: "amiga"
6985                                          on BeOS: "beos-ansi"
6986                                           on Mac: "mac-ansi"
6987                                          on MiNT: "vt52"
6988                                        on MS-DOS: "pcterm"
6989                                          on OS/2: "os2ansi"
6990                                          on Unix: "ansi"
6991                                           on VMS: "ansi"
6992                                        on Win 32: "win32")
6993                         global
6994         Name of the terminal.  Used for choosing the terminal control
6995         characters.  Environment variables are expanded |:set_env|.
6996         For example: >
6997                 :set term=$TERM
6998 <       See |termcap|.
6999
7000                                                 *'termbidi'* *'tbidi'*
7001                                                 *'notermbidi'* *'notbidi'*
7002 'termbidi' 'tbidi'      boolean (default off, on for "mlterm")
7003                         global
7004                         {not in Vi}
7005                         {only available when compiled with the |+arabic|
7006                         feature}
7007         The terminal is in charge of Bi-directionality of text (as specified
7008         by Unicode).  The terminal is also expected to do the required shaping
7009         that some languages (such as Arabic) require.
7010         Setting this option implies that 'rightleft' will not be set when
7011         'arabic' is set and the value of 'arabicshape' will be ignored.
7012         Note that setting 'termbidi' has the immediate effect that
7013         'arabicshape' is ignored, but 'rightleft' isn't changed automatically.
7014         This option is reset when the GUI is started.
7015         For further details see |arabic.txt|.
7016
7017                                         *'termencoding'* *'tenc'*
7018 'termencoding' 'tenc'   string  (default ""; with GTK+ 2 GUI: "utf-8"; with
7019                                                     Macintosh GUI: "macroman")
7020                         global
7021                         {only available when compiled with the |+multi_byte|
7022                         feature}
7023                         {not in Vi}
7024         Encoding used for the terminal.  This specifies what character
7025         encoding the keyboard produces and the display will understand.  For
7026         the GUI it only applies to the keyboard ('encoding' is used for the
7027         display).  Except for the Mac when 'macatsui' is off, then
7028         'termencoding' should be "macroman".
7029         In the Win32 console version the default value is the console codepage
7030         when it differs from the ANSI codepage.
7031                                                                 *E617*
7032         Note: This does not apply to the GTK+ 2 GUI.  After the GUI has been
7033         successfully initialized, 'termencoding' is forcibly set to "utf-8".
7034         Any attempts to set a different value will be rejected, and an error
7035         message is shown.
7036         For the Win32 GUI 'termencoding' is not used for typed characters,
7037         because the Win32 system always passes Unicode characters.
7038         When empty, the same encoding is used as for the 'encoding' option.
7039         This is the normal value.
7040         Not all combinations for 'termencoding' and 'encoding' are valid.  See
7041         |encoding-table|.
7042         The value for this option must be supported by internal conversions or
7043         iconv().  When this is not possible no conversion will be done and you
7044         will probably experience problems with non-ASCII characters.
7045         Example: You are working with the locale set to euc-jp (Japanese) and
7046         want to edit a UTF-8 file: >
7047                 :let &termencoding = &encoding
7048                 :set encoding=utf-8
7049 <       You need to do this when your system has no locale support for UTF-8.
7050
7051                                                 *'terse'* *'noterse'*
7052 'terse'                 boolean (default off)
7053                         global
7054         When set: Add 's' flag to 'shortmess' option (this makes the message
7055         for a search that hits the start or end of the file not being
7056         displayed).  When reset: Remove 's' flag from 'shortmess' option.  {Vi
7057         shortens a lot of messages}
7058
7059                                    *'textauto'* *'ta'* *'notextauto'* *'nota'*
7060 'textauto' 'ta'         boolean (Vim default: on, Vi default: off)
7061                         global
7062                         {not in Vi}
7063         This option is obsolete.  Use 'fileformats'.
7064         For backwards compatibility, when 'textauto' is set, 'fileformats' is
7065         set to the default value for the current system.  When 'textauto' is
7066         reset, 'fileformats' is made empty.
7067         NOTE: This option is set to the Vi default value when 'compatible' is
7068         set and to the Vim default value when 'compatible' is reset.
7069
7070                                    *'textmode'* *'tx'* *'notextmode'* *'notx'*
7071 'textmode' 'tx'         boolean (MS-DOS, Win32 and OS/2: default on,
7072                                  others: default off)
7073                         local to buffer
7074                         {not in Vi}
7075         This option is obsolete.  Use 'fileformat'.
7076         For backwards compatibility, when 'textmode' is set, 'fileformat' is
7077         set to "dos".  When 'textmode' is reset, 'fileformat' is set to
7078         "unix".
7079
7080                                                 *'textwidth'* *'tw'*
7081 'textwidth' 'tw'        number  (default 0)
7082                         local to buffer
7083                         {not in Vi}
7084         Maximum width of text that is being inserted.  A longer line will be
7085         broken after white space to get this width.  A zero value disables
7086         this.  'textwidth' is set to 0 when the 'paste' option is set.  When
7087         'textwidth' is zero, 'wrapmargin' may be used.  See also
7088         'formatoptions' and |ins-textwidth|.
7089         When 'formatexpr' is set it will be used to break the line.
7090         NOTE: This option is set to 0 when 'compatible' is set.
7091
7092                                                 *'thesaurus'* *'tsr'*
7093 'thesaurus' 'tsr'       string  (default "")
7094                         global or local to buffer |global-local|
7095                         {not in Vi}
7096         List of file names, separated by commas, that are used to lookup words
7097         for thesaurus completion commands |i_CTRL-X_CTRL-T|.  Each line in
7098         the file should contain words with similar meaning, separated by
7099         non-keyword characters (white space is preferred).  Maximum line
7100         length is 510 bytes.
7101         To obtain a file to be used here, check out the wordlist FAQ at
7102         http://www.hyphenologist.co.uk .
7103         To include a comma in a file name precede it with a backslash.  Spaces
7104         after a comma are ignored, otherwise spaces are included in the file
7105         name.  See |option-backslash| about using backslashes.
7106         The use of |:set+=| and |:set-=| is preferred when adding or removing
7107         directories from the list.  This avoids problems when a future version
7108         uses another default.
7109         Backticks cannot be used in this option for security reasons.
7110
7111                              *'tildeop'* *'top'* *'notildeop'* *'notop'*
7112 'tildeop' 'top'         boolean (default off)
7113                         global
7114                         {not in Vi}
7115         When on: The tilde command "~" behaves like an operator.
7116         NOTE: This option is reset when 'compatible' is set.
7117
7118                                 *'timeout'* *'to'* *'notimeout'* *'noto'*
7119 'timeout' 'to'          boolean (default on)
7120                         global
7121                                                 *'ttimeout'* *'nottimeout'*
7122 'ttimeout'              boolean (default off)
7123                         global
7124                         {not in Vi}
7125         These two options together determine the behavior when part of a
7126         mapped key sequence or keyboard code has been received:
7127
7128         'timeout'    'ttimeout'         action  ~
7129            off          off             do not time out
7130            on           on or off       time out on :mappings and key codes
7131            off          on              time out on key codes
7132
7133         If both options are off, Vim will wait until either the complete
7134         mapping or key sequence has been received, or it is clear that there
7135         is no mapping or key sequence for the received characters.  For
7136         example: if you have mapped "vl" and Vim has received 'v', the next
7137         character is needed to see if the 'v' is followed by an 'l'.
7138         When one of the options is on, Vim will wait for about 1 second for
7139         the next character to arrive.  After that the already received
7140         characters are interpreted as single characters.  The waiting time can
7141         be changed with the 'timeoutlen' option.
7142         On slow terminals or very busy systems timing out may cause
7143         malfunctioning cursor keys.  If both options are off, Vim waits
7144         forever after an entered <Esc> if there are key codes that start
7145         with <Esc>.  You will have to type <Esc> twice.  If you do not have
7146         problems with key codes, but would like to have :mapped key
7147         sequences not timing out in 1 second, set the 'ttimeout' option and
7148         reset the 'timeout' option.
7149
7150         NOTE: 'ttimeout' is reset when 'compatible' is set.
7151
7152                                                 *'timeoutlen'* *'tm'*
7153 'timeoutlen' 'tm'       number  (default 1000)
7154                         global
7155                         {not in all versions of Vi}
7156                                                 *'ttimeoutlen'* *'ttm'*
7157 'ttimeoutlen' 'ttm'     number  (default -1)
7158                         global
7159                         {not in Vi}
7160         The time in milliseconds that is waited for a key code or mapped key
7161         sequence to complete.  Also used for CTRL-\ CTRL-N and CTRL-\ CTRL-G
7162         when part of a command has been typed.
7163         Normally only 'timeoutlen' is used and 'ttimeoutlen' is -1.  When a
7164         different timeout value for key codes is desired set 'ttimeoutlen' to
7165         a non-negative number.
7166
7167                 ttimeoutlen     mapping delay      key code delay       ~
7168                    < 0          'timeoutlen'       'timeoutlen'
7169                   >= 0          'timeoutlen'       'ttimeoutlen'
7170
7171         The timeout only happens when the 'timeout' and 'ttimeout' options
7172         tell so.  A useful setting would be >
7173                 :set timeout timeoutlen=3000 ttimeoutlen=100
7174 <       (time out on mapping after three seconds, time out on key codes after
7175         a tenth of a second).
7176
7177                                                 *'title'* *'notitle'*
7178 'title'                 boolean (default off, on when title can be restored)
7179                         global
7180                         {not in Vi}
7181                         {not available when compiled without the |+title|
7182                         feature}
7183         When on, the title of the window will be set to the value of
7184         'titlestring' (if it is not empty), or to:
7185                 filename [+=-] (path) - VIM
7186         Where:
7187                 filename        the name of the file being edited
7188                 -               indicates the file cannot be modified, 'ma' off
7189                 +               indicates the file was modified
7190                 =               indicates the file is read-only
7191                 =+              indicates the file is read-only and modified
7192                 (path)          is the path of the file being edited
7193                 - VIM           the server name |v:servername| or "VIM"
7194         Only works if the terminal supports setting window titles
7195         (currently Amiga console, Win32 console, all GUI versions and
7196         terminals with a non- empty 't_ts' option - these are Unix xterm and
7197         iris-ansi by default, where 't_ts' is taken from the builtin termcap).
7198                                                                 *X11*
7199         When Vim was compiled with HAVE_X11 defined, the original title will
7200         be restored if possible.  The output of ":version" will include "+X11"
7201         when HAVE_X11 was defined, otherwise it will be "-X11".  This also
7202         works for the icon name |'icon'|.
7203         But: When Vim was started with the |-X| argument, restoring the title
7204         will not work (except in the GUI).
7205         If the title cannot be restored, it is set to the value of 'titleold'.
7206         You might want to restore the title outside of Vim then.
7207         When using an xterm from a remote machine you can use this command:
7208             rsh machine_name xterm -display $DISPLAY &
7209         then the WINDOWID environment variable should be inherited and the
7210         title of the window should change back to what it should be after
7211         exiting Vim.
7212
7213                                                                 *'titlelen'*
7214 'titlelen'              number  (default 85)
7215                         global
7216                         {not in Vi}
7217                         {not available when compiled without the |+title|
7218                         feature}
7219         Gives the percentage of 'columns' to use for the length of the window
7220         title.  When the title is longer, only the end of the path name is
7221         shown.  A '<' character before the path name is used to indicate this.
7222         Using a percentage makes this adapt to the width of the window.  But
7223         it won't work perfectly, because the actual number of characters
7224         available also depends on the font used and other things in the title
7225         bar.  When 'titlelen' is zero the full path is used.  Otherwise,
7226         values from 1 to 30000 percent can be used.
7227         'titlelen' is also used for the 'titlestring' option.
7228
7229                                                 *'titleold'*
7230 'titleold'              string  (default "Thanks for flying Vim")
7231                         global
7232                         {not in Vi}
7233                         {only available when compiled with the |+title|
7234                         feature}
7235         This option will be used for the window title when exiting Vim if the
7236         original title cannot be restored.  Only happens if 'title' is on or
7237         'titlestring' is not empty.
7238         This option cannot be set from a |modeline| or in the |sandbox|, for
7239         security reasons.
7240                                                 *'titlestring'*
7241 'titlestring'           string  (default "")
7242                         global
7243                         {not in Vi}
7244                         {not available when compiled without the |+title|
7245                         feature}
7246         When this option is not empty, it will be used for the title of the
7247         window.  This happens only when the 'title' option is on.
7248         Only works if the terminal supports setting window titles (currently
7249         Amiga console, Win32 console, all GUI versions and terminals with a
7250         non-empty 't_ts' option).
7251         When Vim was compiled with HAVE_X11 defined, the original title will
7252         be restored if possible |X11|.
7253         When this option contains printf-style '%' items, they will be
7254         expanded according to the rules used for 'statusline'.
7255         Example: >
7256     :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p")
7257     :set title titlestring=%<%F%=%l/%L-%P titlelen=70
7258 <       The value of 'titlelen' is used to align items in the middle or right
7259         of the available space.
7260         Some people prefer to have the file name first: >
7261     :set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
7262 <       Note the use of "%{ }" and an expression to get the path of the file,
7263         without the file name.  The "%( %)" constructs are used to add a
7264         separating space only when needed.
7265         NOTE: Use of special characters in 'titlestring' may cause the display
7266         to be garbled (e.g., when it contains a CR or NL character).
7267         {not available when compiled without the |+statusline| feature}
7268
7269                                 *'toolbar'* *'tb'*
7270 'toolbar' 'tb'          string  (default "icons,tooltips")
7271                         global
7272                         {only for |+GUI_GTK|, |+GUI_Athena|, |+GUI_Motif| and
7273                         |+GUI_Photon|}
7274         The contents of this option controls various toolbar settings.  The
7275         possible values are:
7276                 icons           Toolbar buttons are shown with icons.
7277                 text            Toolbar buttons shown with text.
7278                 horiz           Icon and text of a toolbar button are
7279                                 horizontally arranged.  {only in GTK+ 2 GUI}
7280                 tooltips        Tooltips are active for toolbar buttons.
7281         Tooltips refer to the popup help text which appears after the mouse
7282         cursor is placed over a toolbar button for a brief moment.
7283
7284         If you want the toolbar to be shown with icons as well as text, do the
7285         following: >
7286                 :set tb=icons,text
7287 <       Motif and Athena cannot display icons and text at the same time.  They
7288         will show icons if both are requested.
7289
7290         If none of the strings specified in 'toolbar' are valid or if
7291         'toolbar' is empty, this option is ignored.  If you want to disable
7292         the toolbar, you need to set the 'guioptions' option.  For example: >
7293                 :set guioptions-=T
7294 <       Also see |gui-toolbar|.
7295
7296                                                 *'toolbariconsize'* *'tbis'*
7297 'toolbariconsize' 'tbis'        string  (default "small")
7298                                 global
7299                                 {not in Vi}
7300                                 {only in the GTK+ 2 GUI}
7301         Controls the size of toolbar icons.  The possible values are:
7302                 tiny            Use tiny toolbar icons.
7303                 small           Use small toolbar icons (default).
7304                 medium          Use medium-sized toolbar icons.
7305                 large           Use large toolbar icons.
7306         The exact dimensions in pixels of the various icon sizes depend on
7307         the current theme.  Common dimensions are large=32x32, medium=24x24,
7308         small=20x20 and tiny=16x16.
7309
7310         If 'toolbariconsize' is empty, the global default size as determined
7311         by user preferences or the current theme is used.
7312
7313                              *'ttybuiltin'* *'tbi'* *'nottybuiltin'* *'notbi'*
7314 'ttybuiltin' 'tbi'      boolean (default on)
7315                         global
7316                         {not in Vi}
7317         When on, the builtin termcaps are searched before the external ones.
7318         When off the builtin termcaps are searched after the external ones.
7319         When this option is changed, you should set the 'term' option next for
7320         the change to take effect, for example: >
7321                 :set notbi term=$TERM
7322 <       See also |termcap|.
7323         Rationale: The default for this option is "on", because the builtin
7324         termcap entries are generally better (many systems contain faulty
7325         xterm entries...).
7326
7327                                      *'ttyfast'* *'tf'* *'nottyfast'* *'notf'*
7328 'ttyfast' 'tf'          boolean (default off, on when 'term' is xterm, hpterm,
7329                                         sun-cmd, screen, rxvt, dtterm or
7330                                         iris-ansi; also on when running Vim in
7331                                         a DOS console)
7332                         global
7333                         {not in Vi}
7334         Indicates a fast terminal connection.  More characters will be sent to
7335         the screen for redrawing, instead of using insert/delete line
7336         commands.  Improves smoothness of redrawing when there are multiple
7337         windows and the terminal does not support a scrolling region.
7338         Also enables the extra writing of characters at the end of each screen
7339         line for lines that wrap.  This helps when using copy/paste with the
7340         mouse in an xterm and other terminals.
7341
7342                                                 *'ttymouse'* *'ttym'*
7343 'ttymouse' 'ttym'       string  (default depends on 'term')
7344                         global
7345                         {not in Vi}
7346                         {only in Unix and VMS, doesn't work in the GUI; not
7347                         available when compiled without |+mouse|}
7348         Name of the terminal type for which mouse codes are to be recognized.
7349         Currently these strings are valid:
7350                                                         *xterm-mouse*
7351            xterm        xterm-like mouse handling.  The mouse generates
7352                         "<Esc>[Mscr", where "scr" is three bytes:
7353                                 "s"  = button state
7354                                 "c"  = column plus 33
7355                                 "r"  = row plus 33
7356                         This only works up to 223 columns!  See "dec" for a
7357                         solution.
7358            xterm2       Works like "xterm", but with the xterm reporting the
7359                         mouse position while the mouse is dragged.  This works
7360                         much faster and more precise.  Your xterm must at
7361                         least at patchlevel 88 / XFree 3.3.3 for this to
7362                         work.  See below for how Vim detects this
7363                         automatically.
7364                                                         *netterm-mouse*
7365            netterm      NetTerm mouse handling.  The mouse generates
7366                         "<Esc>}r,c<CR>", where "r,c" are two decimal numbers
7367                         for the row and column.
7368                                                         *dec-mouse*
7369            dec          DEC terminal mouse handling.  The mouse generates a
7370                         rather complex sequence, starting with "<Esc>[".
7371                         This is also available for an Xterm, if it was
7372                         configured with "--enable-dec-locator".
7373                                                         *jsbterm-mouse*
7374            jsbterm      JSB term mouse handling.
7375                                                         *pterm-mouse*
7376            pterm        QNX pterm mouse handling.
7377                                                         *urxvt-mouse*
7378            urxvt        Mouse handling for the urxvt (rxvt-unicode) terminal.
7379
7380         The mouse handling must be enabled at compile time |+mouse_xterm|
7381         |+mouse_dec| |+mouse_netterm|.
7382         Only "xterm"(2) is really recognized.  NetTerm mouse codes are always
7383         recognized, if enabled at compile time.  DEC terminal mouse codes
7384         are recognized if enabled at compile time, and 'ttymouse' is not
7385         "xterm" (because the xterm and dec mouse codes conflict).
7386         This option is automatically set to "xterm", when the 'term' option is
7387         set to a name that starts with "xterm", and 'ttymouse' is not "xterm"
7388         or "xterm2" already.  The main use of this option is to set it to
7389         "xterm", when the terminal name doesn't start with "xterm", but it can
7390         handle xterm mouse codes.
7391         The "xterm2" value will be set if the xterm version is reported to be
7392         95 or higher.  This only works when compiled with the |+termresponse|
7393         feature and if |t_RV| is set to the escape sequence to request the
7394         xterm version number.  Otherwise "xterm2" must be set explicitly.
7395         If you do not want 'ttymouse' to be set to "xterm2" automatically, set
7396         t_RV to an empty string: >
7397                 :set t_RV=
7398 <
7399                                                 *'ttyscroll'* *'tsl'*
7400 'ttyscroll' 'tsl'       number  (default 999)
7401                         global
7402         Maximum number of lines to scroll the screen.  If there are more lines
7403         to scroll the window is redrawn.  For terminals where scrolling is
7404         very slow and redrawing is not slow this can be set to a small number,
7405         e.g., 3, to speed up displaying.
7406
7407                                                 *'ttytype'* *'tty'*
7408 'ttytype' 'tty'         string  (default from $TERM)
7409                         global
7410         Alias for 'term', see above.
7411
7412                                                 *'undodir'* *'udir'*
7413 'undodir' 'udir'        string  (default ".")
7414                         global
7415                         {not in Vi}
7416                         {only when compiled with the |+persistent_undo| feature}
7417         List of directory names for undo files, separated with commas.
7418         See |'backupdir'| for details of the format.
7419         "." means using the directory of the file.  The undo file name for
7420         "file.txt" is ".file.txt.un~".
7421         For other directories the file name is the full path of the edited
7422         file, with path separators replaced with "%".
7423         When writing: The first directory that exists is used. "." always
7424         works, no directories after "." will be used for writing.
7425         When reading all entries are tried to find an undo file.  The first
7426         undo file that exists is used.  When it cannot be read an error is
7427         given, no further entry is used.
7428         See |undo-persistence|.
7429
7430                                                 *'undofile'* *'udf'*
7431 'undofile' 'udf'        boolean (default off)
7432                         local to buffer
7433                         {not in Vi}
7434                         {only when compiled with the |+persistent_undo| feature}
7435         When on, Vim automatically saves undo history to an undo file when
7436         writing a buffer to a file, and restores undo history from the same
7437         file on buffer read.
7438         The directory where the undo file is stored is specified by 'undodir'.
7439         For more information about this feature see |undo-persistence|.
7440         The undo file is not read when 'undoreload' causes the buffer from
7441         before a reload to be saved for undo.
7442         WARNING: this is a very new feature.  Use at your own risk!
7443
7444                                                 *'undolevels'* *'ul'*
7445 'undolevels' 'ul'       number  (default 100, 1000 for Unix, VMS,
7446                                                 Win32 and OS/2)
7447                         global
7448                         {not in Vi}
7449         Maximum number of changes that can be undone.  Since undo information
7450         is kept in memory, higher numbers will cause more memory to be used
7451         (nevertheless, a single change can use an unlimited amount of memory).
7452         Set to 0 for Vi compatibility: One level of undo and "u" undoes
7453         itself: >
7454                 set ul=0
7455 <       But you can also get Vi compatibility by including the 'u' flag in
7456         'cpoptions', and still be able to use CTRL-R to repeat undo.
7457         Also see |undo-two-ways|.
7458         Set to a negative number for no undo at all: >
7459                 set ul=-1
7460 <       This helps when you run out of memory for a single change.
7461         Also see |clear-undo|.
7462
7463                                                 *'undoreload'* *'ur'*
7464 'undoreload' 'ur'       number  (default 10000)
7465                         global
7466                         {not in Vi}
7467         Save the whole buffer for undo when reloading it.  This applies to the
7468         ":e!" command and reloading for when the buffer changed outside of
7469         Vim. |FileChangedShell|
7470         The save only happens when this options is negative or when the number
7471         of lines is smaller than the value of this option.
7472         Set this option to zero to disable undo for a reload.
7473
7474         When saving undo for a reload, any undo file is not read.
7475
7476         Note that this causes the whole buffer to be stored in memory.  Set
7477         this option to a lower value if you run out of memory.
7478
7479                                                 *'updatecount'* *'uc'*
7480 'updatecount' 'uc'      number  (default: 200)
7481                         global
7482                         {not in Vi}
7483         After typing this many characters the swap file will be written to
7484         disk.  When zero, no swap file will be created at all (see chapter on
7485         recovery |crash-recovery|).  'updatecount' is set to zero by starting
7486         Vim with the "-n" option, see |startup|.  When editing in readonly
7487         mode this option will be initialized to 10000.
7488         The swapfile can be disabled per buffer with |'swapfile'|.
7489         When 'updatecount' is set from zero to non-zero, swap files are
7490         created for all buffers that have 'swapfile' set.  When 'updatecount'
7491         is set to zero, existing swap files are not deleted.
7492         Also see |'swapsync'|.
7493         This option has no meaning in buffers where |'buftype'| is "nofile"
7494         or "nowrite".
7495
7496                                                 *'updatetime'* *'ut'*
7497 'updatetime' 'ut'       number  (default 4000)
7498                         global
7499                         {not in Vi}
7500         If this many milliseconds nothing is typed the swap file will be
7501         written to disk (see |crash-recovery|).  Also used for the
7502         |CursorHold| autocommand event.
7503
7504                                                 *'verbose'* *'vbs'*
7505 'verbose' 'vbs'         number  (default 0)
7506                         global
7507                         {not in Vi, although some versions have a boolean
7508                         verbose option}
7509         When bigger than zero, Vim will give messages about what it is doing.
7510         Currently, these messages are given:
7511         >= 1    When the viminfo file is read or written.
7512         >= 2    When a file is ":source"'ed.
7513         >= 5    Every searched tags file and include file.
7514         >= 8    Files for which a group of autocommands is executed.
7515         >= 9    Every executed autocommand.
7516         >= 12   Every executed function.
7517         >= 13   When an exception is thrown, caught, finished, or discarded.
7518         >= 14   Anything pending in a ":finally" clause.
7519         >= 15   Every executed Ex command (truncated at 200 characters).
7520
7521         This option can also be set with the "-V" argument.  See |-V|.
7522         This option is also set by the |:verbose| command.
7523
7524         When the 'verbosefile' option is set then the verbose messages are not
7525         displayed.
7526
7527                                                 *'verbosefile'* *'vfile'*
7528 'verbosefile' 'vfile'   string  (default empty)
7529                         global
7530                         {not in Vi}
7531         When not empty all messages are written in a file with this name.
7532         When the file exists messages are appended.
7533         Writing to the file ends when Vim exits or when 'verbosefile' is made
7534         empty.  Writes are buffered, thus may not show up for some time.
7535         Setting 'verbosefile' to a new value is like making it empty first.
7536         The difference with |:redir| is that verbose messages are not
7537         displayed when 'verbosefile' is set.
7538
7539                                                 *'viewdir'* *'vdir'*
7540 'viewdir' 'vdir'        string  (default for Amiga, MS-DOS, OS/2 and Win32:
7541                                                          "$VIM/vimfiles/view",
7542                                  for Unix: "~/.vim/view",
7543                                  for Macintosh: "$VIM:vimfiles:view"
7544                                  for VMS: "sys$login:vimfiles/view"
7545                                  for RiscOS: "Choices:vimfiles/view")
7546                         global
7547                         {not in Vi}
7548                         {not available when compiled without the |+mksession|
7549                         feature}
7550         Name of the directory where to store files for |:mkview|.
7551         This option cannot be set from a |modeline| or in the |sandbox|, for
7552         security reasons.
7553
7554                                                 *'viewoptions'* *'vop'*
7555 'viewoptions' 'vop'     string  (default: "folds,options,cursor")
7556                         global
7557                         {not in Vi}
7558                         {not available when compiled without the |+mksession|
7559                         feature}
7560         Changes the effect of the |:mkview| command.  It is a comma separated
7561         list of words.  Each word enables saving and restoring something:
7562            word         save and restore ~
7563            cursor       cursor position in file and in window
7564            folds        manually created folds, opened/closed folds and local
7565                         fold options
7566            options      options and mappings local to a window or buffer (not
7567                         global values for local options)
7568            slash        backslashes in file names replaced with forward
7569                         slashes
7570            unix         with Unix end-of-line format (single <NL>), even when
7571                         on Windows or DOS
7572
7573         "slash" and "unix" are useful on Windows when sharing view files
7574         with Unix.  The Unix version of Vim cannot source dos format scripts,
7575         but the Windows version of Vim can source unix format scripts.
7576
7577                                 *'viminfo'* *'vi'* *E526* *E527* *E528*
7578 'viminfo' 'vi'          string  (Vi default: "", Vim default for MS-DOS,
7579                                    Windows and OS/2: '100,<50,s10,h,rA:,rB:,
7580                                    for Amiga: '100,<50,s10,h,rdf0:,rdf1:,rdf2:
7581                                    for others: '100,<50,s10,h)
7582                         global
7583                         {not in Vi}
7584                         {not available when compiled without the |+viminfo|
7585                         feature}
7586         When non-empty, the viminfo file is read upon startup and written
7587         when exiting Vim (see |viminfo-file|).  The string should be a comma
7588         separated list of parameters, each consisting of a single character
7589         identifying the particular parameter, followed by a number or string
7590         which specifies the value of that parameter.  If a particular
7591         character is left out, then the default value is used for that
7592         parameter.  The following is a list of the identifying characters and
7593         the effect of their value.
7594         CHAR    VALUE   ~
7595                                                         *viminfo-!*
7596         !       When included, save and restore global variables that start
7597                 with an uppercase letter, and don't contain a lowercase
7598                 letter.  Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
7599                 and "_K_L_M" are not.  Nested List and Dict items may not be
7600                 read back correctly, you end up with an empty item.
7601                                                         *viminfo-quote*
7602         "       Maximum number of lines saved for each register.  Old name of
7603                 the '<' item, with the disadvantage that you need to put a
7604                 backslash before the ", otherwise it will be recognized as the
7605                 start of a comment!
7606                                                         *viminfo-%*
7607         %       When included, save and restore the buffer list.  If Vim is
7608                 started with a file name argument, the buffer list is not
7609                 restored.  If Vim is started without a file name argument, the
7610                 buffer list is restored from the viminfo file.  Buffers
7611                 without a file name and buffers for help files are not written
7612                 to the viminfo file.
7613                 When followed by a number, the number specifies the maximum
7614                 number of buffers that are stored.  Without a number all
7615                 buffers are stored.
7616                                                         *viminfo-'*
7617         '       Maximum number of previously edited files for which the marks
7618                 are remembered.  This parameter must always be included when
7619                 'viminfo' is non-empty.
7620                 Including this item also means that the |jumplist| and the
7621                 |changelist| are stored in the viminfo file.
7622                                                         *viminfo-/*
7623         /       Maximum number of items in the search pattern history to be
7624                 saved.  If non-zero, then the previous search and substitute
7625                 patterns are also saved.  When not included, the value of
7626                 'history' is used.
7627                                                         *viminfo-:*
7628         :       Maximum number of items in the command-line history to be
7629                 saved.  When not included, the value of 'history' is used.
7630                                                         *viminfo-<*
7631         <       Maximum number of lines saved for each register.  If zero then
7632                 registers are not saved.  When not included, all lines are
7633                 saved.  '"' is the old name for this item.
7634                 Also see the 's' item below: limit specified in Kbyte.
7635                                                         *viminfo-@*
7636         @       Maximum number of items in the input-line history to be
7637                 saved.  When not included, the value of 'history' is used.
7638                                                         *viminfo-c*
7639         c       When included, convert the text in the viminfo file from the
7640                 'encoding' used when writing the file to the current
7641                 'encoding'.  See |viminfo-encoding|.
7642                                                         *viminfo-f*
7643         f       Whether file marks need to be stored.  If zero, file marks ('0
7644                 to '9, 'A to 'Z) are not stored.  When not present or when
7645                 non-zero, they are all stored.  '0 is used for the current
7646                 cursor position (when exiting or when doing ":wviminfo").
7647                                                         *viminfo-h*
7648         h       Disable the effect of 'hlsearch' when loading the viminfo
7649                 file.  When not included, it depends on whether ":nohlsearch"
7650                 has been used since the last search command.
7651                                                         *viminfo-n*
7652         n       Name of the viminfo file.  The name must immediately follow
7653                 the 'n'.  Must be the last one!  If the "-i" argument was
7654                 given when starting Vim, that file name overrides the one
7655                 given here with 'viminfo'.  Environment variables are expanded
7656                 when opening the file, not when setting the option.
7657                                                         *viminfo-r*
7658         r       Removable media.  The argument is a string (up to the next
7659                 ',').  This parameter can be given several times.  Each
7660                 specifies the start of a path for which no marks will be
7661                 stored.  This is to avoid removable media.  For MS-DOS you
7662                 could use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:".  You can
7663                 also use it for temp files, e.g., for Unix: "r/tmp".  Case is
7664                 ignored.  Maximum length of each 'r' argument is 50
7665                 characters.
7666                                                         *viminfo-s*
7667         s       Maximum size of an item in Kbyte.  If zero then registers are
7668                 not saved.  Currently only applies to registers.  The default
7669                 "s10" will exclude registers with more than 10 Kbyte of text.
7670                 Also see the '<' item above: line count limit.
7671
7672         Example: >
7673             :set viminfo='50,<1000,s100,:0,n~/vim/viminfo
7674 <
7675         '50             Marks will be remembered for the last 50 files you
7676                         edited.
7677         <1000           Contents of registers (up to 1000 lines each) will be
7678                         remembered.
7679         s100            Registers with more than 100 Kbyte text are skipped.
7680         :0              Command-line history will not be saved.
7681         n~/vim/viminfo  The name of the file to use is "~/vim/viminfo".
7682         no /            Since '/' is not specified, the default will be used,
7683                         that is, save all of the search history, and also the
7684                         previous search and substitute patterns.
7685         no %            The buffer list will not be saved nor read back.
7686         no h            'hlsearch' highlighting will be restored.
7687
7688         When setting 'viminfo' from an empty value you can use |:rviminfo| to
7689         load the contents of the file, this is not done automatically.
7690
7691         This option cannot be set from a |modeline| or in the |sandbox|, for
7692         security reasons.
7693
7694                                             *'virtualedit'* *'ve'*
7695 'virtualedit' 've'      string  (default "")
7696                         global
7697                         {not in Vi}
7698                         {not available when compiled without the
7699                         |+virtualedit| feature}
7700         A comma separated list of these words:
7701             block       Allow virtual editing in Visual block mode.
7702             insert      Allow virtual editing in Insert mode.
7703             all         Allow virtual editing in all modes.
7704             onemore     Allow the cursor to move just past the end of the line
7705
7706         Virtual editing means that the cursor can be positioned where there is
7707         no actual character.  This can be halfway into a tab or beyond the end
7708         of the line.  Useful for selecting a rectangle in Visual mode and
7709         editing a table.
7710         "onemore" is not the same, it will only allow moving the cursor just
7711         after the last character of the line.  This makes some commands more
7712         consistent.  Previously the cursor was always past the end of the line
7713         if the line was empty.  But it is far from Vi compatible.  It may also
7714         break some plugins or Vim scripts.  For example because |l| can move
7715         the cursor after the last character.  Use with care!
7716         Using the |$| command will move to the last character in the line, not
7717         past it.  This may actually move the cursor to the left!
7718         It doesn't make sense to combine "all" with "onemore", but you will
7719         not get a warning for it.
7720
7721                         *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep*
7722 'visualbell' 'vb'       boolean (default off)
7723                         global
7724                         {not in Vi}
7725         Use visual bell instead of beeping.  The terminal code to display the
7726         visual bell is given with 't_vb'.  When no beep or flash is wanted,
7727         use ":set vb t_vb=".
7728         Note: When the GUI starts, 't_vb' is reset to its default value.  You
7729         might want to set it again in your |gvimrc|.
7730         In the GUI, 't_vb' defaults to "<Esc>|f", which inverts the display
7731         for 20 msec.  If you want to use a different time, use "<Esc>|40f",
7732         where 40 is the time in msec.
7733         Does not work on the Amiga, you always get a screen flash.
7734         Also see 'errorbells'.
7735
7736                                                 *'warn'* *'nowarn'*
7737 'warn'                  boolean (default on)
7738                         global
7739         Give a warning message when a shell command is used while the buffer
7740         has been changed.
7741
7742                      *'weirdinvert'* *'wiv'* *'noweirdinvert'* *'nowiv'*
7743 'weirdinvert' 'wiv'     boolean (default off)
7744                         global
7745                         {not in Vi}
7746         This option has the same effect as the 't_xs' terminal option.
7747         It is provided for backwards compatibility with version 4.x.
7748         Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and
7749         vice versa.  Has no effect when the GUI is running.
7750
7751                                                 *'whichwrap'* *'ww'*
7752 'whichwrap' 'ww'        string  (Vim default: "b,s", Vi default: "")
7753                         global
7754                         {not in Vi}
7755         Allow specified keys that move the cursor left/right to move to the
7756         previous/next line when the cursor is on the first/last character in
7757         the line.  Concatenate characters to allow this for these keys:
7758                 char   key        mode  ~
7759                  b    <BS>       Normal and Visual
7760                  s    <Space>    Normal and Visual
7761                  h    "h"        Normal and Visual (not recommended)
7762                  l    "l"        Normal and Visual (not recommended)
7763                  <    <Left>     Normal and Visual
7764                  >    <Right>    Normal and Visual
7765                  ~    "~"        Normal
7766                  [    <Left>     Insert and Replace
7767                  ]    <Right>    Insert and Replace
7768         For example: >
7769                 :set ww=<,>,[,]
7770 <       allows wrap only when cursor keys are used.
7771         When the movement keys are used in combination with a delete or change
7772         operator, the <EOL> also counts for a character.  This makes "3h"
7773         different from "3dh" when the cursor crosses the end of a line.  This
7774         is also true for "x" and "X", because they do the same as "dl" and
7775         "dh".  If you use this, you may also want to use the mapping
7776         ":map <BS> X" to make backspace delete the character in front of the
7777         cursor.
7778         When 'l' is included and it is used after an operator at the end of a
7779         line then it will not move to the next line.  This makes "dl", "cl",
7780         "yl" etc. work normally.
7781         NOTE: This option is set to the Vi default value when 'compatible' is
7782         set and to the Vim default value when 'compatible' is reset.
7783
7784                                                 *'wildchar'* *'wc'*
7785 'wildchar' 'wc'         number  (Vim default: <Tab>, Vi default: CTRL-E)
7786                         global
7787                         {not in Vi}
7788         Character you have to type to start wildcard expansion in the
7789         command-line, as specified with 'wildmode'.
7790         More info here: |cmdline-completion|.
7791         The character is not recognized when used inside a macro.  See
7792         'wildcharm' for that.
7793         Although 'wc' is a number option, you can set it to a special key: >
7794                 :set wc=<Esc>
7795 <       NOTE: This option is set to the Vi default value when 'compatible' is
7796         set and to the Vim default value when 'compatible' is reset.
7797
7798                                                 *'wildcharm'* *'wcm'*
7799 'wildcharm' 'wcm'       number  (default: none (0))
7800                         global
7801                         {not in Vi}
7802         'wildcharm' works exactly like 'wildchar', except that it is
7803         recognized when used inside a macro.  You can find "spare" command-line
7804         keys suitable for this option by looking at |ex-edit-index|.  Normally
7805         you'll never actually type 'wildcharm', just use it in mappings that
7806         automatically invoke completion mode, e.g.: >
7807                 :set wcm=<C-Z>
7808                 :cnoremap ss so $vim/sessions/*.vim<C-Z>
7809 <       Then after typing :ss you can use CTRL-P & CTRL-N.
7810
7811                                                 *'wildignore'* *'wig'*
7812 'wildignore' 'wig'      string  (default "")
7813                         global
7814                         {not in Vi}
7815                         {not available when compiled without the |+wildignore|
7816                         feature}
7817         A list of file patterns.  A file that matches with one of these
7818         patterns is ignored when completing file or directory names, and
7819         influences the result of |expand()|, |glob()| and |globpath()| unless
7820         a flag is passed to disable this.
7821         The pattern is used like with |:autocmd|, see |autocmd-patterns|.
7822         Also see 'suffixes'.
7823         Example: >
7824                 :set wildignore=*.o,*.obj
7825 <       The use of |:set+=| and |:set-=| is preferred when adding or removing
7826         a pattern from the list.  This avoids problems when a future version
7827         uses another default.
7828
7829
7830                         *'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'*
7831 'wildignorecase' 'wic'  boolean (default off)
7832                         global
7833                         {not in Vi}
7834         When set case is ignored when completing file names and directories.
7835         Has no effect on systems where file name case is generally ignored.
7836         Does not apply when the shell is used to expand wildcards, which
7837         happens when there are special characters.
7838
7839
7840                                 *'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'*
7841 'wildmenu' 'wmnu'       boolean (default off)
7842                         global
7843                         {not in Vi}
7844                         {not available if compiled without the |+wildmenu|
7845                         feature}
7846         When 'wildmenu' is on, command-line completion operates in an enhanced
7847         mode.  On pressing 'wildchar' (usually <Tab>) to invoke completion,
7848         the possible matches are shown just above the command line, with the
7849         first match highlighted (overwriting the status line, if there is
7850         one).  Keys that show the previous/next match, such as <Tab> or
7851         CTRL-P/CTRL-N, cause the highlight to move to the appropriate match.
7852         When 'wildmode' is used, "wildmenu" mode is used where "full" is
7853         specified.  "longest" and "list" do not start "wildmenu" mode.
7854         If there are more matches than can fit in the line, a ">" is shown on
7855         the right and/or a "<" is shown on the left.  The status line scrolls
7856         as needed.
7857         The "wildmenu" mode is abandoned when a key is hit that is not used
7858         for selecting a completion.
7859         While the "wildmenu" is active the following keys have special
7860         meanings:
7861
7862         <Left> <Right>  - select previous/next match (like CTRL-P/CTRL-N)
7863         <Down>          - in filename/menu name completion: move into a
7864                           subdirectory or submenu.
7865         <CR>            - in menu completion, when the cursor is just after a
7866                           dot: move into a submenu.
7867         <Up>            - in filename/menu name completion: move up into
7868                           parent directory or parent menu.
7869
7870         This makes the menus accessible from the console |console-menus|.
7871
7872         If you prefer the <Left> and <Right> keys to move the cursor instead
7873         of selecting a different match, use this: >
7874                 :cnoremap <Left> <Space><BS><Left>
7875                 :cnoremap <Right> <Space><BS><Right>
7876 <
7877         The "WildMenu" highlighting is used for displaying the current match
7878         |hl-WildMenu|.
7879
7880                                                 *'wildmode'* *'wim'*
7881 'wildmode' 'wim'        string  (Vim default: "full")
7882                         global
7883                         {not in Vi}
7884         Completion mode that is used for the character specified with
7885         'wildchar'.  It is a comma separated list of up to four parts.  Each
7886         part specifies what to do for each consecutive use of 'wildchar'.  The
7887         first part specifies the behavior for the first use of 'wildchar',
7888         The second part for the second use, etc.
7889         These are the possible values for each part:
7890         ""              Complete only the first match.
7891         "full"          Complete the next full match.  After the last match,
7892                         the original string is used and then the first match
7893                         again.
7894         "longest"       Complete till longest common string.  If this doesn't
7895                         result in a longer string, use the next part.
7896         "longest:full"  Like "longest", but also start 'wildmenu' if it is
7897                         enabled.
7898         "list"          When more than one match, list all matches.
7899         "list:full"     When more than one match, list all matches and
7900                         complete first match.
7901         "list:longest"  When more than one match, list all matches and
7902                         complete till longest common string.
7903         When there is only a single match, it is fully completed in all cases.
7904
7905         Examples: >
7906                 :set wildmode=full
7907 <       Complete first full match, next match, etc.  (the default) >
7908                 :set wildmode=longest,full
7909 <       Complete longest common string, then each full match >
7910                 :set wildmode=list:full
7911 <       List all matches and complete each full match >
7912                 :set wildmode=list,full
7913 <       List all matches without completing, then each full match >
7914                 :set wildmode=longest,list
7915 <       Complete longest common string, then list alternatives.
7916         More info here: |cmdline-completion|.
7917
7918                                                 *'wildoptions'* *'wop'*
7919 'wildoptions' 'wop'     string  (default "")
7920                         global
7921                         {not in Vi}
7922                         {not available when compiled without the |+wildignore|
7923                         feature}
7924         A list of words that change how command line completion is done.
7925         Currently only one word is allowed:
7926           tagfile       When using CTRL-D to list matching tags, the kind of
7927                         tag and the file of the tag is listed.  Only one match
7928                         is displayed per line.  Often used tag kinds are:
7929                                 d       #define
7930                                 f       function
7931         Also see |cmdline-completion|.
7932
7933                                                 *'winaltkeys'* *'wak'*
7934 'winaltkeys' 'wak'      string  (default "menu")
7935                         global
7936                         {not in Vi}
7937                         {only used in Win32, Motif, GTK and Photon GUI}
7938         Some GUI versions allow the access to menu entries by using the ALT
7939         key in combination with a character that appears underlined in the
7940         menu.  This conflicts with the use of the ALT key for mappings and
7941         entering special characters.  This option tells what to do:
7942           no    Don't use ALT keys for menus.  ALT key combinations can be
7943                 mapped, but there is no automatic handling.  This can then be
7944                 done with the |:simalt| command.
7945           yes   ALT key handling is done by the windowing system.  ALT key
7946                 combinations cannot be mapped.
7947           menu  Using ALT in combination with a character that is a menu
7948                 shortcut key, will be handled by the windowing system.  Other
7949                 keys can be mapped.
7950         If the menu is disabled by excluding 'm' from 'guioptions', the ALT
7951         key is never used for the menu.
7952         This option is not used for <F10>; on Win32 and with GTK <F10> will
7953         select the menu, unless it has been mapped.
7954
7955                                                 *'window'* *'wi'*
7956 'window' 'wi'           number  (default screen height - 1)
7957                         global
7958         Window height.  Do not confuse this with the height of the Vim window,
7959         use 'lines' for that.
7960         Used for |CTRL-F| and |CTRL-B| when there is only one window and the
7961         value is smaller than 'lines' minus one.  The screen will scroll
7962         'window' minus two lines, with a minimum of one.
7963         When 'window' is equal to 'lines' minus one CTRL-F and CTRL-B scroll
7964         in a much smarter way, taking care of wrapping lines.
7965         When resizing the Vim window, the value is smaller than 1 or more than
7966         or equal to 'lines' it will be set to 'lines' minus 1.
7967         {Vi also uses the option to specify the number of displayed lines}
7968
7969                                                 *'winheight'* *'wh'* *E591*
7970 'winheight' 'wh'        number  (default 1)
7971                         global
7972                         {not in Vi}
7973                         {not available when compiled without the |+windows|
7974                         feature}
7975         Minimal number of lines for the current window.  This is not a hard
7976         minimum, Vim will use fewer lines if there is not enough room.  If the
7977         focus goes to a window that is smaller, its size is increased, at the
7978         cost of the height of other windows.
7979         Set 'winheight' to a small number for normal editing.
7980         Set it to 999 to make the current window fill most of the screen.
7981         Other windows will be only 'winminheight' high.  This has the drawback
7982         that ":all" will create only two windows.  To avoid "vim -o 1 2 3 4"
7983         to create only two windows, set the option after startup is done,
7984         using the |VimEnter| event: >
7985                 au VimEnter * set winheight=999
7986 <       Minimum value is 1.
7987         The height is not adjusted after one of the commands that change the
7988         height of the current window.
7989         'winheight' applies to the current window.  Use 'winminheight' to set
7990         the minimal height for other windows.
7991
7992                         *'winfixheight'* *'wfh'* *'nowinfixheight'* *'nowfh'*
7993 'winfixheight' 'wfh'    boolean (default off)
7994                         local to window
7995                         {not in Vi}
7996                         {not available when compiled without the |+windows|
7997                         feature}
7998         Keep the window height when windows are opened or closed and
7999         'equalalways' is set.  Also for |CTRL-W_=|.  Set by default for the
8000         |preview-window| and |quickfix-window|.
8001         The height may be changed anyway when running out of room.
8002
8003                         *'winfixwidth'* *'wfw'* *'nowinfixwidth'* *'nowfw'*
8004 'winfixwidth' 'wfw'     boolean (default off)
8005                         local to window
8006                         {not in Vi}
8007                         {not available when compiled without the |+windows|
8008                         feature}
8009         Keep the window width when windows are opened or closed and
8010         'equalalways' is set.  Also for |CTRL-W_=|.
8011         The width may be changed anyway when running out of room.
8012
8013                                                 *'winminheight'* *'wmh'*
8014 'winminheight' 'wmh'    number  (default 1)
8015                         global
8016                         {not in Vi}
8017                         {not available when compiled without the |+windows|
8018                         feature}
8019         The minimal height of a window, when it's not the current window.
8020         This is a hard minimum, windows will never become smaller.
8021         When set to zero, windows may be "squashed" to zero lines (i.e. just a
8022         status bar) if necessary.  They will return to at least one line when
8023         they become active (since the cursor has to have somewhere to go.)
8024         Use 'winheight' to set the minimal height of the current window.
8025         This option is only checked when making a window smaller.  Don't use a
8026         large number, it will cause errors when opening more than a few
8027         windows.  A value of 0 to 3 is reasonable.
8028
8029                                                 *'winminwidth'* *'wmw'*
8030 'winminwidth' 'wmw'     number  (default 1)
8031                         global
8032                         {not in Vi}
8033                         {not available when compiled without the |+vertsplit|
8034                         feature}
8035         The minimal width of a window, when it's not the current window.
8036         This is a hard minimum, windows will never become smaller.
8037         When set to zero, windows may be "squashed" to zero columns (i.e. just
8038         a vertical separator) if necessary.  They will return to at least one
8039         line when they become active (since the cursor has to have somewhere
8040         to go.)
8041         Use 'winwidth' to set the minimal width of the current window.
8042         This option is only checked when making a window smaller.  Don't use a
8043         large number, it will cause errors when opening more than a few
8044         windows.  A value of 0 to 12 is reasonable.
8045
8046                                                 *'winwidth'* *'wiw'* *E592*
8047 'winwidth' 'wiw'        number  (default 20)
8048                         global
8049                         {not in Vi}
8050                         {not available when compiled without the |+vertsplit|
8051                         feature}
8052         Minimal number of columns for the current window.  This is not a hard
8053         minimum, Vim will use fewer columns if there is not enough room.  If
8054         the current window is smaller, its size is increased, at the cost of
8055         the width of other windows.  Set it to 999 to make the current window
8056         always fill the screen.  Set it to a small number for normal editing.
8057         The width is not adjusted after one of the commands to change the
8058         width of the current window.
8059         'winwidth' applies to the current window.  Use 'winminwidth' to set
8060         the minimal width for other windows.
8061
8062                                                 *'wrap'* *'nowrap'*
8063 'wrap'                  boolean (default on)
8064                         local to window
8065                         {not in Vi}
8066         This option changes how text is displayed.  It doesn't change the text
8067         in the buffer, see 'textwidth' for that.
8068         When on, lines longer than the width of the window will wrap and
8069         displaying continues on the next line.  When off lines will not wrap
8070         and only part of long lines will be displayed.  When the cursor is
8071         moved to a part that is not shown, the screen will scroll
8072         horizontally.
8073         The line will be broken in the middle of a word if necessary.  See
8074         'linebreak' to get the break at a word boundary.
8075         To make scrolling horizontally a bit more useful, try this: >
8076                 :set sidescroll=5
8077                 :set listchars+=precedes:<,extends:>
8078 <       See 'sidescroll', 'listchars' and |wrap-off|.
8079         This option can't be set from a |modeline| when the 'diff' option is
8080         on.
8081
8082                                                 *'wrapmargin'* *'wm'*
8083 'wrapmargin' 'wm'       number  (default 0)
8084                         local to buffer
8085         Number of characters from the right window border where wrapping
8086         starts.  When typing text beyond this limit, an <EOL> will be inserted
8087         and inserting continues on the next line.
8088         Options that add a margin, such as 'number' and 'foldcolumn', cause
8089         the text width to be further reduced.  This is Vi compatible.
8090         When 'textwidth' is non-zero, this option is not used.
8091         See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
8092         and less usefully}
8093
8094                                    *'wrapscan'* *'ws'* *'nowrapscan'* *'nows'*
8095 'wrapscan' 'ws'         boolean (default on)                    *E384* *E385*
8096                         global
8097         Searches wrap around the end of the file.  Also applies to |]s| and
8098         |[s|, searching for spelling mistakes.
8099
8100                                                    *'write'* *'nowrite'*
8101 'write'                 boolean (default on)
8102                         global
8103                         {not in Vi}
8104         Allows writing files.  When not set, writing a file is not allowed.
8105         Can be used for a view-only mode, where modifications to the text are
8106         still allowed.  Can be reset with the |-m| or |-M| command line
8107         argument.  Filtering text is still possible, even though this requires
8108         writing a temporary file.
8109
8110                                    *'writeany'* *'wa'* *'nowriteany'* *'nowa'*
8111 'writeany' 'wa'         boolean (default off)
8112                         global
8113         Allows writing to any file with no need for "!" override.
8114
8115                              *'writebackup'* *'wb'* *'nowritebackup'* *'nowb'*
8116 'writebackup' 'wb'      boolean (default on with |+writebackup| feature, off
8117                                         otherwise)
8118                         global
8119                         {not in Vi}
8120         Make a backup before overwriting a file.  The backup is removed after
8121         the file was successfully written, unless the 'backup' option is
8122         also on.  Reset this option if your file system is almost full.  See
8123         |backup-table| for another explanation.
8124         When the 'backupskip' pattern matches, a backup is not made anyway.
8125         NOTE: This option is set to the default value when 'compatible' is
8126         set.
8127
8128                                                 *'writedelay'* *'wd'*
8129 'writedelay' 'wd'       number  (default 0)
8130                         global
8131                         {not in Vi}
8132         The number of microseconds to wait for each character sent to the
8133         screen.  When non-zero, characters are sent to the terminal one by
8134         one.  For MS-DOS pcterm this does not work.  For debugging purposes.
8135
8136  vim:tw=78:ts=8:ft=help:norl: