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: