neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

options.txt (338468B)


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