选项

Nvim :help 页面,生成 来自 源代码 使用 tree-sitter-vimdoc 解析器。


选项
有关选项的概述,请参见 quickref.txt 选项列表
Vim 有许多内部变量和开关,可以设置它们以实现特殊效果。这些选项有三种形式:布尔值只能是开或关 布尔值 切换 数字具有数值 字符串具有字符串值

1. 设置选项 设置选项 E764

:se :set :se[t][!] 显示所有与默认值不同的选项。当存在 [!] 时,每个选项都在单独的一行上。
:se[t][!] all 显示所有选项。当存在 [!] 时,每个选项都在单独的一行上。
E518 E519 :se[t] {option} 显示 {option} 的值。 注意: 一些遗留选项已被删除。 nvim-removed
:se[t] {option} 切换选项:设置,打开它。数字选项:显示值。字符串选项:显示值。
:se[t] no{option} 切换选项:重置,关闭它。
:set-! :set-inv :se[t] {option}! 或 :se[t] inv{option} 切换选项:反转值。
:set-default :set-& :set-&vi :set-&vim :se[t] {option}& 将选项重置为其默认值。:se[t] {option}&vi 将选项重置为其 Vi 默认值。:se[t] {option}&vim 将选项重置为其 Vim 默认值。
:se[t] all& 将所有选项设置为其默认值。这些选项的值不会改变:'columns' 'lines' 警告: 这可能会有很多副作用。
:set-args :set= E487 E521 :se[t] {option}={value} 或 :se[t] {option}:{value} 将字符串或数字选项设置为 {value}。对于数值选项,值可以以十进制、十六进制(以 0x 开头)或八进制(以 '0' 或 '0o' 开头)给出。可以通过键入 'wildchar' 插入旧值(默认情况下,这是一个 <Tab>)。许多具有固定语法的字符串选项也支持完成已知值。请参阅 命令行完成完成设置选项{option} 和 '=' 之间的空格是允许的,并将被忽略。'=' 和 {value} 之间的空格是不允许的。请参阅 选项反斜杠 以了解如何在 {value} 中使用空格和反斜杠。
:se[t] {option}+={value} :set+=
{value} 添加到数字选项,或将 {value} 附加到字符串选项。当选项是逗号分隔列表时,将添加逗号,除非该值为空。如果选项是标志列表,则将删除多余的标志。当添加已经存在的标志时,选项值不会改变。另请参阅上面的 :set-args
:se[t] {option}^={value} :set^=
{value} 乘以数字选项,或将 {value} 预置到字符串选项。当选项是逗号分隔列表时,将添加逗号,除非该值为空。另请参阅上面的 :set-args
:se[t] {option}-={value} :set-=
从数字选项中减去 {value},或者从字符串选项中删除 {value}(如果存在)。如果在字符串选项中找不到 {value},则不会出现错误或警告。当选项是逗号分隔列表时,将删除逗号,除非选项变为空。当选项是标志列表时,{value} 必须与它们在选项中出现的完全相同。一次删除一个标志以避免问题。可以通过键入 'wildchar' 插入来自逗号分隔列表或标志列表的各个值。请参阅 完成设置选项。另请参阅上面的 :set-args
":set" 的 {option} 参数可以重复。例如
:set ai nosi sw=3 ts=3
如果在某个参数中出现错误,将给出错误消息,并将忽略以下参数。
:set-verbose
'verbose' 非零时,显示选项值也将告诉它上次在何处设置。例如
:verbose set shiftwidth cindent?
shiftwidth=4
上次从模式行第 1 行设置
cindent
上次从 /usr/local/share/vim/vim60/ftplugin/c.vim 第 30 行设置
这仅在请求特定选项值时执行,而不是针对 ":verbose set all" 或没有参数的 ":verbose set"。当手动设置选项时,不会出现“Last set”消息。当在执行函数、用户命令或自动命令时设置选项时,将报告定义它的脚本。一些特殊文本
上次从模式行第 1 行设置
选项是在 模式行 中设置的。
上次从 --cmd 参数设置
选项是使用命令行参数 --cmd 或 + 设置的。
上次从 -c 参数设置
选项是使用命令行参数 -c、+、-S-q 设置的。
上次从环境变量设置
选项是从 $VIMINIT 设置的。
上次从错误处理程序设置
在评估它导致错误时,选项被清除。
option-backslash
要在字符串选项值中包含空格,它必须以反斜杠开头。要包含反斜杠,您必须使用两个。实际上,这意味着选项值中的反斜杠数量减半(向下取整)。在选项 'path''cdpath''tags' 中,空格必须以三个反斜杠开头,因为它们可以由逗号或空格分隔。逗号分隔的选项(如 'backupdir''tags')也需要用两个反斜杠转义逗号,而对于非逗号分隔的选项(如 'makeprg')则不需要。当使用 :let字面量字符串 设置选项时,您需要使用少一层反斜杠。以下是一些示例
:set makeprg=make\ file            results in "make file"
:let &makeprg='make file'            (same as above)
:set makeprg=make\\\ file            results in "make\ file"
:set tags=tags\ /usr/tags            results in "tags" and "/usr/tags"
:set tags=tags\\\ file            results in "tags file"
:let &tags='tags\ file'            (same as above)
:set makeprg=make,file            results in "make,file"
:set makeprg=make\\,file            results in "make\,file"
:set tags=tags,file                    results in "tags" and "file"
:set tags=tags\\,file            results in "tags,file"
:let &tags='tags\,file'            (same as above)
"|" 字符将 ":set" 命令与后续命令分隔开。要在选项值中包含 "|",请使用 "\|" 代替。此示例将 'titlestring' 选项设置为 "hi|there"
:set titlestring=hi\|there
这将 'titlestring' 选项设置为 "hi",并将 'iconstring' 选项设置为 "there"
:set titlestring=hi|set iconstring=there
类似地,双引号字符开始注释。要在选项值中包含 '"',请使用 '\"' 代替。此示例将 'titlestring' 选项设置为 "hi "there""
:set titlestring=hi\ \"there\"
对于 Win32,文件名中的反斜杠大多不会被删除。更准确地说:对于需要文件名的选项(那些扩展环境变量的选项),文件名字符之前的反斜杠不会被删除。但是,特殊字符(空格、反斜杠、逗号等)之前的反斜杠将按照上面解释的使用方式使用。有一个特殊情况,当值以 "\\" 开头时
:set dir=\\machine\path            results in "\\machine\path"
:set dir=\\\\machine\\path            results in "\\machine\path"
:set dir=\\path\\file            results in "\\path\file" (wrong!)
对于第一个,开头将被保留,但对于第二个,反斜杠将减半。这确保了它在您希望反斜杠减半和您希望保留反斜杠时都有效。第三个给出可能不是您想要的结果。避免使用它。
添加选项标志 删除选项标志 E539
一些选项是标志列表。当您要向此类选项添加标志时,不改变现有的标志,您可以这样做
:set guioptions+=a
从选项中删除标志,如下所示
:set guioptions-=a
这将从 'guioptions' 中删除 'a' 标志。请注意,您应该一次添加或删除一个标志。如果 'guioptions' 的值为 "ab",使用 "set guioptions-=ba" 将不起作用,因为字符串 "ba" 不存在。
:set_env 扩展环境 扩展环境变量 特定字符串选项中的环境变量将被扩展。如果环境变量存在,则 '$' 和后面的环境变量名称将被替换为其值。如果它不存在,则 '$' 和名称不会被修改。任何非标识符字符(不是字母、数字或 '_')都可以在环境变量名称后面。该字符和后面的内容将附加到环境变量的值。示例
:set term=$TERM.new
:set path=/usr/$INCLUDE,$HOME/include,.
当使用 ":set opt-=val" 或 ":set opt+=val" 向选项添加或删除字符串时,扩展在添加或删除之前完成。
处理本地选项 本地选项
注意: 以下内容也适用于 全局-本地 选项。
一些选项仅适用于窗口或缓冲区。每个窗口或缓冲区都有该选项的副本,因此每个都可以有自己的值。这允许您在一个窗口中设置 'list',而在另一个窗口中不设置。并在一个缓冲区中将 'shiftwidth' 设置为 3,而在另一个缓冲区中设置为 4。
以下解释了这些本地选项在特定情况下会发生什么。您实际上不需要知道所有这些,因为 Vim 主要使用您期望的选项值。不幸的是,实现用户期望的行为有点复杂……
当拆分窗口时,本地选项将复制到新窗口。因此,在拆分之后,两个窗口的内容看起来相同。
当编辑新的缓冲区时,必须初始化其本地选项值。由于当前缓冲区的本地选项可能是针对该缓冲区的,因此不会使用这些选项。相反,对于每个缓冲区本地选项,也存在一个全局值,该值用于新的缓冲区。使用 ":set",本地和全局值都将改变。使用 "setlocal" 仅更改本地值,因此此值在编辑新缓冲区时不会使用。
当编辑以前编辑过的缓冲区时,将再次使用上次关闭的窗口的选项。如果此缓冲区已在此窗口中编辑,则将使用当时的值。否则,将使用上次关闭的窗口(其中最后编辑了缓冲区)的值。
可以专门为某种类型的缓冲区设置本地窗口选项。当您在同一个窗口中编辑另一个缓冲区时,您不希望继续使用这些本地窗口选项。因此,Vim 会保留本地窗口选项的全局值,该值在编辑另一个缓冲区时使用。每个窗口都有这些值的副本。因此,这些是窗口的本地值,但对于窗口中的所有缓冲区是全局的。这样,您就可以做
:e one
:set list
:e two
现在,'list' 选项也将设置在 "two" 中,因为使用 ":set list" 命令,您也设置了全局值。
:set nolist
:e one
:setlocal list
:e two
现在 'list' 选项没有设置,因为 ":set nolist" 重置了全局值,":setlocal list" 仅改变了局部值,而 ":e two" 获取了全局值。请注意,如果您接下来执行以下操作
:e one
您将恢复 'list' 的值,因为它是在您上次编辑 "one" 时使用的值。窗口的本地选项会为每个缓冲区记住。这也会在缓冲区未加载时发生,但在缓冲区被清除时 :bwipe 会丢失。
特殊的局部窗口选项 local-noglobal
以下局部窗口选项在创建新窗口时不会被复制,因此它们的行为略有不同
选项 原因
'previewwindow' 只能有一个 'scroll' 特定于现有窗口 'winfixbuf' 特定于现有窗口 'winfixheight' 特定于现有窗口 'winfixwidth' 特定于现有窗口
特殊的局部缓冲区选项
以下局部缓冲区选项在创建新缓冲区时不会被复制,因此它们的行为略有不同
选项 原因
'filetype' 由 autocommands 显式设置 'syntax' 由 autocommands 显式设置 'bufhidden' 表示 特殊缓冲区 'buftype' 表示 特殊缓冲区 'readonly' 将自动检测 'modified' 将自动检测
:setl :setlocal :setl[ocal][!] ... 与 ":set" 相似,但仅设置当前缓冲区或窗口的局部值。并非所有选项都有局部值。如果选项没有局部值,则设置全局值。使用 "all" 参数:显示所有局部选项的局部值。不带参数:显示所有与默认值不同的局部选项的局部值。显示特定局部选项时,显示局部值。对于全局/局部布尔选项,当使用全局值时,选项名称之前会显示 "--"。对于全局选项,会显示全局值(但这在将来可能会改变)。
:se[t] {option}< 将 {option} 的有效值设置为其全局值。对于 全局-局部 选项,将删除局部值,以便使用全局值。对于所有其他选项,将全局值复制到局部值。
:setl[ocal] {option}< 通过将全局值复制到局部值,将 {option} 的有效值设置为其全局值。
请注意,对于 全局-局部 选项,字符串选项和基于数字的选项之间的行为略有不同。
:setg :setglobal :setg[lobal][!] ... 与 ":set" 相似,但仅设置局部选项的全局值,而不改变局部值。显示选项时,会显示全局值。使用 "all" 参数:显示所有局部选项的全局值。不带参数:显示所有与默认值不同的局部选项的全局值。
对于缓冲区级和窗口级局部选项
命令 全局值 局部值 条件
:set option=value 设置 设置 :setlocal option=value - 设置 :setglobal option=value 设置 - :set option? - 显示 局部值已设置 :set option? 显示 - 局部值未设置 :setlocal option? - 显示 :setglobal option? 显示 -
具有局部值的全局选项 global-local
当您主要对所有缓冲区和窗口使用一个值时,选项是全局的。对于某些全局选项,有时使用不同的局部值很有用。您可以使用 ":setlocal" 设置局部值。然后,该缓冲区或窗口将使用局部值,而其他缓冲区和窗口将继续使用全局值。
例如,您有两个窗口,它们都在 C 源代码上。它们使用全局 'makeprg' 选项。如果您在两个窗口中的一个窗口中执行以下操作
:set makeprg=gmake
那么另一个窗口将切换到相同的值。您无需在另一个 C 源代码窗口中也设置 'makeprg' 选项。但是,如果您在新窗口中开始编辑 Perl 文件,则希望对它使用另一个 'makeprg',而不改变 C 源代码文件使用的值。您使用以下命令
:setlocal makeprg=perlmake
您可以通过将局部值设为空来切换回使用全局值
:setlocal makeprg=
这只对字符串选项有效。对于数字或布尔选项,您需要使用 "<" 标记,如下所示
:setlocal autoread<
请注意,对于非布尔选项和非数字选项,使用 "<" 将全局值复制到局部值,而不是切换回使用全局值(当全局值稍后更改时,这一点很重要)。您也可以使用
:set path<
这将使 'path' 的局部值为空,以便使用全局值。因此它与以下操作相同
:setlocal path=
注意:将来,更多全局选项可以设置为 全局-局部。然后,在全局选项上使用 ":setlocal" 的行为可能会有所不同。
option-value-function
一些选项('completefunc''findfunc''omnifunc''operatorfunc''quickfixtextfunc''tagfunc''thesaurusfunc')被设置为函数名、函数引用或 lambda 函数。使用 lambda 时,它将被转换为名称,例如 "<lambda>123"。示例
set opfunc=MyOpFunc
set opfunc=function('MyOpFunc')
set opfunc=funcref('MyOpFunc')
set opfunc={a\ ->\ MyOpFunc(a)}
设置为脚本级函数
set opfunc=s:MyLocalFunc
set opfunc=<SID>MyLocalFunc
使用 funcref 变量设置
let Fn = function('MyTagFunc')
let &tagfunc = Fn
使用 lambda 表达式设置
let &tagfunc = {t -> MyTagFunc(t)}
使用包含 lambda 表达式的变量设置
let L = {a, b, c -> MyTagFunc(a, b , c)}
let &tagfunc = L
在 expr 选项中调用函数 expr-option-function
一些选项的值,例如 'foldexpr',是一个表达式,它会被计算以获得一个值。计算可能需要相当大的开销。最小化开销的一种方法,以及保持选项值非常简单的方法,是定义一个函数并将选项设置为不带参数调用它。也可以使用 v:lua-call。示例
lua << EOF
  function _G.MyFoldFunc()
    -- ... compute fold level for line v:lnum
    return level
  end
EOF
set foldexpr=v:lua.MyFoldFunc()
设置文件类型
:setf[iletype] [FALLBACK] {filetype} :setf :setfiletype'filetype' 选项设置为 {filetype},但前提是在(嵌套)autocommands 序列中尚未完成此操作。这是以下操作的简写
:if !did_filetype()
:  setlocal filetype={filetype}
:endif
此命令在 filetype.vim 文件中使用,以避免两次设置 'filetype' 选项,导致加载不同的设置和语法文件。
当存在可选的 FALLBACK 参数时,后来的 :setfiletype 命令将覆盖 'filetype'。这将用于仅仅是猜测的文件类型检测。此命令执行后,did_filetype() 将返回 false。
option-window optwin :bro[wse] se[t] :set-browse :browse-set :opt :options :opt[ions] 打开一个窗口,用于查看和设置所有选项。选项按功能分组。为每个选项提供简短的帮助。在简短的帮助上按 <CR> 以打开一个帮助窗口,其中包含更多关于该选项的帮助。修改选项的值,并在 "set" 行上按 <CR> 设置新值。对于窗口和缓冲区特定的选项,将使用最后一个访问的窗口来设置选项值,除非这是一个帮助窗口,在这种情况下,将使用帮助窗口下面的窗口(跳过选项窗口)。
$HOME
使用 "~" 与使用 "$HOME" 相似,但它只在选项开头和空格或逗号之后被识别。
在 Unix 系统上,也可以使用 "~user"。它将被替换为用户 "user" 的主目录。示例
:set path=~mool/include,/usr/include,.
在 Unix 系统上,也可以使用 "${HOME}"。然后,{} 之间的名称可以包含非 id 字符。请注意,如果您想在 "gf" 命令中使用它,您需要将 '{' 和 '}' 字符添加到 'isfname' 中。
注意:扩展环境变量和 "~/" 仅在使用 ":set" 命令时执行,而不在使用 ":let" 将值分配给选项时执行。
$HOME-windows
在 MS-Windows 上,如果 $HOME 未定义为环境变量,则 Vim 在运行时将将其设置为 $HOMEDRIVE$HOMEPATH 的扩展。如果 $HOMEDRIVE 未设置,则使用 $USERPROFILE。
此扩展值不会导出到环境中,这在运行外部命令时很重要
:echo system('set | findstr ^HOME=')
:echo luaeval('os.getenv("HOME")')
尽管 exists('$HOME') 为 true,但应回显为空字符串(空字符串)。当将 $HOME 设置为非空字符串时,它将被导出到子进程。
请注意,扩展选项的最大长度是有限制的。具体限制取决于系统,通常为 256 或 1024 个字符。

2. 自动设置选项 auto-setting

除了使用 ":set" 命令更改选项之外,您还可以通过多种方式自动设置选项
1. 使用 配置文件启动 参数。您可以使用 :mkvimrc:mkview:mksession 创建一个初始化文件。2. 在编辑文件时执行的 autocommands。3. 如果启用了 'exrc',则使用当前目录中的 ".nvim.lua" 文件。4. 当前缓冲区目录或祖先目录中的 editorconfig。5. 在文件开头或结尾找到的 'modeline' 设置。请参见下文。
modeline vim: vi: ex: E520 有两种形式的 modelines。第一种形式: [text{white}]{vi:|vim:|ex:}[white]{options}
[text{white}] 空白或任何文本,后面紧跟至少一个空格(<Space><Tab>); "ex:" 始终需要至少一个空格 {vi:|vim:|ex:} 字符串 "vi:"、"vim:" 或 "ex:" [white] 可选空格 {options} 选项设置列表,使用空格或 ':' 分隔,其中每个 ':' 之间的部分都是 ":set" 命令的参数(可以为空)
示例
vi:noai:sw=3 ts=6
vim: tw=77
第二种形式(这与某些版本的 Vi 兼容)
[text{white}]{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
[text{white}] 空白或任何文本,后面紧跟至少一个空格(<Space><Tab>); "ex:" 始终需要至少一个空格 {vi:|vim:|Vim:|ex:} 字符串 "vi:"、"vim:"、"Vim:" 或 "ex:" [white] 可选空格 se[t] 字符串 "set " 或 "se "(注意空格);当使用 "Vim" 时,它必须是 "set"。{options} 选项列表,使用空格分隔,它是 ":set" 命令的参数 : 冒号 [text] 任何文本或空白
示例
/* vim: set ai tw=75: */
/* Vim: set ai tw=75: */
{vi:|vim:|Vim:|ex:} 前面的空格是必需的。这样可以最大限度地减少将 "lex:" 等普通词误识别为 modeline 的可能性。有一个例外:"vi:" 和 "vim:" 也可以位于行的开头(为了与版本 3.0 兼容)。在行的开头使用 "ex:" 将被忽略(这可能是 "example:" 的简写)。
如果 modeline 在 modeline 中被禁用,则随后出现的 modelines 将被忽略。这样可以允许在每个文件的基础上关闭 modeline。当一行看起来像 modeline 但实际上不是时,这很有用。例如,最好在包含 "vim:" 等字符串的 YAML 文件的开头使用
# vim: nomodeline
以避免误识别 modeline。如果存在任何 modeline 禁用后的同一行上的后续选项,则仍然会对这些选项进行计算(但您通常不会有任何选项)。
modeline-local
这些选项的设置方式与“:setlocal”类似:新值只应用于包含文件的缓冲区和窗口。虽然可以从模式行设置全局选项,但这并不常见。如果您打开了两个窗口,并且其中的文件将相同的全局选项设置为不同的值,则结果取决于最后打开的窗口。
当编辑一个已加载的文件时,只使用来自模式行的窗口本地选项。因此,如果您在打开文件后手动更改了缓冲区本地选项,那么如果您在另一个窗口中编辑相同的缓冲区,它将不会被更改。但窗口本地选项将被设置。
模式行版本
如果模式行只用于某些版本的 Vim,则可以在使用“vim:”或“Vim:”的地方指定版本号:vim{vers}: 版本 {vers} 或更高版本 vim<{vers}: 版本低于 {vers} vim={vers}: 版本 {vers} vim>{vers}: 版本高于 {vers} {vers} 为 Vim 7.0 的 700(主版本乘以 100 加上次版本)。例如,要仅对 Vim 7.0 使用模式行
/* vim700: set foldmethod=marker */
要对版本 7.2 之后的 Vim 使用模式行
/* vim>702: set cole=2: */
“vim”和“:”之间不能有空格。如果 {vers} 不适合整数,则忽略模式行。
可以使用 'modelines' 选项设置检查的行数。如果 'modeline' 被关闭或 'modelines' 为 0,则不检查任何行。
请注意,对于第一种形式,行中其余部分都被使用,因此像这样的行
/* vi:ts=4: */
将为尾部的“*/”给出错误消息。此行可以正常使用
/* vi:set ts=4: */
如果检测到错误,则跳过该行中的其余部分。
如果您想在 set 命令中包含“:”,请在它前面加上“\”。冒号前面的反斜杠将被删除。例如
/* vi:set fillchars=stl\:^,vert\:\|: */
这将 'fillchars' 选项设置为“stl:^,vert:\|”。冒号前只删除单个反斜杠。因此要包含“\:” 您必须指定“\\:”。 E992
出于安全原因,不支持除“set”以外的其他命令(有人可能会创建带有模式行的特洛伊木马文本文件)。并且并非所有选项都可以设置。对于某些选项,会设置一个标志,以便在使用该值时,沙箱 会生效。某些选项只能在 'modelineexpr' 设置的情况下从模式行设置(默认情况下关闭)。
尽管如此,模式行始终存在造成麻烦的小风险。例如,当某个恶作剧者将 'textwidth' 设置为 5 时,您所有的行都将意外地被换行。因此,在编辑不可信文本之前,请禁用模式行。例如,邮件 ftplugin 就会这样做。
提示:如果您想执行除设置选项以外的操作,可以定义一个自动命令来检查文件是否存在特定字符串。例如
au BufReadPost * if getline(1) =~ "VAR" | call SetVar() | endif
并定义一个函数 SetVar() 来对包含“VAR”的行执行某些操作。

3. 选项摘要 option-summary

在下面的列表中,所有选项都以完整名称和缩写形式(如果有)列出。两种形式都可以使用。
在本文档中,当布尔选项被“设置”时,表示输入“:set option”。当选项被“重置”时,表示使用“:set nooption”。
大多数选项在所有窗口和缓冲区中都是相同的。有一些选项是特定于在窗口中显示文本的方式的。这些选项可以在每个窗口中设置为不同的值。例如,'list' 选项可以在一个窗口中设置,在另一个窗口中重置,以便同时查看两种类型的视图。有一些选项是特定于某个文件的。这些选项可以在每个文件或缓冲区中具有不同的值。例如,'textwidth' 选项可以为普通文本文件设置为 78,为 C 程序设置为 0。
全局 所有缓冲区和窗口的单个选项 窗口本地 每个窗口都有该选项的自己的副本 缓冲区本地 每个缓冲区都有该选项的自己的副本
创建新窗口时,当前活动窗口中的选项值将用作窗口特定选项的默认值。对于缓冲区特定选项,这取决于 'cpoptions' 选项中的 's' 和 'S' 标志。如果包含 's'(默认情况下包含),则在首次进入缓冲区时,将从当前活动缓冲区复制缓冲区选项的值。如果包含 'S',则每次进入缓冲区时都会复制选项,这几乎等同于拥有全局选项。如果 's' 和 'S' 不存在,则在创建缓冲区时,将从当前活动缓冲区复制选项。
隐藏选项 hidden-options
并非所有选项在所有版本中都受支持。这取决于支持的功能,有时还取决于系统。在下面的花括号中会对此进行说明。当选项不受支持时,仍然可以设置它而不会出现错误,这被称为隐藏选项。但是,您无法获取隐藏选项的值,因为它不会被存储。
要测试选项“foo”是否可以使用“:set”进行设置,请使用以下方法
if exists('&foo')
这对于隐藏选项也返回 true。要测试选项“foo”是否真的受支持,请使用以下方法
if exists('+foo')
E355
可以在 Q_op 中找到带有简短说明的选项跳转表。
'allowrevins' 'ari' 'noallowrevins' 'noari' 'allowrevins' 'ari' 布尔值(默认情况下关闭) 全局 允许在插入模式下使用 CTRL-_。默认情况下关闭,以避免用户意外地输入 CTRL-_ 而不是 SHIFT-_ 而进入反向插入模式,并且不知道如何退出。请参阅 'revins'
'ambiwidth' 'ambw' 'ambiwidth' 'ambw' 字符串(默认值为“single”) 全局 告诉 Vim 如何处理具有东亚宽度类 Ambiguous 的字符(例如欧元、注册符号、版权符号、希腊字母、西里尔字母)。
目前有两个可能的值: "single": 使用与 US-ASCII 字符相同的宽度。这是大多数用户所期望的。 "double": 使用 ASCII 字符的两倍宽度。 E834 E835 如果 'listchars''fillchars' 包含双宽度字符,则无法使用“double”值。在调用 setcellwidths() 时,也可能会出现这些错误。
使用 setcellwidths() 指定的字符会覆盖这些值。
有许多 CJK 字体,其用于这些字符的字形宽度完全基于它们在传统/传统 CJK 编码中的字节数。在这些编码中,欧元、注册符号、希腊/西里尔字母用两个字节表示,因此这些字体对它们具有“宽”字形。这也适用于用于在文本文件中创建表格的一些线条绘制字符。因此,当使用 CJK 字体来渲染 GUI Vim 或者 Vim 在使用 CJK 字体的终端(模拟器)中运行(或者 Vim 在使用“-cjkwidth”选项调用的 xterm 中运行),此选项应设置为“double”才能使 Vim 感知的宽度与字体中字形的宽度相匹配。也许在 CJK MS-Windows 下,当系统区域设置为 CJK 区域设置之一时,也必须将其设置为“double”。请参阅 Unicode 标准附件 #11 (https://www.unicode.org/reports/tr11)。
'arabic' 'arab' 'noarabic' 'noarab' 'arabic' 'arab' 布尔值(默认情况下关闭) 窗口本地 可以设置此选项以开始编辑阿拉伯语文本。设置此选项将
设置 'rightleft' 选项,除非 'termbidi' 被设置。
设置 'arabicshape' 选项,除非 'termbidi' 被设置。
'keymap' 选项设置为“arabic”;在插入模式下,CTRL-^ 在英文键映射和阿拉伯语键映射之间切换。
设置 'delcombine' 选项
重置此选项将
重置 'rightleft' 选项。
禁用 'keymap' 的使用(不更改其值)。请注意,'arabicshape''delcombine' 不会被重置(它是全局选项)。另请参阅 arabic.txt
'arabicshape' 'arshape' 'noarabicshape' 'noarshape' 'arabicshape' 'arshape' 布尔值(默认情况下开启) 全局 当开启且 'termbidi' 关闭时,用于显示阿拉伯语所需的视觉字符校正将生效。本质上,成形将被启用;这个术语很宽泛,包含以下内容: a) 基于字符在单词中的位置(初始、中间、最终和独立)来更改/变形字符。 b) 启用字符组合功能 c) 启用某些字符所需的组合 当禁用时,显示将显示每个字符的真实独立形式。阿拉伯语是一种复杂的语言,需要其他设置,有关更多详细信息,请参阅 arabic.txt
'autochdir' 'acd' 'noautochdir' 'noacd' 'autochdir' 'acd' 布尔值(默认情况下关闭) 全局 当开启时,Vim 将在您打开文件、切换缓冲区、删除缓冲区或打开/关闭窗口时更改当前工作目录。它将更改到包含打开或选择的文件的目录。当缓冲区没有名称时,它也没有目录,因此在导航到它时,当前目录不会更改。 注意:当此选项开启时,某些插件可能无法正常工作。
'autoindent' 'ai' 'noautoindent' 'noai' 'autoindent' 'ai' 布尔值 (默认开启) 局部于缓冲区 在开始新行(在插入模式下输入<CR>或使用“o”或“O”命令时)时复制当前行的缩进。 如果您在新的行上除了<BS>CTRL-D之外没有输入任何内容,然后输入<Esc>CTRL-O<CR>,缩进将再次被删除。 将光标移到另一行具有相同的效果,除非'cpoptions'中包含“I”标志。 当自动缩进开启时,格式化(使用“gq”命令或当您在插入模式下到达'textwidth'时)将使用第一行的缩进。 当'smartindent''cindent'开启时,缩进将以不同的方式改变。
'autoread' 'ar' 'noautoread' 'noar' 'autoread' 'ar' 布尔值 (默认开启) 全局或局部于缓冲区 全局-局部 当检测到文件在 Vim 之外被修改,并且它在 Vim 内部没有被修改时,自动重新读取它。 当文件被删除时,这不会发生,因此您拥有它被删除之前的文本。 当它再次出现时,它将被读取。 时间戳 如果此选项具有局部值,请使用此命令切换回使用全局值。
set autoread<
'autowrite' 'aw' 'noautowrite' 'noaw' 'autowrite' 'aw' 布尔值 (默认关闭) 全局 如果文件已被修改,则在每个:next:rewind:last:first:previous:stop:suspend:tag:!:makeCTRL-]CTRL-^命令中写入文件内容;以及当:bufferCTRL-OCTRL-I,'{A-Z0-9},或{A-Z0-9} 命令将您带到另一个文件时。 如果缓冲区变为隐藏,例如当'bufhidden'设置为“hide”并使用:next时,缓冲区不会被写入。 请注意,对于某些命令,'autowrite'选项不被使用,请参阅'autowriteall'了解这一点。 一些缓冲区不会被写入,特别是当'buftype'为“nowrite”, “nofile”, “terminal”或“prompt”时。 使用谨慎:如果您对不想保存的缓冲区进行了临时更改,此选项可能会导致它被保存。 使用“:file {name}”重命名缓冲区可能有助于避免这种情况。
'autowriteall' 'awa' 'noautowriteall' 'noawa' 'autowriteall' 'awa' 布尔值 (默认关闭) 全局 与'autowrite'类似,但也用于命令“:edit”,“:enew”,“:quit”,“:qall”,“:exit”,“:xit”,“:recover”和关闭 Vim 窗口。 设置此选项也意味着 Vim 的行为就像'autowrite'已被设置。
'background' 'bg' 'background' 'bg' 字符串 (默认“dark”) 全局 当设置为“dark”或“light”时,将调整该背景类型的默认颜色组。 TUI 或其他 UI 在启动时设置此项(触发OptionSet)如果它可以检测到背景颜色。
此选项不会改变背景颜色,它告诉 Nvim “继承的”(终端/GUI)背景看起来像什么。 如果您想显式设置背景颜色,请参阅 :hi-normalg:colors_name
当加载颜色方案(“g:colors_name”变量被设置)时,更改'background'将导致颜色方案被重新加载。 如果颜色方案根据'background'的值进行调整,这将起作用。 但是,如果颜色方案本身设置了'background',效果可能会被撤销。 在需要时,首先删除“g:colors_name”变量。
通常,此选项将在 vimrc 文件中设置。 可能会取决于终端名称。 例子
if $TERM ==# "xterm"
  set background=dark
endif
当此选项更改时,突出显示组的默认设置将更改。 要使用其他设置,请在设置'background'选项之后放置“:highlight”命令。
'backspace' 'bs' 'backspace' 'bs' 字符串 (默认“indent,eol,start”) 全局 影响<BS><Del>CTRL-WCTRL-U在插入模式下的工作方式。 这是一个以逗号分隔的项目列表。 每个项目都允许一种通过某物进行退格的方式
值 效果
indent 允许退格到自动缩进 eol 允许退格到换行符(合并行) start 允许退格到插入的开头;CTRL-WCTRL-U在插入的开头停止。 nostop 与 start 相似,但CTRL-WCTRL-U不会在插入的开头停止。
当值为空时,将使用 Vi 兼容的退格,上面提到的任何方式都不可能。
'backup' 'bk' 'nobackup' 'nobk' 'backup' 'bk' 布尔值 (默认关闭) 全局 在覆盖文件之前进行备份。 在文件成功写入后保留它。 如果您不想保留备份文件,但您确实希望在文件正在写入时进行备份,请重置此选项并设置'writebackup'选项(这是默认设置)。 如果您根本不想要备份文件,请重置这两个选项(如果您的文件系统几乎已满,请使用此选项)。 请参阅备份表了解更详细的解释。 当'backupskip'模式匹配时,备份不会被创建。 当'patchmode'设置时,备份可能会被重命名以成为文件的旧版本。
'backupcopy' 'bkc' 'backupcopy' 'bkc' 字符串 (默认“auto”) 全局或局部于缓冲区 全局-局部 在写入文件并创建备份时,此选项告诉如何执行此操作。 这是一个用逗号分隔的单词列表。
主要值是: "yes" 复制文件并覆盖原始文件 "no" 重命名文件并写入一个新文件 "auto" 上述之一,最适合的
可以与上述值组合的额外值是: "breaksymlink" 在写入时始终破坏符号链接 "breakhardlink" 在写入时始终破坏硬链接
复制并覆盖原始文件
复制文件需要额外的时间。 + 当文件具有特殊属性,是(硬/符号)链接或具有资源叉时,所有这些都将被保留。
当文件是链接时,备份将具有链接的名称,而不是真实文件的名称。
重命名文件并写入一个新文件: + 速度快。
有时,不能将文件的所有属性复制到新文件。
当文件是链接时,新文件将不是链接。
“auto”值是中间值:当 Vim 发现重命名文件可以在没有副作用的情况下进行(属性可以传递并且文件不是链接)时,将使用此方法。 当预计出现问题时,将进行复制。
“breaksymlink”和“breakhardlink”值可以与“yes”, “no”和“auto”中的任何一个结合使用。 当包含时,它们强制 Vim 始终通过执行“no”选项所做的操作来破坏符号链接或硬链接,将原始文件重命名为备份,并在其位置写入一个新文件。 例如,这在源代码树中很有用,其中所有文件都是符号链接或硬链接,并且任何更改都应保留在本地源代码树中,而不是传播回原始源代码。 crontab
“no”和“auto”会导致问题的一种情况:一个程序打开一个文件,调用 Vim 编辑该文件,然后测试打开的文件是否已更改(通过文件描述符)将检查备份文件而不是新创建的文件。 “crontab -e”就是一个例子,还有像 inotify 这样的几个文件监视器守护程序。 在这种情况下,您可能希望切换此选项。
当进行复制时,原始文件将被截断,然后用新文本填充。 这意味着原始文件的保护位、所有者和符号链接将保持不变。 但是,备份文件是一个新文件,由编辑文件的用户拥有。 备份组被设置为原始文件的组。 如果失败,则组的保护位将与其他用户的保护位相同。
当文件被重命名时,情况正好相反:备份具有与原始文件相同的属性,而新写入的文件由当前用户拥有。 当文件是(硬/符号)链接时,新文件不会! 这就是“auto”值在文件是链接时不重命名的原因。 新写入文件的拥有者和组将设置为与原始文件相同的拥有者和组,但系统可能会拒绝这样做。 在这种情况下,“auto”值将再次不重命名文件。
'backupdir' 'bdir' 'backupdir' 'bdir' 字符串 (默认 ".,$XDG_STATE_HOME/nvim/backup//") 全局 备份文件的目录列表,用逗号分隔。
备份文件将在列表中第一个可以创建它的目录中创建。 如果所有目录都不存在,Nvim 将尝试创建列表中的最后一个目录。
空意味着不会创建备份文件('patchmode' 无法实现!)。 由于这个原因,写入可能会失败。
目录“.”意味着将备份文件放在与被编辑文件相同的目录中。
以“./”开头的目录(或 MS-Windows 的“.\")意味着将备份文件放在被编辑文件所在的目录的相对位置。 前导“.”将被替换为被编辑文件的路径名。(目录名中的“.”没有特殊含义)。
逗号后的空格将被忽略,其他空格将被视为目录名的一部分。 为了在目录名的开头有一个空格,请在它前面加上一个反斜杠。
要在目录名中包含逗号,请在逗号前加反斜杠。
目录名可以以 '/' 结尾。
对于 Unix 和 Win32,如果目录以两个路径分隔符 '//' 结尾,则交换文件将使用文件的完整路径构建,所有路径分隔符将替换为百分号 '%' 符号。这将确保备份目录中文件名唯一。在 Win32 上,也可以以 '\\' 结尾。但是,如果后面跟着分隔逗号,则必须使用 '//',因为 '\\' 会将逗号包含在文件名中。因此建议使用 '//' 而不是 '\\'。
环境变量将被展开 :set_env
小心 '\' 字符,在空格前输入一个,输入两个以在选项中获得一个(参见 option-backslash),例如
set bdir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
另请参见 'backup''writebackup' 选项。如果您想在 Unix 上隐藏备份文件,请考虑以下值
set backupdir=./.backup,~/.backup,.,/tmp
您必须在每个目录以及您的主目录中创建一个 ".backup" 目录,才能使此功能正常工作。在添加或删除目录时,建议使用 :set+=:set-=。这将避免在未来版本使用其他默认值时出现问题。出于安全原因,此选项不能从 modelinesandbox 中设置。
'backupext' 'bex' E589 'backupext' 'bex' 字符串(默认值“~”)全局字符串,附加到文件名以构成备份文件的名称。默认值很不寻常,因为这避免了意外地用备份文件覆盖现有文件。您可能更喜欢使用 ".bak",但请确保您没有要保留的包含 ".bak" 的文件。只能使用正常的文件名字符;/\*?[|<> 是非法的。
如果您想保留大量备份,可以使用 BufWritePre 自动命令在写入文件之前更改 'backupext' 以包含时间戳。
au BufWritePre * let &bex = '-' .. strftime("%Y%b%d%X") .. '~'
使用 'backupdir' 将备份放置在其他目录中。
'backupskip' 'bsk' 'backupskip' 'bsk' 字符串(默认值“$TMPDIR/*,$TMP/*,$TEMP/*" Unix: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*" Mac: "/private/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*") 全局文件模式列表。当其中一个模式与要写入的文件的名称匹配时,不会创建备份文件。指定的文件名和文件的完整路径名都将被使用。模式的使用方式与 :autocmd 相同,请参见 autocmd-pattern。注意特殊字符,参见 option-backslash。当 $TMPDIR、$TMP 或 $TEMP 未定义时,它们不会用于默认值。"/tmp/*" 仅用于 Unix。
警告: 没有备份文件意味着当 Vim 无法正确写入您的缓冲区,然后出于某种原因,Vim 退出时,您将丢失原始文件和您正在写入的内容。只有在您不介意丢失文件的情况下才禁用备份。
请注意,环境变量不会被展开。如果您想使用 $HOME,则必须显式地展开它,例如
let &backupskip = escape(expand('$HOME'), '\') .. '/tmp/*'
请注意,默认值还确保 "crontab -e" 工作(当通过重命名原始文件创建备份时,crontab 将不会看到新创建的文件)。另请参见 'backupcopy'crontab
'belloff' 'bo' 'belloff' 'bo' 字符串(默认值“all”)全局指定对于哪些事件不会发出响铃。它是一个由逗号分隔的项目列表。对于存在的每个项目,响铃将被静音。这对于指定插入模式下应静音的特定事件非常有用。您还可以使用 'visualbell' 使其闪烁。
存在时的项目含义
all 所有事件。backspace 当按下 <BS><Del> 并删除导致错误时。cursor 无法使用光标键或 <PageUp>/<PageDown> 在 插入模式 中移动。complete 使用 i_CTRL-X_CTRL-Ki_CTRL-X_CTRL-T 时发生错误。copy 无法使用 i_CTRL-Yi_CTRL-E 从插入模式复制字符。ctrlg 插入模式下 <C-G> 后的未知字符。error 其他错误发生(例如尝试加入最后一行)(主要用于 普通模式命令行模式)。esc 在 普通模式 中按下 <Esc>。hangul 被忽略。lang 调用 Lua/Mzscheme/TCL 的响铃模块。mess g< 无法提供输出。showmatch 'showmatch' 函数发生错误。operator 空区域错误 cpo-E。register 插入模式<C-R> 后的未知寄存器。shell 来自 shell 输出的响铃 :!。spell 拼写建议发生错误。term 来自 :terminal 输出的响铃。wildmode 命令行完成 中有更多匹配项可用(取决于 'wildmode' 设置)。
这对于微调插入模式下响铃的时间非常有用。对于普通模式和 Ex 命令,响铃通常表示发生了错误。可以通过添加 "error" 关键字来静音。
'binary' 'bin' 'nobinary' 'nobin' 'binary' 'bin' 布尔值(默认值 off)局部到缓冲区此选项应在编辑二进制文件之前设置。您也可以使用 -b Vim 参数。当此选项打开时,一些选项将被更改(即使它已经打开):'textwidth' 将被设置为 0 'wrapmargin' 将被设置为 0 'modeline' 将被关闭 'expandtab' 将被关闭此外,'fileformat''fileformats' 选项将不会被使用,文件将像 'fileformat' 为 "unix"(单个 <NL> 分隔行)一样读取和写入。'fileencoding''fileencodings' 选项将不会被使用,文件将不会被转换读取。 注意: 当您在 'bin' 选项打开时开始编辑另一个文件时,来自自动命令的设置可能会再次更改设置(例如,'textwidth'),在编辑时会导致麻烦。您可能想在文件加载后再次设置 'bin'。当 'bin' 从打开切换到关闭时,这些选项的先前值将被记住并恢复。每个缓冲区都有自己的一组保存的选项值。要编辑一个设置了 'binary' 的文件,可以使用 ++bin 参数。这样可以避免您必须进行 ":set bin",因为这会对您编辑的所有文件产生影响。写入文件时,仅当原始文件中存在最后一行的 <EOL> 时,才会写入它(通常,如果不存在 <EOL>,Vim 会在最后一行追加 <EOL>;这会使文件变长)。请参见 'endofline' 选项。
'bomb' 'nobomb' 'bomb' 布尔值(默认值 off)局部到缓冲区当写入文件并满足以下条件时,将在文件开头添加 BOM(字节顺序标记)
此选项打开
'binary' 选项关闭
'fileencoding' 为 "utf-8"、"ucs-2"、"ucs-4" 或其中一个大小端变体。一些应用程序使用 BOM 来识别文件的编码。通常用于 MS-Windows 上的 UCS-2 文件。对于其他应用程序,它会导致问题,例如:"cat file1 file2" 会使 file2 的 BOM 出现结果文件的中途。Gcc 不接受 BOM。当 Vim 读取文件并且 'fileencodings' 以 "ucs-bom" 开头时,会检查是否存在 BOM,并相应地设置 'bomb'。除非设置了 'binary',否则它将从第一行中删除,因此您在编辑时不会看到它。如果您不更改选项,BOM 将在写入文件时恢复。
'breakat' 'brk' 'breakat' 'brk' 字符串(默认值“ ^I!@*-+;:,./?”)全局此选项允许您选择当 'linebreak' 打开时,哪些字符可能会导致换行。仅适用于 ASCII 字符。
'breakindent' 'bri' 'nobreakindent' 'nobri' 'breakindent' 'bri' 布尔值(默认值 off)局部到窗口每行换行将继续视觉缩进(与该行开头的空格量相同),从而保留文本的水平块。
'breakindentopt' 'briopt' 'breakindentopt' 'briopt' 字符串(默认值“”)局部到窗口'breakindent' 的设置。它可以包含以下可选项目,并且必须用逗号分隔:min:{n} 应用 'breakindent' 后将保留的最小文本宽度,即使结果文本应该在通常情况下更窄。这将防止几乎缩进到右侧窗口边界的文本在断开时占用大量垂直空间。(默认值:20)shift:{n} 应用 'breakindent' 后,换行行的开头将根据给定的字符数进行偏移。它允许动态法语段落缩进(负数)或强调行延续(正数)。(默认值:0)sbr 在应用额外缩进之前显示 'showbreak' 值。(默认值:关闭)list:{n} 为匹配编号或项目符号列表的线添加额外缩进(使用 'formatlistpat' 设置)。(默认值:0)list:-1 使用 'formatlistpat' 匹配的宽度进行缩进。column:{n} 在列 {n} 处缩进。将覆盖其他子选项。 注意: 可能会为 'showbreak' 设置添加额外缩进。(默认值:关闭)
'bufhidden' 'bh' 'bufhidden' 'bh' 字符串(默认值“”)局部到缓冲区局部非全局 此选项指定当缓冲区不再显示在窗口中时会发生什么:<empty> 遵循全局 'hidden' 选项 hide 隐藏缓冲区(不要卸载它),即使 'hidden' 未设置 unload 卸载缓冲区,即使 'hidden' 设置了;:hide 命令也会卸载缓冲区 delete 从缓冲区列表中删除缓冲区,即使 'hidden' 设置了;:hide 命令也会删除缓冲区,使其行为类似于 :bdelete wipe 从缓冲区列表中擦除缓冲区,即使 'hidden' 设置了;:hide 命令也会擦除缓冲区,使其行为类似于 :bwipeout
小心:当使用 "unload"、"delete" 或 "wipe" 时,缓冲区中的更改将丢失,不会发出警告。此外,这些值可能会破坏在缓冲区之间临时切换的自动命令。此选项与 'buftype''swapfile' 一起使用以指定特殊类型的缓冲区。请参见 特殊缓冲区
'buflisted' 'bl' 'nobuflisted' 'nobl' E85 'buflisted' 'bl' boolean (默认开启) 局部缓冲区 当此选项设置时,缓冲区会显示在缓冲区列表中。如果重置此选项,它将不会用于 ":bnext"、"ls"、Buffers 菜单等。对于仅用于记住文件名或标记的缓冲区,Vim 会重置此选项。Vim 在开始编辑缓冲区时会设置此选项。但使用 ":buffer" 切换缓冲区时不会设置此选项。
'buftype' 'bt' E382 'buftype' 'bt' string (默认 "") 局部缓冲区 local-noglobal 此选项的值指定缓冲区的类型: <empty> 正常缓冲区 acwrite 缓冲区将始终使用 BufWriteCmds 进行写入 help 帮助缓冲区(不要手动设置此选项) nofile 缓冲区与文件无关,不会被写入 nowrite 缓冲区不会被写入 quickfix 错误列表 :cwindow 或位置 :lwindow terminal terminal-emulator 缓冲区 prompt 缓冲区,其中只有最后一行可以编辑,意在供插件使用,参见 prompt-buffer
此选项与 'bufhidden''swapfile' 一起使用来指定特殊类型的缓冲区。参见 special-buffers。另请参见 win_gettype(),它返回窗口的类型。
更改此选项要小心,它可能产生很多副作用!一个这样的副作用是,Vim 不会检查文件的 timestamps,如果文件被其他程序修改,这将不会被注意到。
"quickfix" 缓冲区仅用于错误列表和位置列表。此值由 :cwindow:lwindow 命令设置,你不应该更改它。
"nofile" 和 "nowrite" 缓冲区类似:两者:缓冲区不会写入磁盘,":w" 不起作用(但 ":w filename" 仍然起作用)。两者:缓冲区永远不会被认为是 'modified'。当你退出 Vim 时,例如当更改将丢失时,不会有警告。两者:只有在使用太多内存时才会创建交换文件(当 'swapfile' 被重置时,永远不会创建交换文件)。nofile 仅:缓冲区名称是固定的,它不像文件名那样处理。它不会响应 :cd 命令而被修改。两者:当使用 ":e bufname" 并且已经编辑 "bufname" 时,缓冲区将被清空,并且自动命令会像往常一样为 :edit 触发。 E676
"acwrite" 意味着缓冲区名称与文件无关,像 "nofile" 一样,但它会被写入。因此,与 "nofile" 和 "nowrite" 相反,":w" 仍然起作用,并且修改过的缓冲区不能在没有保存的情况下被放弃。为了写入,必须有匹配的 BufWriteCmdFileWriteCmdFileAppendCmd 自动命令。
'casemap' 'cmp' 'casemap' 'cmp' string (默认 "internal,keepascii") 全局 指定关于更改字母大小写的详细信息。它可能包含以下单词,用逗号隔开: internal 使用内部大小写映射函数,当前区域设置不会更改大小写映射。当 "internal" 被省略时,如果可用,则使用 towupper() 和 towlower() 系统库函数。 keepascii 对于 ASCII 字符 (0x00 到 0x7f),使用 US 大小写映射,当前区域设置无效。这可能只对土耳其语有影响。
'cdhome' 'cdh' 'nocdhome' 'nocdh' 'cdhome' 'cdh' boolean (默认关闭) 全局 当开启时,:cd:tcd:lcd 在没有参数的情况下会将当前工作目录更改为 $HOME 目录,就像在 Unix 中一样。当关闭时,这些命令只会打印当前目录名。在 Unix 上,此选项没有效果。出于安全原因,此选项不能从 modelinesandbox 中设置。
'cdpath' 'cd' E344 E346 'cdpath' 'cd' string (默认等效于 $CDPATH 或 ",,") 全局 这是一个目录列表,当使用 :cd:tcd:lcd 命令时会搜索这些目录,前提是正在搜索的目录具有相对路径,而不是以 "/"、"./ "或 "../" 开头的绝对部分,此时不会使用 'cdpath' 选项。 'cdpath' 选项的值与 'path' 的形式和语义相同。另请参见 file-searching。默认值取自 $CDPATH,并在前面添加 "," 以便首先在当前目录中查找。如果从 $CDPATH 获取的默认值不是你想要的,请将以下命令的修改版本包含在你的 vimrc 文件中以覆盖它
let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g')
出于安全原因,此选项不能从 modelinesandbox 中设置。('cdpath' 的部分可以传递给 shell 以扩展文件名)。
'cedit'
'cedit' string (默认 CTRL-F) 全局 在命令行模式中用于打开命令行窗口的键。只允许使用不可打印的键。该键可以指定为单个字符,但很难输入。首选方法是使用 key-notation(例如 <Up><C-F>)或以脱字符号开头的字母(例如 ^F 代表 CTRL-F)。示例
set cedit=^Y
set cedit=<Esc>
Nvi 也具有此选项,但它只使用第一个字符。参见 cmdwin
'channel'
'channel' number (默认 0) 局部缓冲区 channel 连接到缓冲区,如果未连接任何通道,则为 0。在 :terminal 缓冲区中,这是终端通道。只读。
'charconvert' 'ccv' E202 E214 E513 'charconvert' 'ccv' string (默认 "") 全局 用于字符编码转换的表达式。当要读取或已写入的文件的编码与所需编码不同时,会对其进行评估。当内部 iconv() 函数受支持且能够进行转换时,不会使用 'charconvert'。使用 iconv() 是首选,因为它速度快得多。当读取 stdin -- 时,不会使用 'charconvert',因为没有要转换的文件。你必须先将文本保存到文件。该表达式必须返回零、false 或空字符串以表示成功,非零或 true 以表示失败。参见 encoding-names 以获取可能的编码名称。此外,还会使用 'fileencodings''fileencoding' 中给出的名称。"latin1"、"unicode"、"ucs-2"、"ucs-4" 和 "utf-8" 之间的转换由 Vim 内部完成,不会为此使用 'charconvert'。还用于 Unicode 转换。示例
set charconvert=CharConvert()
fun CharConvert()
  system("recode "
        \ .. v:charconvert_from .. ".." .. v:charconvert_to
        \ .. " <" .. v:fname_in .. " >" .. v:fname_out)
  return v:shell_error
endfun
相关的 Vim 变量是: v:charconvert_from 当前编码的名称 v:charconvert_to 目标编码的名称 v:fname_in 输入文件的名称 v:fname_out 输出文件的名称 请注意,v:fname_in 和 v:fname_out 永远不会相同。
使用无参数的函数调用的优点是速度更快,参见 expr-option-function
如果 'charconvert' 表达式以 s: 或 <SID> 开头,则会用脚本 ID (local-function) 代替。示例
set charconvert=s:MyConvert()
set charconvert=<SID>SomeConvert()
否则,将在设置选项的脚本的上下文中评估该表达式,因此脚本局部项可用。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'cindent' 'cin' 'nocindent' 'nocin' 'cindent' 'cin' boolean (默认关闭) 局部缓冲区 启用自动 C 程序缩进。参见 'cinkeys' 以设置在插入模式下触发重新缩进的键,并参见 'cinoptions' 以设置你喜欢的缩进样式。如果 'indentexpr' 不为空,它会覆盖 'cindent'。如果 'lisp' 未开启,并且 'indentexpr''equalprg' 都为空,则 "=" 操作符使用此算法进行缩进,而不是调用外部程序。参见 C-indenting。当你不喜欢 'cindent' 的工作方式时,请尝试 'smartindent' 选项或 'indentexpr'
'cinkeys' 'cink' 'cinkeys' 'cink' string (默认 "0{,0},0),0],:,0#,!^F,o,O,e") 局部缓冲区 在插入模式下键入时,会导致当前行重新缩进的键列表。仅在 'cindent' 开启且 'indentexpr' 为空时使用。有关此选项的格式,请参见 cinkeys-format。参见 C-indenting
'cinoptions' 'cino' 'cinoptions' 'cino' string (默认 "") 局部缓冲区 'cinoptions' 会影响 'cindent' 在 C 程序中重新缩进行的方式。参见 cinoptions-values 以获取此选项的值,并参见 C-indenting 以获取有关 C 缩进的一般信息。
'cinscopedecls' 'cinsd' 'cinscopedecls' 'cinsd' string (默认 "public,protected,private") 局部缓冲区 由 cino-g 解释为 C++ 范围声明的关键字。对于使用定义了额外范围声明 "signals"、"public slots" 和 "private slots" 的 Qt 框架很有用
set cinscopedecls+=signals,public\ slots,private\ slots
'cinwords' 'cinw' 'cinwords' 'cinw' string (默认 "if,else,while,do,for,switch") 局部缓冲区 当设置了 'smartindent''cindent' 时,这些关键字会在下一行开始额外的缩进。对于 'cindent',这仅在适当的位置(在 {} 内)完成。请注意,'ignorecase' 不会用于 'cinwords'。如果大小写无关紧要,请包含大写和小写形式的关键字:"if,If,IF"。
'clipboard' 'cb' 'clipboard' 'cb' string (默认 "") 全局 此选项是一个逗号分隔的名称列表。这些名称被识别
clipboard-unnamed
unnamed 当包含此选项时,Vim 将在所有通常使用未命名寄存器进行的 yank、删除、更改和 put 操作中使用剪贴板寄存器 "*"。当显式指定寄存器时,它将始终被使用,无论 "unnamed" 是否包含在 'clipboard' 中。剪贴板寄存器始终可以使用 "*" 符号显式访问。另见 clipboard
clipboard-unnamedplus
unnamedplus "unnamed" 标志的变体,它使用剪贴板寄存器 "+" (quoteplus) 而不是寄存器 "*",用于所有通常使用未命名寄存器进行的 yank、删除、更改和 put 操作。当 "unnamed" 也包含在选项中时,yank 和删除操作(但不包括 put)还将把文本复制到寄存器 "*" 中。参见 clipboard
'cmdheight' 'ch' 'cmdheight' 'ch' 数字(默认值 1)全局或局部于标签页 用于命令行的屏幕行数。有助于避免 hit-enter 提示。此选项的值与标签页一起存储,因此每个标签页可以具有不同的值。
'cmdheight' 为零时,除非正在使用,否则没有命令行。命令行将在显示时覆盖屏幕的最后一行。
警告: cmdheight=0 处于实验阶段。预计会有一些意外行为。某些 'shortmess' 标志和类似机制可能无法生效,导致意外的 hit-enter 提示。某些来自 Nvim 本身和插件的信息性消息将不会显示。
'cmdwinheight' 'cwh' 'cmdwinheight' 'cwh' 数字(默认值 7)全局 用于命令行窗口的屏幕行数。 cmdwin
'colorcolumn' 'cc' 'colorcolumn' 'cc' 字符串(默认值 "")局部于窗口 'colorcolumn' 是一个用逗号分隔的屏幕列列表,这些列将使用 ColorColumn hl-ColorColumn 高亮显示。用于对齐文本。将使屏幕重绘变慢。屏幕列可以是绝对数字,也可以是前面带有 "+" 或 "-" 的数字,该数字加到或减去 'textwidth'
set cc=+1          " highlight column after 'textwidth'
set cc=+1,+2,+3  " highlight three columns after 'textwidth'
hi ColorColumn ctermbg=lightgrey guibg=lightgrey
'textwidth' 为零时,带有 "-" 和 "+" 的项将不被使用。最多高亮显示 256 列。
'columns' 'co' E594 'columns' 'co' 数字(默认值 80 或终端宽度)全局 屏幕的列数。通常,这由终端初始化设置,无需手动设置。当 Vim 在 GUI 或可调整大小的窗口中运行时,设置此选项将导致窗口大小更改。如果您只想将该大小用于 GUI,请将命令放在您的 ginit.vim 文件中。当您设置此选项并且 Vim 无法更改显示的物理列数时,显示可能会乱掉。对于 GUI,它始终是可能的,并且 Vim 将列数限制为屏幕上可以容纳的列数。您可以使用此命令获得尽可能宽的窗口
set columns=9999
最小值为 12,最大值为 10000。
'comments' 'com' E524 E525 'comments' 'com' 字符串(默认值 "s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-,fb:•")局部于缓冲区 一个用逗号分隔的字符串列表,这些字符串可以作为注释行的开头。参见 format-comments。参见 option-backslash 关于使用反斜杠插入空格的信息。
'commentstring' 'cms' E537 'commentstring' 'cms' 字符串(默认值 "")局部于缓冲区 注释的模板。值中的 "%s" 将被注释文本替换,并且应尽可能用空格填充。用于 commenting 并在折叠时添加标记,参见 fold-marker
'complete' 'cpt' E535 'complete' 'cpt' 字符串(默认值 ".,w,b,u,t")局部于缓冲区 此选项指定 CTRL-PCTRL-N 使用时关键字补全 ins-completion 的工作方式。它也用于整行补全 i_CTRL-X_CTRL-L。它表示补全的类型以及要扫描的位置。它是一个用逗号分隔的标志列表:. 扫描当前缓冲区 ('wrapscan' 被忽略) w 扫描来自其他窗口的缓冲区 b 扫描缓冲区列表中其他已加载的缓冲区 u 扫描缓冲区列表中未加载的缓冲区 U 扫描不在缓冲区列表中的缓冲区 k 扫描 'dictionary' 选项中给出的文件 kspell 使用当前活动的拼写检查 spell k{dict} 扫描文件 {dict}。可以给出多个 "k" 标志,模式也是有效的。例如
set cpt=k/usr/dict/*,k~/spanish
s 扫描 'thesaurus' 选项中给出的文件 s{tsr} 扫描文件 {tsr}。可以给出多个 "s" 标志,模式也是有效的。 i 扫描当前文件和包含文件 d 扫描当前文件和包含文件以查找定义的名称或宏 i_CTRL-X_CTRL-D ] 标签补全 t 与 "]" 相同 f 扫描缓冲区名称(而不是缓冲区内容)
未加载的缓冲区不会加载,因此它们的 autocmd :autocmd 不会执行,这可能导致某些文件(例如 gzip 文件)出现意外补全。未加载的缓冲区不会为整行补全扫描。
如您所见,CTRL-NCTRL-P 可用于执行任何基于 'iskeyword' 的扩展(例如,字典 i_CTRL-X_CTRL-K,包含的模式 i_CTRL-X_CTRL-I,标签 i_CTRL-X_CTRL-] 和普通扩展)。
'completefunc' 'cfu' 'completefunc' 'cfu' 字符串(默认值 "")局部于缓冲区 此选项指定一个函数,用于在插入模式下使用 CTRL-X CTRL-U 进行补全。 i_CTRL-X_CTRL-U 参见 complete-functions 以了解函数的调用方式以及它应该返回的内容。该值可以是函数名称、一个 lambda 或一个 Funcref。有关更多信息,参见 option-value-function。出于安全原因,此选项不能从 modelinesandbox 中设置。
'completeitemalign' 'cia' 'completeitemalign' 'cia' 字符串(默认值 "abbr,kind,menu")全局 一个用逗号分隔的 complete-items 列表,它控制在插入模式补全期间弹出菜单中项目的对齐方式和显示顺序。支持的值是 abbr、kind 和 menu。这些选项允许自定义在弹出菜单中显示补全项目的方式。 注意: 必须始终以任何顺序包含这三个值。
'completeopt' 'cot' 'completeopt' 'cot' 字符串(默认值 "menu,preview")全局或局部于缓冲区 global-local 一个用于插入模式补全 ins-completion 的选项列表,这些选项用逗号分隔。支持的值是
menu 使用弹出菜单显示可能的补全。只有当有多个匹配项并且有足够的颜色可用时,才会显示菜单。 ins-completion-menu
menuone 即使只有一个匹配项,也使用弹出菜单。当有关于匹配项的附加信息时,这很有用,例如它来自哪个文件。
longest 仅插入匹配项的最长公共文本。如果显示了菜单,您可以使用 CTRL-L 添加更多字符。是否忽略大小写取决于补全的类型。对于缓冲区文本,使用 'ignorecase' 选项。
preview 在预览窗口中显示有关当前选定补全的额外信息。仅与 "menu" 或 "menuone" 结合使用。
popup 在弹出窗口中显示有关当前选定补全的额外信息。仅与 "menu" 或 "menuone" 结合使用。覆盖 "preview"。
noinsert 在用户从菜单中选择匹配项之前,不要插入任何文本。仅与 "menu" 或 "menuone" 结合使用。如果存在 "longest",则无效。
noselect 不要在菜单中选择匹配项,强制用户从菜单中选择一个匹配项。仅与 "menu" 或 "menuone" 结合使用。
fuzzy 为补全候选启用 fuzzy-matching。这允许更灵活、更直观的匹配,其中可以跳过字符,即使没有键入精确的序列,也可以找到匹配项。这只会影响如何从备选列表中减少补全候选,而不会影响如何收集候选(使用不同的补全类型)。
'completeslash' 'csl' 'completeslash' 'csl' 字符串(默认值 "")局部于缓冲区 仅适用于 MS-Windows 当此选项设置时,它将覆盖 'shellslash' 用于补全
当此选项设置为 "slash" 时,在插入模式下使用正斜杠进行路径补全。这在编辑 HTML 标签或使用 'noshellslash' 的 Makefile 时很有用,适用于 MS-Windows。
当此选项设置为 "backslash" 时,使用反斜杠。这在使用 'shellslash' 设置的批处理文件中编辑时很有用,适用于 MS-Windows。
当此选项为空时,使用与 'shellslash' 相同的字符。对于插入模式补全,使用缓冲区局部值。对于命令行补全,使用全局值。
'concealcursor' 'cocu' 'concealcursor' 'cocu' 字符串(默认值 "")局部于窗口 设置光标行中的文本也可以被隐藏的模式。当当前模式列出时,隐藏的行为与其他行相同。n 普通模式 v 可视模式 i 插入模式 c 命令行编辑,用于 'incsearch'
'v' 应用于可视区域中的所有行,而不仅仅是光标。一个有用的值是 "nc"。这在帮助文件中使用。只要您四处移动,文本就会隐藏,但当开始插入文本或选择可视区域时,隐藏的文本就会显示,这样您就可以看到自己在做什么。请记住,光标位置并不总是显示的位置。例如,当垂直移动时,它可能会更改列。
'conceallevel' 'cole' 'conceallevel' 'cole' 数字(默认值 0)局部于窗口 确定带有 "conceal" 语法属性 :syn-conceal 的文本如何显示
值 效果
0 正常显示文本 1 每个隐藏文本块用一个字符替换。如果语法项没有定义自定义替换字符(参见 :syn-cchar),则使用在 'listchars' 中定义的字符。它以“Conceal”突出显示组突出显示。 2 隐藏文本完全隐藏,除非它定义了自定义替换字符(参见 :syn-cchar)。 3 隐藏文本完全隐藏。
注意:在光标行,隐藏文本不会被隐藏,以便您可以编辑和复制文本。这可以通过 'concealcursor' 选项更改。
'confirm' 'cf' 'noconfirm' 'nocf' 'confirm' 'cf' 布尔值(默认关闭) 全局 当 'confirm' 打开时,某些操作通常由于对缓冲区的未保存更改而失败,例如:“:q”和“:e”,而是弹出一个对话框询问您是否要保存当前文件。您仍然可以使用“!”无条件地 放弃 缓冲区。如果 'confirm' 关闭,您仍然可以使用 :confirm 命令为单个命令激活确认(这在映射中最有用)。另请参阅 confirm() 函数和 'guioptions' 中的“v”标志。
'copyindent' 'ci' 'nocopyindent' 'noci' 'copyindent' 'ci' 布尔值(默认关闭) 局部于缓冲区 在自动缩进新行时复制现有行缩进的结构。通常,新的缩进由一系列制表符后跟所需空格重建(除非启用 'expandtab',在这种情况下,只使用空格)。启用此选项使新行复制用于缩进现有行的任何字符。 'expandtab' 对这些字符没有影响,制表符仍然是制表符。如果新的缩进大于现有行上的缩进,则剩余的空格将以正常方式填充。参见 'preserveindent'
'cpoptions' 'cpo' cpo 'cpoptions' 'cpo' 字符串(默认“aABceFs_”) 全局 单个字符标志的序列。当存在字符时,这表示 Vi 兼容的行为。这用于一些不与 Vi 兼容是大多数或有时优先的情况。 'cpoptions' 代表“兼容选项”。为了可读性,可以添加逗号。为了避免与将来添加的标志出现问题,请使用“:set”的“+=”和“-=”功能 add-option-flags
包含行为
cpo-a
a 包含时,带有文件名参数的“:read”命令将为当前窗口设置备用文件名。 cpo-A
A 包含时,带有文件名参数的“:write”命令将为当前窗口设置备用文件名。 cpo-b
b “\|”在“:map”命令中被识别为映射命令的结尾。‘\’包含在映射中,‘|’之后的文本被解释为下一个命令。使用 CTRL-V 而不是反斜杠将‘|’包含在映射中。适用于所有映射、缩写、菜单和 autocmd 命令。另请参阅 map_barcpo-B
B 反斜杠在映射、缩写、用户命令和菜单命令的“to”部分中没有特殊含义。删除此标志才能像 CTRL-V 一样使用反斜杠。例如,命令“:map X \<Esc>”将 X 映射到:‘B’ 包含:“\^["(^[ 是一个真正的 <Esc>) ‘B’ 不包含:“<Esc>” (5 个字符) cpo-c
c 搜索从光标位置处任何匹配的结尾处继续,但不会超过下一行的开头。当不存在时,搜索从光标位置继续一个字符。使用 ‘c’,“abababababab”在重复 “/abab” 时只得到三个匹配,不使用 ‘c’ 则有五个匹配。 cpo-C
C 不要连接以反斜杠开头的源代码行。参见 line-continuationcpo-d
d 在 'tags' 选项中使用“./”并不意味着使用相对于当前文件的标签文件,而是使用当前目录中的标签文件。 cpo-D
D 在 Normal 模式命令(带有字符参数,如 rft)之后,不能使用 CTRL-K 输入二合字。 cpo-e
e 使用“:@r”执行寄存器时,始终在最后一行添加 <CR>,即使寄存器不是按行方式。如果此标志不存在,寄存器不是按行方式,最后一行不以 <CR> 结尾,那么最后一行将被放在命令行上,并且可以在按下 <CR> 之前进行编辑。 cpo-E
E 在空区域使用“y”、“d”、“c”、“g~”、“gu”或“gU”时是错误的。运算符仅在至少要操作一个字符时才有效。例如:这使得“y0”在第一列失败。 cpo-f
f 包含时,带有文件名参数的“:read”命令将为当前缓冲区设置文件名,如果当前缓冲区尚未具有文件名。 cpo-F
F 包含时,带有文件名参数的“:write”命令将为当前缓冲区设置文件名,如果当前缓冲区尚未具有文件名。另请参阅 cpo-Pcpo-i
i 包含时,中断文件读取将将其保留为已修改。 cpo-I
I 在为 'autoindent' 插入缩进后立即将光标向上或向下移动时,不要删除缩进。 cpo-J
J 一个 句子 必须在“.”、“!”或“?”之后有两个空格。<Tab>不被识别为空格。 cpo-K
K 当键码完成一半时,不要等待键码完成。这会破坏映射 <F1><F1>,因为第二个 <F1> 的一部分已被读取。它允许通过键入 <F1><Esc> 来取消映射。 cpo-l
l 搜索模式中 [] 范围内的反斜杠被逐字地解读,只有“\]”、“\^”、“\-”和“\\”是特殊的。参见 /[] ‘l’ 包含:“/[ \t]”找到 <Space>、‘\’ 和 ‘t’ ‘l’ 不包含:“/[ \t]”找到 <Space><Tab> cpo-L
L 当 'list' 选项设置时,'wrapmargin''textwidth''softtabstop' 和虚拟替换模式(参见 gR)将 <Tab> 计为两个字符,而不是 <Tab> 的正常行为。 cpo-m
m 包含时,showmatch 始终会等待半秒。当不包含时,showmatch 会等待半秒或直到键入一个字符。 'showmatch' cpo-M
M 当排除时,“%”匹配将考虑反斜杠。因此,在“( \( )”和 "\( ( \)”中,外括号匹配。当包含时,“%”忽略反斜杠,这与 Vi 兼容。 cpo-n
n 包含时,用于 'number''relativenumber' 的列也将用于换行文本。 cpo-o
o 搜索命令的行偏移不会记住用于下一次搜索。 cpo-O
O 即使文件在编辑时不存在,也不要抱怨文件被覆盖。这是针对意外由他人创建的文件的一种保护措施。Vi 不会抱怨此事。 cpo-P
P 包含时,将追加到文件的“:write”命令将为当前缓冲区设置文件名,如果当前缓冲区尚未具有文件名,并且还包含 ‘F’ 标志 cpo-Fcpo-q
q 连接多行时,将光标留在连接两行时的位置。 cpo-r
r 重新执行(“.”命令)使用“/”重复搜索命令,而不是实际使用的搜索字符串。 cpo-R
R 从过滤的行中删除标记。如果没有此标志,标记将像使用 :keepmarks 一样保留。 cpo-s
s 首次进入缓冲区时设置缓冲区选项。这与 Vim 3.0 版中的设置相同。并且这是默认设置。如果不存在,则在创建缓冲区时设置选项。 cpo-S
S 每次进入缓冲区时始终设置缓冲区选项(除了 'readonly''fileformat''filetype''syntax')。这是(最)与 Vi 兼容的设置。选项被设置为当前缓冲区中的值。当您更改选项并转到另一个缓冲区时,该值会被复制。有效地使缓冲区选项对所有缓冲区全局化。
's' 'S' 复制缓冲区选项 否 否 当缓冲区创建时 是 否 当缓冲区首次进入时(默认) X 是 每次进入缓冲区时(与 vi 兼容) cpo-t
t 标签命令的搜索模式将记住用于“n”命令。否则 Vim 只将模式放入搜索模式的历史记录中,但不会更改最后使用的搜索模式。 cpo-u
u 撤销与 Vi 兼容。参见 undo-two-wayscpo-v
v 在插入模式下,退格字符仍然可见。如果没有此标志,字符会立即从屏幕上擦除。使用此标志,屏幕上新键入的文本会覆盖退格字符。 cpo-W
W 不要覆盖只读文件。当省略时,“:w!”将覆盖只读文件(如果可能)。 cpo-x
x 命令行上的 <Esc> 将执行命令行。Vim 中的默认行为是放弃命令行,因为 <Esc> 通常会中止命令。 c_<Esc> cpo-X
X 当使用带 "R" 的计数时,替换的文本只会被删除一次。同样,当用 "." 和计数重复 "R" 时。 cpo-y
y yank 命令可以用 "." 重做。请三思而后行,因为这可能会破坏一些插件,因为大多数人期望 "." 只能重复更改。 cpo-Z
Z 当 'readonly' 选项设置时使用 "w!" 时,不要重置 'readonly'cpo-!
! 重做过滤器命令时,使用最后使用的外部命令,无论它是什么。否则,将使用最后使用的 -filter- 命令。 cpo-$
$ 当对一行进行更改时,不要重新显示该行,而是在更改的文本末尾添加一个 "$"。当您输入新文本时,更改的文本将被覆盖。如果您输入任何将光标从插入点移动的命令,则该行将重新显示。 cpo-%
% Vi 兼容匹配适用于 "%" 命令。不识别 "#if"、"#endif" 等。不识别 "/*" 和 "*/"。单引号和双引号内的括号也会被计数,导致包含括号的字符串会干扰匹配。例如,在像 "if (strcmp("foo(", s))" 这样的行中,第一个括号与最后一个括号不匹配。当此标志未包含时,单引号和双引号内的括号将被特殊对待。当匹配引号之外的括号时,引号内的所有内容都被忽略。当匹配引号内的括号时,它将找到匹配的括号(如果有)。这对于 C 程序非常有效。此标志也用于其他功能,例如 C 缩进。 cpo-+
+ 当包含时,":write file" 命令将重置缓冲区的 'modified' 标志,即使缓冲区本身可能仍然与其文件不同。 cpo->
> 当附加到寄存器时,在附加文本之前添加一个换行符。 cpo-;
; 当使用 ,; 重复最后一个 t 搜索,并且光标位于搜索字符的正前方时,光标将不会移动。当不包含时,光标将跳过它并跳到下一个出现的位置。 cpo-_
_ 当对单词使用 cw 时,不要在移动中包含单词后面的空格。
'cursorbind' 'crb' 'nocursorbind' 'nocrb' 'cursorbind' 'crb' boolean (默认关闭) 局部到窗口 当此选项设置时,当前窗口中的光标移动时,其他与光标绑定的窗口(也设置了此选项的窗口)会将其光标移动到相应行和列。此选项对于查看文件的两个版本之间的差异很有用(参见 'diff');在 diff 模式下,插入和删除的行(虽然不是行内的字符)会被考虑在内。
'cursorcolumn' 'cuc' 'nocursorcolumn' 'nocuc' 'cursorcolumn' 'cuc' boolean (默认关闭) 局部到窗口 使用 CursorColumn hl-CursorColumn 突出显示光标的屏幕列。有助于对齐文本。将使屏幕重绘变慢。如果您只希望在当前窗口中突出显示,则可以使用这些 autocommand
au WinLeave * set nocursorline nocursorcolumn
au WinEnter * set cursorline cursorcolumn
'cursorline' 'cul' 'nocursorline' 'nocul' 'cursorline' 'cul' boolean (默认关闭) 局部到窗口 使用 CursorLine hl-CursorLine 突出显示光标的文本行。有助于轻松发现光标。将使屏幕重绘变慢。当 Visual 模式处于活动状态时,不会使用突出显示,以便更容易看到选定的文本。
'cursorlineopt' 'culopt' 'cursorlineopt' 'culopt' string (默认 "both") 局部到窗口 用于显示 'cursorline' 的方式的设置的逗号分隔列表。有效值: "line" 使用 CursorLine hl-CursorLine 突出显示光标的文本行。 "screenline" 使用 CursorLine hl-CursorLine 仅突出显示光标的屏幕行。 "number" 使用 CursorLineNr hl-CursorLineNr 突出显示光标的行号。
特殊值: "both" 是 "line,number" 的别名。
"line" 和 "screenline" 不能一起使用。
'debug'
'debug' string (默认 "") 全局 这些值可以用于: msg 通常会被省略的错误消息将被给出。 throw 通常会被省略的错误消息将被给出,并且还会抛出异常并设置 v:errmsg。 beep 当本来只应该发出蜂鸣声时,将给出消息。这些值可以组合起来,用逗号分隔。 "msg" 和 "throw" 有助于调试 'foldexpr''formatexpr''indentexpr'
'define' 'def' 'define' 'def' string (默认 "") 全局或局部到缓冲区 global-local 用于查找宏定义的模式。它是一个搜索模式,就像 "/" 命令一样。此选项用于 "[i" 和 "[d" 等命令 include-search'isident' 选项用于识别匹配后的定义名称
{match with 'define'}{non-ID chars}{defined name}{non-ID char}
有关插入反斜杠以包含空格或反斜杠的信息,请参阅 option-backslash。对于 C++,此值将很有用,可以包含 const 类型声明
^\(#\s*define\|[a-z]*\s*const\s*[a-z]*\)
您也可以在名称之前使用 "\ze" 并继续模式以检查其后的内容。例如,对于 Javascript,如果一个函数用 func_name = function(args) 定义
^\s*\ze\i\+\s*=\s*function(
如果函数用 func_name : function() {... 定义
^\s*\ze\i\+\s*[:]\s*(*function\s*(
当使用 ":set" 命令时,您需要将反斜杠加倍!为了避免这种情况,请使用带单引号字符串的 :let
let &l:define = '^\s*\ze\k\+\s*=\s*function('
'delcombine' 'deco' 'nodelcombine' 'nodeco' 'delcombine' 'deco' boolean (默认关闭) 全局 如果编辑 Unicode 并且设置了此选项,则退格键和 Normal 模式 "x" 会独立删除每个组合字符。当它关闭(默认值)时,字符及其组合字符将被删除。 注意:'delcombine' 设置为 "xx" 时,"xx" 的工作方式可能与 "2x" 不同!
这对阿拉伯语、希伯来语和许多其他语言很有用,在这些语言中,一个人可能在基本字符之上有组合字符,并且只想删除组合字符。
'dictionary' 'dict' 'dictionary' 'dict' string (默认 "") 全局或局部到缓冲区 global-local 文件名的列表,用逗号分隔,用于查找关键字完成命令 i_CTRL-X_CTRL-K 的单词。每个文件应该包含一个单词列表。这可以是一行一个单词,也可以是一行多个单词,用非关键字字符(首选空格)分隔。最大行长为 510 字节。
当此选项为空或存在一个条目 "spell" 时,并且启用了拼写检查,当前活动 'spelllang' 的单词列表中的单词将被使用。参见 spell
要在文件名中包含逗号,请在它前面加上反斜杠。逗号后面的空格会被忽略,否则空格会被包含在文件名中。有关使用反斜杠的信息,请参阅 option-backslash。这与 Dictionary 变量类型无关。在哪里可以找到单词列表?
BSD/macOS 包含 "/usr/share/dict/words" 文件。
尝试 "apt install spell" 在 apt 管理的系统(Debian/Ubuntu)上获取 "/usr/share/dict/words" 文件。当从列表中添加或删除目录时,建议使用 :set+=:set-=。这样可以避免在未来的版本使用其他默认值时出现问题。出于安全原因,此选项中不能使用反引号。
'diff' 'nodiff' 'diff' boolean (默认关闭) 局部到窗口 将当前窗口加入到显示文件之间差异的窗口组中。参见 diff-mode
'diffexpr' 'dex' 'diffexpr' 'dex' string (默认 "") 全局 此表达式被计算以从文件的两个版本中获取 diff 文件(ed 风格或统一风格)。参见 diff-diffexpr。出于安全原因,此选项不能从 modelinesandbox 中设置。
'diffopt' 'dip' 'diffopt' 'dip' string (默认 "internal,filler,closeoff") 全局 diff 模式的选项设置。它可以包含以下项目。所有项目都是可选的。项目必须用逗号分隔。
filler 显示填充行,以使文本与在同一位置插入行的窗口同步。当窗口并排放置并且设置了 'scrollbind' 时,这很有用。
context:{n} 在更改和包含未更改行的折叠之间使用 {n} 行的上下文。当省略时,将使用六行的上下文。当使用零时,上下文实际上是 1,因为折叠需要两行之间的空格,即使对于删除的行也是如此。将其设置为非常大的值 (999999) 以完全禁用折叠。参见 fold-diff
iblank 忽略所有行都是空白的更改。如果 'diffexpr' 为空,则向 "diff" 命令添加 "-B" 标志。检查 "diff" 命令的文档以了解其确切功能。 注意: diff 窗口将不同步,因为不会考虑空白行之间的差异。
icase 忽略文本中的大小写更改。 "a" 和 "A" 被视为相同。如果 'diffexpr' 为空,则向 "diff" 命令添加 "-i" 标志。
iwhite 忽略空格数量的更改。如果 'diffexpr' 为空,则向 "diff" 命令添加 "-b" 标志。检查 "diff" 命令的文档以了解其确切功能。它应该忽略添加尾随空格,但不应该忽略前导空格。
iwhiteall 忽略所有空格更改。如果 'diffexpr' 为空,则向 "diff" 命令添加 "-w" 标志。检查 "diff" 命令的文档以了解其确切功能。
iwhiteeol 忽略行尾的空格更改。如果 'diffexpr' 为空,则向 "diff" 命令添加 "-Z" 标志。检查 "diff" 命令的文档以了解其确切功能。
horizontal 以水平拆分启动 diff 模式(除非显式指定其他方式)。
vertical 以垂直拆分启动 diff 模式(除非显式指定其他方式)。
closeoff 当关闭一个设置了 'diff' 的窗口,并且同一标签页中只剩下一个设置了 'diff' 的窗口时,在该窗口中执行 :diffoff。这将撤消 :diffsplit 命令。
hiddenoff 当缓冲区变为隐藏时,不要使用 diff 模式。
foldcolumn:{n} 在启动 diff 模式时,将 'foldcolumn' 选项设置为 {n}。如果没有设置,则使用 2。
followwrap 遵循 'wrap' 选项并保持不变。
internal 使用内部 diff 库。当 'diffexpr' 设置时,此选项将被忽略。 E960 当在写入缓冲区时内存不足时,此选项将被忽略,不适用于涉及该缓冲区的 diff 操作。设置 'verbose' 选项以查看此情况何时发生。
indent-heuristic 对内部 diff 库使用缩进启发式算法。
linematch:{n} 对每个生成的 hunk 启用第二阶段 diff,以对齐行。当 hunk 中的总行数超过 {n} 时,将不会执行第二阶段 diff,因为非常大的 hunk 会导致明显的延迟。推荐设置是 "linematch:60",因为这将启用对包含最多 30 行的每个 hunk 的 2 个缓冲区 diff 进行对齐,或者对包含最多 20 行的每个 hunk 的 3 个缓冲区 diff 进行对齐。
algorithm:{text} 对内部 diff 引擎使用指定的 diff 算法。目前支持的算法包括: myers 默认算法 minimal 额外花费时间以生成尽可能小的 diff patience patience diff 算法 histogram histogram diff 算法
示例
set diffopt=internal,filler,context:4
set diffopt=
set diffopt=internal,filler,foldcolumn:3
set diffopt-=internal  " do NOT use the internal diff parser
'digraph' 'dg' 'nodigraph' 'nodg' 'digraph' 'dg' 布尔值(默认关闭) 全局 在插入模式下使用 {char1} <BS> {char2} 启用 digraph 输入。请参见 digraphs
'directory' 'dir' 'directory' 'dir' 字符串(默认 "$XDG_STATE_HOME/nvim/swap//") 全局 用于交换文件的目录名称列表,用逗号分隔。
可能的项目
交换文件将在第一个可能的目录中创建。如果在任何目录中都不可创建,但选项中列出的最后一个目录不存在,则会创建该文件。
空表示不会使用交换文件(恢复不可行!),并且不会给出 E303 错误。
目录 "。" 表示将交换文件放在与编辑文件相同的目录中。在 Unix 上,文件名前面会加上一个点,因此它不会显示在目录列表中。在 MS-Windows 上,如果可能,会设置 "隐藏" 属性并在前面加上一个点。
以 "./" 开头的目录(或 MS-Windows 的 ".\")表示将交换文件放在相对于编辑文件的位置。前导 "。" 将被编辑文件的路径名替换。
对于 Unix 和 Win32,如果目录以两个路径分隔符 "//" 结尾,交换文件名将使用文件完整路径构建,其中所有路径分隔符都将被百分号 '%' 替换(包括 Win32 上驱动器字母后面的冒号)。这将确保在保留目录中文件名唯一性。在 Win32 上,也可以以 "\\" 结尾。但是,当后面跟着分隔逗号时,必须使用 "//",因为 "\\" 将在文件名中包含逗号。因此建议使用 '//',而不是 '\\'。
逗号后的空格将被忽略,其他空格将被视为目录名的一部分。 为了在目录名的开头有一个空格,请在它前面加上一个反斜杠。
要在目录名中包含逗号,请在逗号前加反斜杠。
目录名可以以 ':' 或 '/' 结尾。
环境变量将被展开 :set_env
小心 '\' 字符,在空格前输入一个,输入两个以在选项中获得一个(参见 option-backslash),例如
set dir=c:\\tmp,\ dir\\,with\\,commas,\\\ dir\ with\ spaces
两次编辑同一个文件会导致警告。不建议在 is 上使用 "/tmp":如果系统崩溃,你将丢失交换文件。并且计算机上的其他人可能能够看到这些文件。在向列表中添加或删除目录时,请使用 :set+=:set-=,这将避免 Nvim 默认值发生变化时出现问题。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'display' 'dy' 'display' 'dy' 字符串(默认 "lastline") 全局 更改文本的显示方式。这是一个用逗号分隔的标志列表: lastline 包含时,将尽可能多地显示窗口中的最后一行。 "@@@" 将放在最后一行屏幕行的最后几列中,以指示该行其余部分未显示。 truncate 类似 "lastline",但 "@@@" 显示在最后一行屏幕行的第一列中。覆盖 "lastline"。 uhex 显示不可打印字符十六进制为 <xx>,而不是使用 ^C 和 ~C。 msgsep 已过时的标志。允许但不会产生任何影响。 msgsep
当不包含 "lastline" 和 "truncate" 时,不适合的最后一行将被 "@" 行替换。
可以通过在 'fillchars' 中设置 "lastline" 项目来更改 "@" 字符。该字符将使用 hl-NonText 突出显示。
'eadirection' 'ead' 'eadirection' 'ead' 字符串(默认 "both") 全局 指示 'equalalways' 选项何时应用: ver 垂直,窗口的宽度不受影响 hor 水平,窗口的高度不受影响 both 窗口的宽度和高度都受影响
'emoji' 'emo' 'noemoji' 'noemo' 'emoji' 'emo' 布尔值(默认开启) 全局 当开启时,所有 Unicode 表情符号字符都被认为是全角字符。这排除了 "文本表情符号" 字符,这些字符通常以单宽度显示。但是,如果 "文本表情符号" 后面跟着 U+FE0F 变体选择器,则它们会被视为全角表情符号。
不幸的是,对此没有很好的规范,并且它是在反复试验的基础上确定的。使用 setcellwidths() 函数更改行为。
'encoding' 'enc' 'encoding' 'enc' 字符串(默认 "utf-8") 全局 内部和 RPC 通信使用的字符串编码。始终为 UTF-8。
请参见 'fileencoding' 以控制文件内容编码。
'endoffile' 'eof' 'noendoffile' 'noeof' 'endoffile' 'eof' 布尔值(默认关闭) 局部到缓冲区 指示在读取文件时,在文件末尾发现了 CTRL-Z 字符。通常仅在 'fileformat' 为 "dos" 时才会发生。当写入文件且此选项关闭,并且 'binary' 选项打开,或 'fixeol' 选项关闭时,不会在文件末尾写入 CTRL-Z。请参见 eol-and-eof 以获取示例设置。
'endofline' 'eol' 'noendofline' 'noeol' 'endofline' 'eol' 布尔值(默认开启) 局部到缓冲区 当写入文件且此选项关闭,并且 'binary' 选项打开,或 'fixeol' 选项关闭时,不会为文件中的最后一行写入 <EOL>。此选项会在开始编辑新文件时自动设置或重置,具体取决于文件是否为最后一行具有 <EOL>。通常,你无需设置或重置此选项。当 'binary' 关闭,并且 'fixeol' 打开时,在写入文件时不会使用该值。当 'binary' 打开或 'fixeol' 关闭时,它将用于记住文件最后一行中是否存在 <EOL>,以便在你写入文件时,可以保留原始文件的情况。但如果你愿意,你可以更改它。请参见 eol-and-eof 以获取示例设置。
'equalalways' 'ea' 'noequalalways' 'noea' 'equalalways' 'ea' 布尔值(默认开启) 全局 当开启时,在分割或关闭窗口后,所有窗口都会自动调整为相同大小。当选项打开时,也会发生这种情况。当关闭时,分割窗口将减小当前窗口的大小,并将其他窗口保持不变。当关闭窗口时,额外的行将被分配给它旁边的窗口(取决于 'splitbelow''splitright')。当混合垂直和水平分割窗口时,将计算一个最小大小,并且如果存在空间,一些窗口可能会更大。 'eadirection' 选项指示大小受影响的方向。通过分别设置 'winfixheight''winfixwidth' 可以避免更改窗口的高度和宽度。如果在创建新窗口时指定了窗口大小,则目前不会调整大小(这很复杂,但可能会在将来实现)。
'equalprg' 'ep' 'equalprg' 'ep' 字符串(默认 "") 全局或局部到缓冲区 global-local 用于 "=" 命令的外部程序。当此选项为空时,将使用内部格式化函数;即 'lisp''cindent''indentexpr'。环境变量将扩展 :set_env。有关包含空格和反斜杠的信息,请参见 option-backslash。出于安全原因,此选项不能从 modelinesandbox 中设置。
'errorbells' 'eb' 'noerrorbells' 'noeb' 'errorbells' 'eb' 布尔值(默认关闭) 全局 为错误消息响铃(蜂鸣或屏幕闪烁)。这仅对错误消息有影响,对于没有消息的许多错误(例如,在普通模式下按下 <Esc>),响铃始终会被使用。请参见 'visualbell' 以使响铃表现为屏幕闪烁或什么也不做。请参见 'belloff' 以微调何时响铃。
'errorfile' 'ef' 'errorfile' 'ef' 字符串(默认 "errors.err") 全局 快速修复模式的错误文件名(请参见 :cf)。当使用 "-q" 命令行参数时,'errorfile' 将设置为以下参数。请参见 -q。不会用于 ":make" 命令。请参见 'makeef'。环境变量将扩展 :set_env。有关包含空格和反斜杠的信息,请参见 option-backslash。出于安全原因,此选项不能从 modelinesandbox 中设置。
'errorformat' 'efm' 'errorformat' 'efm' 字符串 (默认值很长) 全局或缓冲区局部 全局-局部 错误文件中的行的格式扫描描述 (参见 errorformat).
'eventignore' 'ei' 'eventignore' 'ei' 字符串 (默认值 "") 全局 要忽略的自动命令事件名称列表。当设置为 "all" 或 "all" 是其中一项时,将忽略所有自动命令事件,不会执行自动命令。否则,这是一个用逗号分隔的事件名称列表。示例
set ei=WinEnter,WinLeave
'expandtab' 'et' 'noexpandtab' 'noet' 'expandtab' 'et' 布尔值 (默认关闭) 缓冲区局部 在插入模式下:使用适当数量的空格来插入 <Tab>。空格用于缩进,使用“>”和“<”命令,以及当 'autoindent' 处于开启状态时。当 'expandtab' 处于开启状态时,要插入实际的制表符,请使用 CTRL-V<Tab>。另请参见 :retabins-expandtab.
'exrc' 'ex' 'noexrc' 'noex' 'exrc' 'ex' 布尔值 (默认关闭) 全局 如果文件在 信任 列表中,则自动执行当前目录中的 .nvim.lua、.nvimrc 和 .exrc 文件。使用 :trust 管理受信任的文件。另请参见 vim.secure.read().
比较 'exrc'editorconfig
'exrc' 可以执行任何代码;editorconfig 仅指定设置。
'exrc' 是 Nvim 特定的;editorconfig 在其他编辑器中有效。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'fileencoding' 'fenc' E213 'fileencoding' 'fenc' 字符串 (默认值 "") 缓冲区局部 当前缓冲区的文件内容编码。转换使用 iconv() 或由 'charconvert' 指定进行。
'fileencoding' 不是 UTF-8 时,写入文件时将进行转换。有关读取,请参见下文。当 'fileencoding' 为空时,文件将使用 UTF-8 编码保存 (读取或写入文件时不进行转换)。
警告: 转换为非 Unicode 编码会导致信息丢失!
参见 encoding-names,了解可能的取值。此外,可以指定转换器可以处理的取值,参见 mbyte-conversion.
读取文件时,'fileencoding' 将从 'fileencodings' 设置。要以特定编码读取文件,设置 'fileencoding' 无效,请使用 ++enc 参数。一个例外:当 'fileencodings' 为空时,将使用 'fileencoding' 的值。对于新文件,将使用 'fileencoding' 的全局值。
在前面添加 "8bit-" 和 "2byte-" 在此处没有意义,它们会被忽略。当设置了该选项时,该值将转换为小写。因此,您也可以使用大写值进行设置。'_' 字符将替换为 '-'. 如果从 encoding-names 中的列表中识别出一个名称,它将被标准名称替换。例如,"ISO8859-2" 将变为 "iso-8859-2".
当设置了此选项后,在开始编辑文件后,'modified' 选项将被设置,因为文件在写入时将有所不同。
请记住,从模式行更改 'fenc' 发生在读取文本之后,因此它适用于写入文件时。如果您确实在模式行中设置了 'fenc',您可能需要设置 'nomodified' 以避免无法 ":q".
'modifiable' 关闭时,此选项不可更改。
'fileencodings' 'fencs' 'fileencodings' 'fencs' 字符串 (默认值 "ucs-bom,utf-8,default,latin1") 全局 这是一个字符编码列表,在开始编辑现有文件时会考虑这些编码。读取文件时,Vim 会尝试使用第一个提到的字符编码。如果检测到错误,则尝试列表中的下一个编码。找到有效的编码后,将 'fileencoding' 设置为它。如果全部失败,'fileencoding' 将设置为一个空字符串,这意味着使用 UTF-8。 警告: 转换会导致信息丢失!您可以使用 ++bad 参数指定对无法转换的字符的处理方式。对于空文件或仅包含 ASCII 字符的文件,大多数编码都可以正常工作,将使用 'fileencodings' 的第一个条目 (除了 "ucs-bom",它要求存在 BOM)。如果您偏好其他编码,请使用 BufReadPost 自动命令事件来测试是否要使用您偏好的编码。示例
au BufReadPost * if search('\S', 'w') == 0 |
        \ set fenc=iso-2022-jp | endif
如果文件不包含非空白字符,则将 'fileencoding' 设置为 "iso-2022-jp"。当使用 ++enc 参数时,不会使用 'fileencodings' 的值。请注意,'fileencodings' 不会用于新文件,而是使用 'fileencoding' 的全局值。您可以使用以下命令进行设置
setglobal fenc=iso-8859-2
这意味着,非现有文件可能获得与空文件不同的编码。特殊值 "ucs-bom" 可用于检查文件开头是否有 Unicode BOM (字节顺序标记)。为了使此方法正常工作,它前面不应有 "utf-8" 或其他 Unicode 编码。8 位编码的条目 (例如,"latin1") 应放在最后,因为 Vim 无法检测到错误,因此始终接受该编码。特殊值 "default" 可用于环境中的编码。当您的环境使用非 latin1 编码时,这很有用,例如俄语。如果文件包含非法的 UTF-8 字节序列,则不会将其识别为 "utf-8"。您可以使用 8g8 命令查找非法的字节序列。错误的值:什么地方错了:latin1,utf-8 "latin1" 将始终被使用 utf-8,ucs-bom,latin1 BOM 不会在 utf-8 文件中被识别 cp1250,latin1 "cp1250" 将始终被使用 如果 'fileencodings' 为空,则不会修改 'fileencoding'。参见 'fileencoding',了解可能的取值。设置此选项在下次读取文件之前不会生效。
'fileformat' 'ff' 'fileformat' 'ff' 字符串 (默认值 Windows: "dos", Unix: "unix") 缓冲区局部 这表示当前缓冲区的 <EOL>,用于从文件读取/写入缓冲区,或将缓冲区写入文件:dos <CR><NL> unix <NL> mac <CR> 当使用 "dos" 时,文件末尾的 CTRL-Z 将被忽略。参见 file-formatsfile-read。有关文件的字符编码,请参见 'fileencoding'。当 'binary' 处于开启状态时,将忽略 'fileformat' 的值,文件 I/O 就像它被设置为 "unix" 一样。当开始编辑文件并且 'fileformats' 不为空并且 'binary' 关闭时,此选项会自动设置。当设置了此选项后,在开始编辑文件后,'modified' 选项将被设置,因为文件在写入时将有所不同。当 'modifiable' 关闭时,此选项不可更改。
'fileformats' 'ffs' 'fileformats' 'ffs' 字符串 (默认值 Windows: "dos,unix", Unix: "unix,dos") 全局 这表示开始编辑新缓冲区和将文件读入现有缓冲区时将尝试的换行符 (<EOL>) 格式
当为空时,始终使用由 'fileformat' 定义的格式。它不会自动设置。
当设置为一个名称时,每当打开新缓冲区时,都会使用该格式。'fileformat' 将相应地为此缓冲区设置。当将文件读入现有缓冲区时,将使用 'fileformats' 名称,无论该缓冲区的 'fileformat' 设置为什么。
当存在多个名称时,用逗号分隔,在读取文件时会进行自动 <EOL> 检测。当开始编辑文件时,将对 <EOL> 进行检查:1. 如果所有行都以 <CR><NL> 结尾,并且 'fileformats' 包含 "dos",则 'fileformat' 将设置为 "dos"。2. 如果找到了 <NL>,并且 'fileformats' 包含 "unix",则 'fileformat' 将设置为 "unix"。请注意,当找到 <NL> 且前面没有 <CR> 时,"unix" 比 "dos" 优先。3. 如果尚未设置 'fileformat',并且找到了 <CR>,并且 'fileformats' 包含 "mac",则 'fileformat' 将设置为 "mac"。这意味着 "mac" 仅在以下情况下才会被选择:"unix" 不存在或文件中没有找到 <NL>,并且 "dos" 不存在或文件中没有找到 <CR><NL>。除了:如果选择了 "unix",但在第一个 <NL> 之前存在 <CR>,并且在头几行中 <CR> 的数量似乎比 <NL> 的数量多,则使用 "mac"。4. 如果仍然没有设置 'fileformat',则使用 'fileformats' 中的第一个名称。当将文件读入现有缓冲区时,会执行相同的操作,但这就像 'fileformat' 已为此文件适当地设置一样,该选项不会更改。当 'binary' 处于开启状态时,不会使用 'fileformats' 的值。
当 Vim 启动时,如果缓冲区为空,则使用第一个项目。您可以通过在您的 .vimrc 中设置 'fileformat' 来覆盖此设置。
对于具有 Dos 式 <EOL> (<CR><NL>) 的系统,当读取 ":source" 的文件和 vimrc 文件时,可能会进行自动 <EOL> 检测
'fileformats' 为空时,没有自动检测。将使用 Dos 格式。
'fileformats' 设置为一个或多个名称时,会进行自动检测。这是基于文件中第一个 <NL>:如果前面有 <CR>,则使用 Dos 格式,否则使用 Unix 格式。另请参见 file-formats.
'fileignorecase' 'fic' 'nofileignorecase' 'nofic' 'fileignorecase' 'fic' 布尔值 (默认情况下,对于文件名中通常忽略大小写的系统而言,该选项处于开启状态) 全局 当设置该选项时,使用文件名和目录时会忽略大小写。参见 'wildignorecase',了解仅在执行补全时忽略大小写的方式。
'filetype' 'ft' 'filetype' 'ft' 字符串 (默认 "") 局部于缓冲区 local-noglobal 当此选项设置时,会触发 FileType 自动命令事件。所有与该选项值匹配的自动命令都会被执行。因此,'filetype' 的值将代替文件名使用。否则,此选项并不总是反映当前的文件类型。此选项通常在检测到文件类型时设置。要启用此功能,请使用 ":filetype on" 命令。 :filetype 将此选项设置为不同的值在 modeline 中最有用,用于无法自动识别文件类型的文件。例如,对于 IDL 文件
/* vim: set filetype=idl : */
FileType filetypes 当值中出现点时,它将分隔两个文件类型名称,因此不应将其用于文件类型。例如
/* vim: set filetype=c.doxygen : */
这将首先使用 "c" 文件类型,然后使用 "doxygen" 文件类型。这适用于文件类型插件和语法文件。可以出现多个点。此选项不会复制到另一个缓冲区,与 'cpoptions' 中的 's' 或 'S' 标志无关。只能使用字母数字字符、'-' 和 '_'。
'fillchars' 'fcs' 'fillchars' 'fcs' 字符串 (默认 "") 全局或局部于窗口 global-local 用于填充窗口中状态行、垂直分隔符和特殊行的字符。它是一个用逗号分隔的项目列表。每个项目都有一个名称、一个冒号和该项目的值: E1511
项目 默认 用于
stl ' ' 当前窗口的状态行 stlnc ' ' 非当前窗口的状态行 wbr ' ' 窗口栏 horiz '─' 或 '-' 水平分隔符 :split horizup '┴' 或 '-' 向上指向的水平分隔符 horizdown '┬' 或 '-' 向下指向的水平分隔符 vert '│' 或 '|' 垂直分隔符 :vsplit vertleft '┤' 或 '|' 左侧指向的垂直分隔符 vertright '├' 或 '|' 右侧指向的垂直分隔符 verthoriz '┼' 或 '+' 重叠的垂直和水平分隔符 fold '·' 或 '-' 填充 'foldtext' foldopen '-' 标记折叠的开始 foldclose '+' 显示一个关闭的折叠 foldsep '│' 或 '|' 打开的折叠中间标记 diff '-' 'diff' 选项删除的行 msgsep ' ' 消息分隔符 'display' eob '~' 缓冲区末尾的空行 lastline '@' 'display' 包含 lastline/truncate
任何省略的项目都将回退到默认值。
请注意,"horiz"、"horizup"、"horizdown"、"vertleft"、"vertright" 和 "verthoriz" 仅在 'laststatus' 为 3 时使用,因为否则只使用垂直窗口分隔符。
如果 'ambiwidth' 为 "double",则 "horiz"、"horizup"、"horizdown"、"vert"、"vertleft"、"vertright"、"verthoriz"、"foldsep" 和 "fold" 默认使用单字节替代方案。
示例
set fillchars=stl:\ ,stlnc:\ ,vert:│,fold:·,diff:-
对于 "stl"、"stlnc"、"foldopen"、"foldclose" 和 "foldsep" 项目,支持单字节和多字节字符。但不支持双宽字符。 E1512
这些项目使用的突出显示
项目 突出显示组
stl StatusLine hl-StatusLine stlnc StatusLineNC hl-StatusLineNC wbr WinBar hl-WinBarhl-WinBarNC horiz WinSeparator hl-WinSeparator horizup WinSeparator hl-WinSeparator horizdown WinSeparator hl-WinSeparator vert WinSeparator hl-WinSeparator vertleft WinSeparator hl-WinSeparator vertright WinSeparator hl-WinSeparator verthoriz WinSeparator hl-WinSeparator fold Folded hl-Folded diff DiffDelete hl-DiffDelete eob EndOfBuffer hl-EndOfBuffer lastline NonText hl-NonText
'findfunc' 'ffu' E1514 'findfunc' 'ffu' 字符串 (默认 "") 全局或局部于缓冲区 global-local 用于获取 :find 命令的文件名(s) 的函数。当此选项为空时,将使用内部 文件搜索 机制。
该值可以是函数的名称、lambdaFuncref。有关更多信息,请参阅 option-value-function
该函数使用两个参数调用。第一个参数是 String,它是 :find 命令参数。第二个参数是 Boolean,当调用该函数以获取 :find 命令的命令行完成匹配列表时,它被设置为 v:true。该函数应返回一个字符串列表。
该函数只在每次 :find 命令调用时调用一次。该函数可以处理 'path' 中指定的所有目录。
如果找到匹配项,该函数应返回一个包含一个或多个文件名的 List。如果未找到匹配项,该函数应返回一个空列表。
如果在函数调用期间遇到任何错误,将使用空列表作为返回值。
在执行 'findfunc' textlock 时,不允许更改文本或跳转到另一个窗口。
出于安全原因,此选项不能从 modelinesandbox 中设置。
示例
" Use glob()
func FindFuncGlob(cmdarg, cmdcomplete)
    let pat = a:cmdcomplete ? $'{a:cmdarg}*' : a:cmdarg
    return glob(pat, v:false, v:true)
endfunc
set findfunc=FindFuncGlob
" Use the 'git ls-files' output
func FindGitFiles(cmdarg, cmdcomplete)
    let fnames = systemlist('git ls-files')
    return fnames->filter('v:val =~? a:cmdarg')
endfunc
set findfunc=FindGitFiles
'fixendofline' 'fixeol' 'nofixendofline' 'nofixeol' 'fixendofline' 'fixeol' 布尔值 (默认开启) 局部于缓冲区 当写入文件并且此选项开启时,如果文件末尾缺少 <EOL>,则会将其恢复。如果您想保留原始文件中的情况,请关闭此选项。当 'binary' 选项设置时,此选项的值无关紧要。请参阅 'endofline' 选项。请参阅 eol-and-eof 以获取示例设置。
'foldclose' 'fcl' 'foldclose' 'fcl' 字符串 (默认 "") 全局 当设置为 "all" 时,当光标不在折叠内且其级别高于 'foldlevel' 时,折叠会关闭。如果您希望折叠在移出折叠时自动关闭,这很有用。
'foldcolumn' 'fdc' 'foldcolumn' 'fdc' 字符串 (默认 "0") 局部于窗口 何时以及如何绘制折叠列。有效值为: "auto": 调整大小以显示最小数量的折叠。 "auto:[1-9]": 调整大小以容纳多个折叠,直到选定的级别 "0": 禁用折叠列 "[1-9]": 显示固定数量的列 请参阅 folding
'foldenable' 'fen' 'nofoldenable' 'nofen' 'foldenable' 'fen' 布尔值 (默认开启) 局部于窗口 当关闭时,所有折叠都处于打开状态。此选项可用于快速在显示所有未折叠的文本和使用折叠查看文本(包括手动打开或关闭的折叠)之间切换。可以使用 zi 命令进行切换。当 'foldenable' 关闭时,'foldcolumn' 将保持空白。此选项由创建新折叠或关闭折叠的命令设置。请参阅 folding
'foldexpr' 'fde' 'foldexpr' 'fde' 字符串 (默认 "0") 局部于窗口 当 'foldmethod' 为 "expr" 时使用的表达式。它会针对每行进行评估,以获取其折叠级别。上下文设置为设置 'foldexpr' 的脚本,可以访问脚本级局部项目。请参阅 fold-expr 以获取用法。
如果从 modeline 设置,表达式将在 沙盒 中评估,请参阅 sandbox-option。当 'diff' 选项打开或 'modelineexpr' 选项关闭时,此选项不能从 modeline 中设置。
在评估 'foldexpr' textlock 时,不允许更改文本或跳转到另一个窗口。
'foldignore' 'fdi' 'foldignore' 'fdi' 字符串 (默认 "#") 局部于窗口 仅当 'foldmethod' 为 "indent" 时使用。以 'foldignore' 中的字符开头的行将从周围的行获取其折叠级别。在检查此字符之前,会跳过空格。默认的 "#" 对 C 程序非常有效。请参阅 fold-indent
'foldlevel' 'fdl' 'foldlevel' 'fdl' 数字 (默认 0) 局部于窗口 设置折叠级别:级别更高的折叠将关闭。将此选项设置为零将关闭所有折叠。更高的数字将关闭更少的折叠。此选项由 zmzMzR 等命令设置。请参阅 fold-foldlevel
'foldlevelstart' 'fdls' 'foldlevelstart' 'fdls' 数字 (默认 -1) 全局 在窗口中开始编辑另一个缓冲区时设置 'foldlevel'。这在您希望始终使用所有折叠关闭(值为零)、部分折叠关闭(值为一)或无折叠关闭(值为 99)开始编辑时很有用。这在读取任何 modeline 之前完成,因此 modeline 中的设置将覆盖此选项。开始为 diff-mode 编辑文件也会忽略此选项并关闭所有折叠。这也将在 BufReadPre 自动命令之前完成,以允许自动命令覆盖特定文件的 'foldlevel' 值。当该值为负数时,它不会被使用。
'foldmarker' 'fmr' E536 'foldmarker' 'fmr' 字符串 (默认 "{{{,}}}") 局部于窗口 当 'foldmethod' 为 "marker" 时使用的开始和结束标记。必须有一个逗号,它用于分隔开始和结束标记。标记是一个字面字符串(正则表达式太慢)。请参阅 fold-marker
'foldmethod' 'fdm' 'foldmethod' 'fdm' 字符串 (默认 "manual") 窗口本地 当前窗口使用的折叠方式。可能的取值: fold-manual 手动 折叠由手动创建。 fold-indent 缩进 缩进相同的行构成一个折叠。 fold-expr 表达式 'foldexpr' 用于指定行的折叠级别。 fold-marker 标记 使用标记来指定折叠。 fold-syntax 语法 语法高亮元素指定折叠。 fold-diff diff 折叠未修改的文本。
'foldminlines' 'fml' 'foldminlines' 'fml' 数字 (默认 1) 窗口本地 设置可以显示为关闭状态的折叠的最小行数。对于手动关闭的折叠也适用。默认值为 1,这意味着一个折叠只有在占用两行或更多行时才能关闭。设置为 0 可以关闭仅占用一行屏幕的折叠。请注意,这只会影响显示。使用 "zc" 关闭一个折叠后,如果该折叠小于 'foldminlines',因此显示为打开状态,那么后续的 "zc" 可能会关闭其包含的折叠。
'foldnestmax' 'fdn' 'foldnestmax' 'fdn' 数字 (默认 20) 窗口本地 设置 "indent" 和 "syntax" 方法的折叠最大嵌套层数。这可以避免创建过多的折叠。使用超过 20 不会起作用,因为内部限制为 20。
'foldopen' 'fdo' 'foldopen' 'fdo' 字符串 (默认 "block,hor,mark,percent,quickfix,search,tag,undo") 全局 指定在命令将光标移动到关闭的折叠内时,将打开哪些类型的命令的折叠。这是一个由逗号分隔的项目列表。 注意: 当命令是映射的一部分时,此选项不会使用。将 zv 命令添加到映射中以获得相同的效果。(原理:映射可能希望自己控制打开折叠)
项目命令
all 任何 block (, {, [[, [{, 等等 hor 水平移动:"l", "w", "fx", 等等 insert 插入模式下的任何命令 jump 远距离跳转:"G", "gg", 等等 mark 跳转到标记:"m", CTRL-O, 等等 percent "%" quickfix ":cn", ":crew", ":make", 等等 search 搜索模式:"/", "n", "*", "gd", 等等 (不适用于 ":" 命令中的搜索模式) 也适用于 [s]s。 tag 跳转到标签:"ta", CTRL-T, 等等 undo 撤销或重做:"u" 和 CTRL-R 当一个移动命令用于运算符(例如 "dl" 或 "y%") 时,此选项不会使用。这意味着运算符将包含整个关闭的折叠。请注意,垂直移动不在此列表中,因为这会使移动到关闭的折叠变得非常困难。在插入模式下,当插入文本时,包含光标的折叠将始终处于打开状态。要关闭折叠,可以使用 'foldlevel' 选项与 zx 命令一起重新应用,或者将 'foldclose' 选项设置为 "all"。
'foldtext' 'fdt' 'foldtext' 'fdt' 字符串 (默认 "foldtext()") 窗口本地 用于指定关闭的折叠显示的文本的表达式。上下文设置为 'foldexpr' 设置的脚本,可以访问脚本局部项。有关用法,请参阅 fold-foldtext
如果从模式行设置,表达式将在 沙盒 中求值,请参阅 sandbox-option。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
在求值 'foldtext' 时,不允许更改文本或跳转到另一个窗口 textlock
当设置为空字符串时,foldtext 将被禁用,并且该行将以正常方式显示,带有高亮显示,并且不进行换行。
'formatexpr' 'fex' 'formatexpr' 'fex' 字符串 (默认 "") 缓冲区本地 求值以格式化 gq 运算符或自动格式化(见 'formatoptions') 的一系列行的表达式。当此选项为空时,将使用 'formatprg'
v:lnum 变量保存要格式化的第一行。 v:count 变量保存要格式化的行数。 v:char 变量保存如果表达式是由于自动格式化而被求值,则要插入的字符。这可能是空的。不要立即插入它!
示例
set formatexpr=mylang#Format()
这将调用 'runtimepath' 中的 autoload/mylang.vim 文件中的 mylang#Format() 函数。 autoload
使用无参数的函数调用的优点是速度更快,参见 expr-option-function
当设置了 'textwidth' 并且添加了超过此限制的文本时,也会求值表达式。这发生在与使用内部格式化相同的条件下。确保光标相对于文本保持在相同的位置! mode() 函数在此情况下将返回 "i" 或 "R"。
当表达式求值为非零值时,Vim 将回退到使用内部格式化机制。
如果表达式以 s: 或 <SID> 开头,则将其替换为脚本 ID (local-function)。示例
set formatexpr=s:MyFormatExpr()
set formatexpr=<SID>SomeFormatExpr()
否则,表达式将在设置选项的脚本的上下文中求值,因此可以使用脚本局部项。
如果从模式行设置,表达式将在 沙盒 中求值,请参阅 sandbox-option。这会阻止选项正常工作,因为不允许更改缓冲区文本。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。 注意:'compatible' 设置时,此选项将设置为 ""。
'formatlistpat' 'flp' 'formatlistpat' 'flp' 字符串 (默认 "^\s*\d\+[\]:.)}\t ]\s*") 缓冲区本地 用于识别列表头的模式。这用于 'formatoptions' 中的 "n" 标志。该模式必须与将作为下一行缩进的文本完全匹配。可以使用 /\ze 来标记匹配的结束,同时仍然检查更多字符。模式后面必须有一个字符,当它匹配整行时,它将被视为没有匹配。默认情况下,它识别一个数字,后面跟一个可选的标点符号和空格。
'formatoptions' 'fo' 'formatoptions' 'fo' 字符串 (默认 "tcqj") 缓冲区本地 这是一系列字母,描述了如何进行自动格式化。有关可能的取值,请参阅 fo-table,有关如何格式化文本,请参阅 gq。可以插入逗号以提高可读性。为了避免将来添加的标志出现问题,请使用 ":set" 的 "+=" 和 "-=" 特性 add-option-flags
'formatprg' 'fp' 'formatprg' 'fp' 字符串 (默认 "") 全局或缓冲区本地 global-local 将用于格式化用 gq 运算符选择的行的外部程序的名称。该程序必须从 stdin 获取输入,并在 stdout 上生成输出。Unix 程序 "fmt" 就是这样的程序。如果 'formatexpr' 选项不为空,它将被使用。否则,如果 'formatprg' 选项为空字符串,将使用内部格式化函数 C-indenting。环境变量将被扩展 :set_env。有关包含空格和反斜杠的信息,请参阅 option-backslash。出于安全原因,此选项不能从 模式行沙盒 中设置。
'fsync' 'fs' 'nofsync' 'nofs' 'fsync' 'fs' 布尔值 (默认 on) 全局 如果开启,则在保存文件 (:write, writefile(), …) 后,将调用 OS 函数 fsync() 交换文件, 撤销持久化shada 文件。这将文件刷新到磁盘,确保安全写入。在某些系统上速度很慢:写入缓冲区、退出 Nvim 以及其他操作有时可能需要几秒钟。
CursorHold 事件触发时,文件总是被刷新('fsync' 被忽略)
:preserve 被调用时
系统信号电池电量不足时
Nvim 非正常退出时
出于安全原因,此选项不能从 modelinesandbox 中设置。
'gdefault' 'gd' 'nogdefault' 'nogd' 'gdefault' 'gd' 布尔值 (默认 off) 全局 如果开启,":substitute" 标志 'g' 默认开启。这意味着将替换一行中的所有匹配项,而不是一个匹配项。当 'g' 标志提供给 ":substitute" 命令时,这将切换所有或一个匹配项的替换。请参阅 complex-change
命令 'gdefault' on 'gdefault' off
:s/// subst. all subst. one :s///g subst. one subst. all :s///gg subst. all subst. one
注意: 设置此选项可能会破坏依赖于 'g' 标志默认行为的插件。这也会使 'g' 标志的效果与 :s_g 中记录的相反。
'grepformat' 'gfm' 'grepformat' 'gfm' 字符串 (默认 "%f:%l:%m,%f:%l%m,%f %l%m") 全局 要识别 ":grep" 命令输出的格式。这是一个类似 scanf 的字符串,使用与 'errorformat' 选项相同的格式:请参阅 errorformat
如果 ripgrep ('grepprg') 可用,则此选项默认为 %f:%l:%c:%m
'grepprg' 'gp' 'grepprg' 'gp' 字符串 (默认值见下文) 全局或缓冲区局部 全局-局部 用于 :grep 命令的程序。此选项可能包含 '%' 和 '#' 字符,这些字符在命令行中使用时会像扩展一样被扩展。占位符 "$*" 允许指定参数将包含的位置。环境变量会被扩展 :set_env。有关包含空格和反斜杠的信息,请参见 option-backslash。特殊值:当 'grepprg' 设置为“internal”时,:grep 命令的工作方式类似于 :vimgrep:lgrep 类似于 :lvimgrep:grepadd 类似于 :vimgrepadd:lgrepadd 类似于 :lvimgrepadd。另请参见 :make_makeprg 部分,因为其中大部分注释同样适用于 'grepprg'。出于安全原因,此选项不能从 modelinesandbox 中设置。此选项的默认值为
rg --vimgrep -uu 如果 ripgrep 可用 (:checkhealth,)
grep -HIn $* /dev/null 在 Unix 上,
findstr /n $* nul 在 Windows 上。Ripgrep 可以执行额外的过滤,例如使用 .gitignore 规则并跳过隐藏文件。默认情况下,此功能处于禁用状态(请参见 -u 选项),以更接近标准 grep 的行为。您可以使用 -i/--ignore-case 和 -S/--smart-case 选项使 ripgrep 匹配 Vim 的大小写处理方式。可以利用 OptionSet autocmd 将其设置为自动匹配。
'guicursor' 'gcr' E545 E546 E548 E549 'guicursor' 'gcr' 字符串 (默认值 "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20") 全局 为每种模式配置光标样式。在 GUI 和许多终端中都有效。请参见 tui-cursor-shape
要禁用光标样式设置,请重置该选项
set guicursor=
要启用模式形状、“光标”高亮显示和闪烁
set guicursor=n-v-c:block,i-ci-ve:ver25,r-cr:hor20,o:hor50
  \,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor
  \,sm:block-blinkwait175-blinkoff150-blinkon175
该选项是一个逗号分隔的零件列表。每个零件都包含一个模式列表和一个参数列表:mode-list:argument-list,mode-list:argument-list,.. 模式列表是一个以破折号分隔的这些模式列表:n 正常模式 v 可视模式 ve 可视模式,具有 'selection' “exclusive”(如果未指定,则与 'v' 相同) o 操作待定模式 i 插入模式 r 替换模式 c 命令行正常模式(追加)模式 ci 命令行插入模式 cr 命令行替换模式 sm 在插入模式下显示匹配 a 所有模式 参数列表是一个以破折号分隔的这些参数列表:hor{N} 水平条,{N} 为字符高度的百分比 ver{N} 垂直条,{N} 为字符宽度的百分比 block 块光标,填充整个字符
上述三个中应该只出现一个。
默认情况下,每种模式都为“block”。blinkwait{N} cursor-blinking
blinkon{N} blinkoff{N} 光标的闪烁次数:blinkwait 是光标开始闪烁之前的延迟,blinkon 是光标显示的时间,blinkoff 是光标不显示的时间。时间以毫秒为单位。当其中一个数字为零时,则不会闪烁。例如
set guicursor=n:blinkon0
默认情况下,每种模式都为“blinkon0”。{group-name} 决定光标颜色和字体的突出显示组。在 TUI
inverse/reverse 和无组名将被解释为“主机终端默认光标颜色”,这通常意味着“反转的背景色和前景色”。
ctermfgguifg 会被忽略。{group-name}/{group-name} 两个突出显示组名,第一个用于没有语言映射时,第二个用于语言映射时。 language-mapping
零件示例:n-c-v:block-nCursor 在正常模式、命令行模式和可视模式下,使用来自“nCursor”突出显示组的块光标 n-v-c-sm:block,i-ci-ve:ver25-Cursor,r-cr-o:hor20 在正常模式等模式下,使用主机终端定义的默认颜色的块光标。在插入模式等模式下,使用来自“光标”突出显示组的垂直条光标。在替换模式等模式下,使用默认颜色的下划线光标。i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150 在插入模式和命令行插入模式下,使用来自“iCursor”突出显示组的 30% 垂直条光标。闪烁速度更快一些。
'a' 模式有所不同。它会为所有模式设置给定的参数列表。它不会将任何内容重置为默认值。这可用于对所有模式进行通用设置。例如,要关闭闪烁,请使用:”a:blinkon0“
光标突出显示示例
highlight Cursor gui=reverse guifg=NONE guibg=NONE
highlight Cursor gui=NONE guifg=bg guibg=fg
'guifont' 'gfn' E235 E596 'guifont' 'gfn' 字符串 (默认值 "") 全局 这是将用于 Vim GUI 版本的字体列表。在最简单的形式中,该值只是一个字体名称。如果找不到字体,您将收到错误消息。要尝试其他字体名称,可以指定一个列表,用逗号分隔字体名称。将使用第一个有效的字体。
逗号后的空格会被忽略。要在字体名称中包含逗号,请在前面加上反斜杠。设置选项需要在空格和反斜杠之前再加一个反斜杠。另请参见 option-backslash。例如
set guifont=Screen15,\ 7x13,font\\,with\\,commas
将使 Vim 首先尝试使用字体“Screen15”,如果失败,它将尝试使用“7x13”,然后使用“font,with,commas”来代替。
如果无法加载任何字体,Vim 将保留当前设置。如果给定空字体列表,Vim 将尝试使用其他资源设置(对于 X,它将使用 Vim.font 资源),最后它将尝试一些内置的默认字体,这些字体应该始终存在(对于 X,为“7x13”)。给定的字体名称应该是“普通”字体。Vim 将尝试查找相关的粗体和斜体字体。
对于 Win32 和 Mac OS
set guifont=*
将弹出字体选择器,您可以在其中选择所需的字体。
字体名称取决于所使用的 GUI。
对于 Mac OSX,您可以使用类似以下内容
set guifont=Monaco:h10
E236
请注意,字体必须是等宽字体(所有字符的宽度相同)。
要在 X11 上预览字体,您可能可以使用“xfontsel”程序。“xlsfonts”程序将列出所有可用字体。
对于 Win32 GUI E244 E245
在字体名称中采用这些选项:hXX - 高度为 XX(磅,可以是浮点数) wXX - 宽度为 XX(磅,可以是浮点数) b - 粗体 i - 斜体 u - 下划线 s - 删除线 cXX - 字符集 XX。有效的字符集为:ANSI、ARABIC、BALTIC、CHINESEBIG5、DEFAULT、EASTEUROPE、GB2312、GREEK、HANGEUL、HEBREW、JOHAB、MAC、OEM、RUSSIAN、SHIFTJIS、SYMBOL、THAI、TURKISH、VIETNAMESE ANSI 和 BALTIC。通常您应该使用“cDEFAULT”。
使用 ':' 分隔选项。
可以使用 '_' 代替空格,因此您无需使用反斜杠转义空格。
示例
set guifont=courier_new:h12:w5:b:cRUSSIAN
set guifont=Andale_Mono:h7.5:w4.5
'guifontwide' 'gfw' E231 E533 E534 'guifontwide' 'gfw' 字符串 (默认值 "") 全局 用逗号分隔的字体列表,用于双倍宽字符。将使用第一个可以加载的字体。 注意: 这些字体的尺寸必须是 'guifont' 中指定的字体的两倍宽,高度相同。
'guifont' 具有有效的字体,并且 'guifontwide' 为空时,Vim 将尝试将 'guifontwide' 设置为匹配的双倍宽字体。
'helpfile' 'hf' 'helpfile' 'hf' 字符串 (默认值 (MS-Windows) "$VIMRUNTIME\doc\help.txt" (其他) "$VIMRUNTIME/doc/help.txt") 全局 主要帮助文件的文件名。所有分发的帮助文件都应该放在同一个目录中。此外,还会使用 'runtimepath' 中的所有“doc”目录。环境变量会被扩展 :set_env。例如:“$VIMRUNTIME/doc/help.txt”。如果未设置 $VIMRUNTIME,则也会尝试 $VIM。另请参见 $VIMRUNTIMEoption-backslash,了解有关包含空格和反斜杠的信息。出于安全原因,此选项不能从 modelinesandbox 中设置。
'helpheight' 'hh' 'helpheight' 'hh' 数字 (默认值 20) 全局 使用“:help”命令打开帮助窗口时的最小初始高度。帮助窗口的初始高度为当前窗口高度的一半,或者(当 'ea' 选项处于启用状态时)与其他窗口相同。当高度小于 'helpheight' 时,高度将设置为 'helpheight'。设置为零以禁用。
'helplang' 'hlg' 'helplang' 'hlg' 字符串 (默认值为消息语言或为空) 全局 用逗号分隔的语言列表。Vim 将使用第一个可以找到所需帮助的语言。英语帮助将始终用作最后的手段。您可以添加“en”以优先使用英语而不是其他语言,但这只会查找该语言中存在的标签,而不会查找英语帮助中的标签。示例
set helplang=de,it
这将首先搜索德语,然后搜索意大利语,最后搜索英语帮助文件。当在非英语帮助文件中使用 CTRL-] 和“:help!”时,Vim 将尝试在使用此选项之前先在当前语言中查找标签。请参见 help-translated
'hidden' 'hid' 'nohidden' 'nohid' 'hidden' 'hid' 布尔值 (默认值为 on) 全局 当关闭时,缓冲区会在被 放弃 时被卸载(包括撤消信息的丢失)。当打开时,缓冲区在被 放弃 时会变为隐藏状态。当然,在另一个窗口中显示的缓冲区不会变为隐藏状态。
在缓冲区列表中移动的命令有时会隐藏缓冲区,即使 'hidden' 选项处于关闭状态,但当以下三个条件都为真时,也会发生这种情况
缓冲区已修改
'autowrite' 已关闭或无法写入
使用了 '!' 标志,另请参见 windows
要隐藏特定缓冲区,请使用 'bufhidden' 选项。 'hidden' 为单个命令设置了 ":hide {command}" :hide
'history' 'hi' 'history' 'hi' number (默认值为 10000) global 记住 ":" 命令的历史记录以及之前搜索模式的历史记录。此选项决定可以在这些历史记录中存储多少个条目(参见 cmdline-editing)。最大值为 10000。
'hlsearch' 'hls' 'nohlsearch' 'nohls' 'hlsearch' 'hls' boolean (默认值为 on) global 当存在之前的搜索模式时,突出显示所有匹配项。 hl-Search 突出显示组决定所有不在光标下的匹配项的突出显示,而 hl-CurSearch 突出显示组(如果定义)决定光标下匹配项的突出显示。如果未定义 hl-CurSearch,则 hl-Search 用于两者。请注意,只有匹配的文本被突出显示,任何偏移量都不会应用。另请参见: 'incsearch':match。当您厌倦了查看突出显示的匹配项时,可以使用 :nohlsearch 关闭它。这不会更改选项值,只要您使用搜索命令,突出显示就会恢复。 'redrawtime' 指定用于查找匹配项的最大时间。当搜索模式可以匹配行尾时,Vim 将尝试突出显示所有匹配的文本。但是,这取决于搜索的开始位置。这将是窗口中的第一行或闭合折叠下方的第一行。先前未绘制的行中的匹配项可能无法在新绘制的行中继续。您可以在 'shada' shada-h 中使用 'h' 标志指定是否在启动时恢复突出显示状态。
'icon' 'noicon' 'icon' boolean (默认值为 off,当标题可以恢复时为 on) global 当打开时,窗口的图标文本将设置为 'iconstring' 的值(如果它不为空),或设置为当前正在编辑的文件的名称。只使用名称的最后部分。被 'iconstring' 选项覆盖。仅在终端支持设置窗口图标时有效。
'iconstring'
'iconstring' string (默认值为 "") global 当此选项不为空时,它将用于窗口的图标文本。这仅在 'icon' 选项打开时发生。仅在终端支持设置窗口图标文本时有效。当此选项包含 printf 风格的 '%' 项目时,它们将根据用于 'statusline' 的规则进行扩展。参见 'titlestring' 以获取示例设置。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
'ignorecase' 'ic' 'noignorecase' 'noic' 'ignorecase' 'ic' boolean (默认值为 off) global 在搜索模式、 cmdline-completion、在标签文件中搜索以及 expr-== 中忽略大小写。另请参见 'smartcase''tagcase'。可以使用模式中的 "\c" 或 "\C" 覆盖,参见 /ignorecase
'iminsert' 'imi' 'iminsert' 'imi' number (默认值为 0) local to buffer 指定在插入模式下是否使用 :lmap 或输入法 (IM)。有效值: 0 :lmap 关闭,IM 关闭 1 :lmap 打开,IM 关闭 2 :lmap 关闭,IM 打开 要在使用 <Esc> 离开插入模式时始终将选项重置为零,可以使用它
inoremap <ESC> <ESC>:set iminsert=0<CR>
这将使 :lmap 和 IM 在离开插入模式时自动关闭。请注意,在插入模式下使用 CTRL-^ 时,此选项会更改 i_CTRL-^。当将 'keymap' 设置为有效的键映射名称时,该值将设置为 1。它也用于 "r" 和 "f" 等命令的参数。
'imsearch' 'ims' 'imsearch' 'ims' number (默认值为 -1) local to buffer 指定在输入搜索模式时是否使用 :lmap 或输入法 (IM)。有效值: -1 使用 'iminsert' 的值,使其看起来像在键入搜索模式时也使用了 'iminsert' 0 :lmap 关闭,IM 关闭 1 :lmap 打开,IM 关闭 2 :lmap 关闭,IM 打开 请注意,在命令行模式下使用 CTRL-^ 时,此选项会更改 c_CTRL-^。当它不为 -1 并将 'keymap' 选项设置为有效的键映射名称时,该值将设置为 1。
'inccommand' 'icm' 'inccommand' 'icm' string (默认值为 "nosplit") global 当不为空时,在您键入时,使用 :command-preview 标志显示 :substitute:smagic:snomagic 以及用户命令的效果。
可能的值: nosplit 在缓冲区中增量显示命令的效果。 split 与 "nosplit" 相似,但也会在预览窗口中显示部分屏幕外结果。
如果内置命令的预览速度太慢(超过了 'redrawtime'),则在完成 Command-line-mode 之前,'inccommand' 会自动禁用。
'include' 'inc' 'include' 'inc' string (默认值为 "") global 或 local to buffer global-local 用于查找包含命令的模式。它是一个搜索模式,就像 "/" 命令一样(参见 pattern)。此选项用于 "[i"、"]I"、"[d" 等命令。通常, 'isfname' 选项用于识别匹配模式后出现的文件名。但是,如果模式中出现 "\zs",则从 "\zs" 到末尾匹配的文本,或者如果出现 "\ze",则匹配到 "\ze" 的文本将用作文件名。使用它来包含不在 'isfname' 中的字符,例如空格。然后,您可以使用 'includeexpr' 来处理匹配的文本。有关包含空格和反斜杠的信息,请参见 option-backslash
'includeexpr' 'inex' 'includeexpr' 'inex' string (默认值为 "") local to buffer 用于将使用 'include' 选项找到的字符串转换为文件名的表达式。主要用于将 "." 更改为 "/" 用于 Java
setlocal includeexpr=substitute(v:fname,'\\.','/','g')
"v:fname" 变量将设置为检测到的文件名。请注意双反斜杠::set 命令首先将它们减半,然后一个保留在值中,其中 "\." 匹配一个点字面意义上。对于简单的字符替换,tr() 可以避免转义的需要
setlocal includeexpr=tr(v:fname,'.','/')
也用于 gf 命令,如果找不到未修改的文件名。允许在 'include' 语句后的名称上执行 "gf"。也用于 <cfile>
如果表达式以 s: 或 <SID> 开头,则将其替换为脚本 ID (local-function)。示例
setlocal includeexpr=s:MyIncludeExpr()
setlocal includeexpr=<SID>SomeIncludeExpr()
否则,表达式将在设置选项的脚本的上下文中求值,因此可以使用脚本局部项。
如果值只是没有参数的函数调用,则效率更高,请参见 expr-option-function
从模式行设置时,表达式将在 sandbox 中计算,请参见 sandbox-option。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
在计算 'includeexpr' textlock 时,不允许更改文本或跳转到另一个窗口。
'incsearch' 'is' 'noincsearch' 'nois' 'incsearch' 'is' boolean (默认值为 on) global 在键入搜索命令时,显示模式在键入至今的位置,以及模式匹配的位置。匹配的字符串将被突出显示。如果模式无效或未找到,则不会显示任何内容。屏幕将经常更新,这在快速终端上非常有用。请注意,将显示匹配项,但光标将返回到其原始位置,当没有匹配项找到以及按下 <Esc> 时。您仍然需要使用 <Enter> 完成搜索命令,以便将光标移动到匹配项。您可以使用 CTRL-GCTRL-T 键移动到下一个和上一个匹配项。 c_CTRL-G c_CTRL-T Vim 只搜索大约半秒钟。使用复杂的模式和/或大量文本,匹配项可能无法找到。这是为了避免在您键入模式时 Vim 停止响应。 hl-IncSearch 突出显示组决定突出显示。当 'hlsearch' 打开时,在键入搜索命令时,所有匹配的字符串也会被突出显示。另请参见: 'hlsearch'。如果您不想打开 'hlsearch',但希望在搜索时突出显示所有匹配项,您可以使用 autocmd 打开和关闭 'hlsearch'。示例
augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END
CTRL-L 可用于从当前匹配项之后添加一个字符到命令行。如果设置了 'ignorecase''smartcase',并且命令行没有大写字符,则添加的字符将转换为小写。CTRL-R CTRL-W 可用于添加当前匹配项末尾的单词,但不包括已键入的字符。
'indentexpr' 'inde' 'indentexpr' 'inde' string (默认值为 "") local to buffer 用于计算行的适当缩进的表达式。它在创建新行时使用,用于 = 运算符,以及在插入模式下使用,如 'indentkeys' 选项所指定。当此选项不为空时,它将覆盖 'cindent''smartindent' 缩进。当设置了 'lisp' 时,此选项仅在 'lispoptions' 包含 "expr:1" 时使用。使用 v:lnum 设置为要计算缩进的行号来计算表达式。在计算表达式时,光标也在此行中(但它可以四处移动)。
如果表达式以 s: 或 <SID> 开头,则将其替换为脚本 ID (local-function)。示例
set indentexpr=s:MyIndentExpr()
set indentexpr=<SID>SomeIndentExpr()
否则,表达式将在设置选项的脚本的上下文中求值,因此可以使用脚本局部项。
使用无参数的函数调用的优点是速度更快,参见 expr-option-function
表达式必须返回以空格为单位的缩进数量。它可以返回 "-1" 以保留当前缩进(这意味着 'autoindent' 用于缩进)。用于计算缩进的有用函数是 indent()cindent()lispindent()。表达式的计算必须没有副作用!它不能更改文本,跳转到另一个窗口等。之后,光标位置始终恢复,因此光标可以移动。通常,此选项将设置为调用函数
set indentexpr=GetMyIndent()
错误消息将被抑制,除非 'debug' 选项包含 "msg"。参见 indent-expression
从模式行设置时,表达式将在 sandbox 中计算,请参见 sandbox-option。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
在评估 'indentexpr' textlock 时,不允许更改文本或跳转到另一个窗口。
'indentkeys' 'indk' 'indentkeys' 'indk' 字符串(默认值为 "0{,0},0],:,0#,!^F,o,O,e") 局部到缓冲区 当在插入模式下键入时,这些键会重新缩进当前行。仅当 'indentexpr' 不为空时才会发生。格式与 'cinkeys' 相同,请参阅 indentkeys-format。请参阅 C-indentingindent-expression
'infercase' 'inf' 'noinfercase' 'noinf' 'infercase' 'inf' 布尔值(默认值为 off) 局部到缓冲区 在插入模式下进行关键字完成 ins-completion 时,如果 'ignorecase' 也处于开启状态,则匹配的大小写会根据键入的文本进行调整。如果键入的文本中包含小写字母,而匹配项是大写字母,则完成的部分将变为小写。如果键入的文本中没有小写字母,而匹配项中包含小写字母,且键入的文本中包含大写字母,则完成的部分将变为大写。使用 'noinfercase' 时,匹配项将按原样使用。
'isfname' 'isf' 'isfname' 'isf' 字符串(默认情况下,Windows 为 "@,48-57,/,\,.,-,_,+,,,#,$,%,{,},[,],@-@,!,~,=";其他系统为 "@,48-57,/,.,-,_,+,,,#,$,%,~,=") 全局 此选项中指定的字符将包含在文件名和路径名中。文件名用于 "gf"、"[i" 等命令以及标签文件中。它也用于 pattern 中的 "\f"。256 及以上的多字节字符始终包含在内,只有 255 之前的字符由此选项指定。对于 UTF-8,字符 0xa0 到 0xff 也包含在内。在将空格添加到此选项之前请三思。虽然文件名中可能包含空格,但这样做的结果是,Vim 在进行完成时将不知道文件名从何处开始或结束。在 'isfname' 中没有空格可能效果更好。
请注意,在使用反斜杠作为路径分隔符的系统上,Vim 会尽力使其按预期工作。这有点棘手,因为 Vi 最初使用反斜杠来转义特殊字符。在这些系统上,Vim 不会删除文件名字符之前的反斜杠,但在 Unix 及其类似系统上会这样做。"&" 和 "^" 默认情况下不包含,因为它们对于 cmd.exe 来说是特殊的。
此选项的格式是一个由逗号分隔的各部分列表。每个部分可以是单个字符数字或范围。范围是两个字符数字,中间用 "-" 连接。字符数字可以是 0 到 255 之间的十进制数字,也可以是 ASCII 字符本身(不适用于数字)。示例:"_,-,128-140,#-43"(包含 "_" 和 "-",以及范围 128 到 140,以及 "#" 到 43)。如果一个部分以 "^" 开头,则将从选项中排除接下来的字符数字或范围。选项从左到右进行解释。将排除的字符放在它被包含的范围之后。要包含 "^" 本身,请将其用作选项的最后一个字符或范围的末尾。示例:"^a-z,#,^"(排除 "a" 到 "z",包含 "#" 和 "^")。如果字符为 "@",则包含所有 isalpha() 返回 TRUE 的字符。通常这些字符为 a 到 z 和 A 到 Z,以及重音字符。要包含 "@" 本身,请使用 "@-@"。示例:"@",^a-z" 所有字母字符,不包括小写 ASCII 字母。"a-z,A-Z,@-@" 所有字母以及 "@" 字符。可以使用逗号来代替字符数字。示例:"48-57,,,_" 数字、逗号和下划线。可以使用 "^" 前缀来排除逗号。示例:" -~,^,,9" 所有字符从空格到 "~",不包括逗号,加上 <Tab>。有关包含空格和反斜杠的信息,请参阅 option-backslash
'isident' 'isi' 'isident' 'isi' 字符串(默认情况下,Windows 为 "@,48-57,_,128-167,224-235";其他系统为 "@,48-57,_,192-255") 全局 此选项中给出的字符将包含在标识符中。标识符用于识别环境变量以及 'define' 选项匹配之后。它也用于 pattern 中的 "\i"。请参阅 'isfname',了解此选项格式的说明。对于 "@",只使用 255 之前的字符。注意:如果您更改了此选项,可能会破坏扩展环境变量的操作。例如,当包含 "/" 时,Vim 会尝试扩展 "$HOME/.local/state/nvim/shada/main.shada"。您可能应该更改 'iskeyword' 而不是它。
'iskeyword' 'isk' 'iskeyword' 'isk' 字符串(默认值为 "@,48-57,_,192-255") 局部到缓冲区 关键字用于在许多命令中进行搜索和识别:"w"、"*"、"[i" 等。它也用于 pattern 中的 "\k"。请参阅 'isfname',了解此选项格式的说明。对于 "@" 中 255 以上的字符,请检查 "word" 字符类(任何不是空格或标点的字符)。对于 C 程序,您可以使用 "a-z,A-Z,48-57,_,.,-,>"。对于帮助文件,它被设置为所有非空白可打印字符,除了 "*"、"'" 和 "|"(以便 CTRL-] 在命令上找到该命令的帮助)。当 'lisp' 选项处于开启状态时,始终包含 "-" 字符。此选项还会影响语法高亮显示,除非语法使用 :syn-iskeyword
'isprint' 'isp' 'isprint' 'isp' 字符串(默认值为 "@,161-255") 全局 此选项中给出的字符将直接显示在屏幕上。它也用于 pattern 中的 "\p"。从空格(ASCII 32)到 "~"(ASCII 126)的字符始终直接显示,即使它们没有包含在 'isprint' 中或被排除在外。请参阅 'isfname',了解此选项格式的说明。
不可打印字符用两个字符显示:0 - 31 "^@" - "^_" 32 - 126 始终为单个字符 127 "^?" 128 - 159 "~@" - "~_" 160 - 254 "| " - "|~" 255 "~?" 128 到 255 的非法字节(无效的 UTF-8)显示为 <xx>,其中 xx 为字节的十六进制值。当 'display' 包含 "uhex" 时,所有不可打印字符都将显示为 <xx>。SpecialKey 高亮显示将用于不可打印字符。 hl-SpecialKey
256 及以上的多字节字符始终包含在内,只有 255 之前的字符由此选项指定。当字符可打印但当前字体中不可用时,将显示一个替换字符。不可打印和零宽度的 Unicode 字符将显示为 <xxxx>。没有选项可以指定这些字符。
'joinspaces' 'js' 'nojoinspaces' 'nojs' 'joinspaces' 'js' 布尔值(默认值为 off) 全局 使用 join 命令在 "."、"?" 和 "!" 之后插入两个空格。否则只插入一个空格。
'jumpoptions' 'jop' 'jumpoptions' 'jop' 字符串(默认值为 "clean") 全局 更改 jumplist 行为的单词列表。 stack 使 jumplist 的行为类似于 tagstack。在导航回 jumplist 然后跳转到某个位置时,jumplist 中条目之间的相对位置将被保留,但会以丢弃后续条目为代价。 jumplist-stack
view 在 jumplist、changelistalternate-file 中移动或使用 mark-motions 时,尝试还原发生该操作的 mark-view
clean 从 jumplist 中删除未加载的缓冲区。实验性功能:此标志将来可能会更改。
'keymap' 'kmp' 'keymap' 'kmp' 字符串(默认值为 "") 局部到缓冲区 键盘映射的名称。请参阅 mbyte-keymap。将此选项设置为有效的键映射名称会产生将 'iminsert' 设置为 1 的副作用,以便键映射生效。 'imsearch' 也被设置为 1,除非它为 -1。只能使用字母数字字符、"."、"-" 和 "_"。
'keymodel' 'km' 'keymodel' 'km' 字符串(默认值为 "") 全局 由逗号分隔的单词列表,这些单词可以启用键可以执行的特殊功能。这些值可以使用:startsel 使用一个移位的特殊键来开始选择(选择模式或可视模式,具体取决于 "key" 是否存在于 'selectmode' 中)。stopsel 使用一个未移位的特殊键来停止选择。此处的特殊键是指光标键、<End><Home><PageUp><PageDown>
'keywordprg' 'kp' 'keywordprg' 'kp' 字符串(默认值为 ":Man",Windows 为 ":help") 全局或局部到缓冲区 global-local 用于 K 命令的程序。环境变量会扩展 :set_env。":help" 可用于访问 Vim 内部帮助。(请注意,之前将全局选项设置为空值会执行此操作,但现在已弃用。)当第一个字符为 ":" 时,该命令将作为 Vim Ex 命令调用,并在其前面加上 [count]。当使用 "man" 或 "man -s" 时,Vim 会自动将 "K" 命令的 [count] 转换为节号。有关包含空格和反斜杠的信息,请参阅 option-backslash。示例
set keywordprg=man\ -s
set keywordprg=:Man
出于安全原因,此选项不能从 modelinesandbox 中设置。
'langmap' 'lmap' E357 E358 'langmap' 'lmap' 字符串 (默认 "") 全局 此选项允许将键盘切换到特殊语言模式。在插入模式下输入文本时,字符会直接插入。在正常模式下,'langmap' 选项会负责将这些特殊字符转换为键的原始含义。这意味着您不必更改键盘模式就可以执行正常模式命令。这与 'keymap' 选项相反,在插入模式下,字符会被映射。另请考虑将 'langremap' 设置为关闭,以防止 'langmap' 应用于映射产生的字符。出于安全原因,此选项不能从 modelinesandbox 中设置。
示例(对于希腊语,使用 UTF-8):greek
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
示例(交换命令的 z 和 y 的含义)
set langmap=zy,yz,ZY,YZ
The 'langmap' 选项是一个由逗号分隔的部分列表。每个部分可以采用两种形式之一: 1. 一组键值对。每个键值对都是一个“从”字符,紧跟一个“到”字符。示例:“aA”,“aAbBcC”。 2. 一个“从”字符列表,一个分号和一个“到”字符列表。示例:“abc;ABC” 示例:“aA,fgh;FGH,cCdDeE” 特殊字符需要在前面加上反斜杠。它们是“;”、“,”、“””、“|”和反斜杠本身。
这将允许您激活 vim 操作,而无需在语言之间来回切换。您的语言字符将在以下情况下被理解为正常的 vim 英语字符(根据 langmap 映射): o 正常/可视模式(命令、缓冲区/寄存器名称、用户映射) o 插入/替换模式:CTRL-R 后的寄存器名称 o 插入/替换模式:映射 在命令行模式下输入的字符不会受此选项的影响。请注意,此选项可以在任何时候更改,允许在不同语言/编码的映射之间切换。使用映射以避免每次都必须输入它!
'langmenu' 'lm' 'langmenu' 'lm' 字符串 (默认 "") 全局 用于菜单翻译的语言。告诉从 'runtimepath' 中的“lang”目录加载哪个文件(没有空格)。例如,始终使用荷兰语菜单,无论 $LANG 设置为什么。
"lang/menu_" .. &langmenu .. ".vim"
例如,为了始终使用荷兰语菜单,无论 $LANG 设置为什么
set langmenu=nl_NL.ISO_8859-1
'langmenu' 为空时,使用 v:lang。只能使用正常的文件名字符,/\*?[|<> 是非法的。如果您的 $LANG 设置为非英语语言,但您希望使用英语菜单
set langmenu=none
此选项必须在加载菜单、打开文件类型检测或语法高亮之前设置。一旦菜单定义好,设置此选项就不会有任何效果。但是你可以这样做
source $VIMRUNTIME/delmenu.vim
set langmenu=de_DE.ISO_8859-1
source $VIMRUNTIME/menu.vim
警告: 这将删除您自己定义的所有菜单!
'langremap' 'lrm' 'nolangremap' 'nolrm' 'langremap' 'lrm' 布尔值 (默认关闭) 全局 当关闭时,设置 'langmap' 不会应用于映射产生的字符。如果设置 'langmap' 禁用了您的某些映射,请确保此选项已关闭。
'laststatus' 'ls' 'laststatus' 'ls' 数字 (默认 2) 全局 此选项的值会影响最后一个窗口何时会有状态行: 0:从不 1:只有在至少有两个窗口的情况下 2:始终 3:始终,并且只有最后一个窗口 如果您有多个窗口,状态行使屏幕看起来更漂亮,但它需要另一行屏幕空间。 status-line
'lazyredraw' 'lz' 'nolazyredraw' 'nolz' 'lazyredraw' 'lz' 布尔值 (默认关闭) 全局 当此选项设置时,在执行宏、寄存器和其他未键入的命令时,屏幕不会重绘。此外,更新窗口标题也会被推迟。要强制更新,请使用 :redraw。这可能会偶尔导致显示错误。它只适用于暂时设置,用于执行可能导致闪烁或减慢速度的操作。
'linebreak' 'lbr' 'nolinebreak' 'nolbr' 'linebreak' 'lbr' 布尔值 (默认关闭) 局部到窗口 如果开启,Vim 将在 'breakat' 中的一个字符处换行长行,而不是在屏幕上容纳的最后一个字符处换行。与 'wrapmargin''textwidth' 不同,这不会在文件中插入 <EOL>,它只影响文件显示方式,而不影响其内容。如果 'breakindent' 设置,则行在视觉上缩进。然后,使用 'showbreak' 的值放在换行前面。当 'wrap' 选项关闭时,此选项不会被使用。请注意,<Tab> 字符在 <EOL> 之后通常不会以正确的空格数量显示。
'lines' E593 'lines' 数字 (默认 24 或终端高度) 全局 Vim 窗口的行数。通常您不需要设置它。终端初始化代码会自动执行。当 Vim 在 GUI 或可调整大小的窗口中运行时,设置此选项会导致窗口大小发生变化。如果您只想将该大小用于 GUI,请将命令放入您的 gvimrc 文件中。Vim 将行数限制为屏幕上容纳的数量。您可以使用此命令获取尽可能高的窗口
set lines=999
最小值为 2,最大值为 1000。
'linespace' 'lsp' 'linespace' 'lsp' 数字 (默认 0) 全局 仅在 GUI 中 字符之间插入的像素行数。如果字体使用完整的字符单元格高度,使行彼此接触,则很有用。当非零时,有空间用于下划线。对于某些字体,行之间可能会有太多空间(以便为升部和降部留出空间)。然后,将 'linespace' 设置为负值是有意义的。不过,这可能会导致显示问题!
'lisp' 'nolisp' 'lisp' 布尔值 (默认关闭) 局部到缓冲区 Lisp 模式:当在插入模式下键入 <Enter> 时,将下一行的缩进设置为 Lisp 标准(嗯,差不多)。在“cc”或“S”中也是如此。'autoindent' 必须也开启,才能使此功能正常工作。'p' 标志在 'cpoptions' 中会更改缩进方法:与 Vi 兼容或更好。另请参阅 'lispwords'。'-' 字符包含在关键字字符中。如果 'equalprg' 为空,则重新定义“=”运算符以使用相同的缩进算法,而不是调用外部程序。
'lispoptions' 'lop' 'lispoptions' 'lop' 字符串 (默认 "") 局部到缓冲区 影响 Lisp 缩进的项目逗号分隔列表,在 'lisp' 选项启用时生效。当前仅支持一项: expr:1 当 'indentexpr' 设置时,使用 'indentexpr' 进行 Lisp 缩进 expr:0 不要使用 'indentexpr' 进行 Lisp 缩进(默认) 请注意,当使用 'indentexpr' 时,= 运算符会缩进所有行,否则第一行不会缩进(与 Vi 兼容)。
'lispwords' 'lw' 'lispwords' 'lw' 字符串 (默认很长) 全局或局部到缓冲区 global-local 影响 Lisp 缩进的单词逗号分隔列表,在 'lisp' 选项启用时生效。
'list' 'nolist' 'list' 布尔值 (默认关闭) 局部到窗口 列表模式:默认情况下,将制表符显示为 ">",尾随空格显示为 "-",不可分割的空格字符显示为 "+"。有助于查看制表符和空格之间的区别以及尾随空格。受 'listchars' 选项的进一步更改。
'listchars' 不包含 "tab" 字段时,制表符显示为 "^I" 或 "<09>",就像不可打印字符的显示方式一样。
光标显示在制表符字符所占用的空格的开头,而不是像通常在正常模式下的结尾一样。要获得这种光标位置,同时使用空格显示制表符,请使用
set list lcs=tab:\ \
请注意,当 'cpoptions' 包含 'L' 时,列表模式还会影响格式(使用 'textwidth''wrapmargin' 设置)。有关更改制表符显示方式的信息,请参阅 'listchars'
'listchars' 'lcs' 'listchars' 'lcs' 字符串 (默认 "tab:> ,trail:-,nbsp:+") 全局或局部到窗口 global-local'list' 模式和 :list 命令中使用的字符串。它是一个逗号分隔的字符串设置列表。 E1511
lcs-eol
eol:c 用于在每行末尾显示的字符。如果省略,则行末尾没有额外字符。 lcs-tab
tab:xy[z] 用于显示制表符的两个或三个字符。第三个字符是可选的。
tab:xy 始终使用 'x',然后使用 'y',直到足够为止。因此 "tab:>-" 显示
>
>-
>--
etc.
tab:xyz 始终使用 'z',然后在前面加上 'x',然后使用 'y',直到足够为止。因此 "tab:<->" 显示
>
<>
<->
<-->
etc.
当省略 "tab:" 时,制表符显示为 ^I。 lcs-space
space:c 用于显示空格的字符。如果省略,则空格将留空。 lcs-multispace
multispace:c... 用于循环显示多个连续空格的一个或多个字符。覆盖 "space" 设置,除了单个空格。如果省略,则使用 "space" 设置。例如,:set listchars=multispace:---+ 将十个连续空格显示为
---+---+--
lcs-lead
lead:c 用于显示前导空格的字符。省略时,前导空格将为空白。覆盖前导空格的“space”和“multispace”设置。可以将其与“tab:”组合使用,例如
set listchars+=tab:>-,lead:.
lcs-leadmultispace
leadmultispace:c... 类似于 lcs-multispace 值,但仅用于前导空格。还会覆盖 lcs-lead 用于前导多个空格。:set listchars=leadmultispace:---+ 将十个连续的前导空格显示为
---+---+--XXX
其中“XXX”表示该行中第一个非空白字符。 lcs-trail
trail:c 用于显示尾随空格的字符。省略时,尾随空格将为空白。覆盖尾随空格的“space”和“multispace”设置。 lcs-extends
extends:c 当 'wrap' 关闭且行继续超出屏幕右侧时,显示在最后一列的字符。 lcs-precedes
precedes:c 当物理行第一列的字符前有文本时,显示在物理行第一列的可见字符中的字符。 lcs-conceal
conceal:c 当 'conceallevel' 设置为 1 时,显示在隐藏文本位置的字符。省略时为空格。 lcs-nbsp
nbsp:c 用于显示不可分割空格字符(0xA0(十进制 160)和 U+202F)的字符。省略时为空白。
不应使用字符“:”和“,”。可以使用 UTF-8 字符。所有字符必须为单宽字符。 E1512
每个字符都可以用十六进制表示
set listchars=eol:\\x24
set listchars=eol:\\u21b5
set listchars=eol:\\U000021b5
请注意,使用双反斜杠。十六进制字符的个数必须正好为 2(对于 \\x)、4(对于 \\u)和 8(对于 \\U)。
示例
set lcs=tab:>-,trail:-
set lcs=tab:>-,eol:<,nbsp:%
set lcs=extends:>,precedes:<
hl-NonText 高亮将用于“eol”、“extends”和“precedes”。 hl-Whitespace 用于“nbsp”、“space”、“tab”、“multispace”、“lead”和“trail”。
'loadplugins' 'lpl' 'noloadplugins' 'nolpl' 'loadplugins' 'lpl' 布尔值(默认启用)全局 启用时,插件脚本会在启动时加载 load-plugins。可以在 vimrc 文件中重置此选项以禁用插件加载。请注意,使用“-u NONE”和“--noplugin”命令行参数将重置此选项。 -u --noplugin
'magic' 'nomagic' 'magic' 布尔值(默认启用)全局 更改搜索模式中可使用的特殊字符。请参见 pattern 警告: 关闭此选项很可能会导致插件崩溃!这是因为许多模式假设它处于启用状态,并在禁用时失败。只有在处理旧的 Vi 脚本时才关闭它。在任何其他情况下,请编写在 'magic' 启用时有效的模式。当您想 /\M 时,请包含“\M”。
'makeef' 'mef' 'makeef' 'mef' 字符串(默认为空)全局 :make 命令(请参见 :make_makeprg)和 :grep 命令的错误文件名称。如果为空,则将使用内部生成的临时文件。如果包含“##”,则会将其替换为数字以使名称唯一。这确保了“:make”命令不会覆盖现有文件。 用于“:cf”命令。请参见 'errorfile' 获取相关信息。环境变量将扩展 :set_env。请参见 option-backslash 获取有关包含空格和反斜杠的信息。出于安全原因,此选项无法从 modelinesandbox 中设置。
'makeencoding' 'menc' 'makeencoding' 'menc' 字符串(默认为空)全局或缓冲区本地 global-local 用于读取外部命令输出的编码。如果为空,则不转换编码。这用于:make:lmake:grep:lgrep:grepadd:lgrepadd:cfile:cgetfile:caddfile:lfile:lgetfile:laddfile
这在您使用 MS-Windows 时最有用。如果启用了 iconv,将 'makeencoding' 设置为“char”的效果与将其设置为系统区域设置编码相同。示例
set makeencoding=char        " system locale is used
'makeprg' 'mp' 'makeprg' 'mp' 字符串(默认“make”)全局或缓冲区本地 global-local 用于“:make”命令的程序。请参见 :make_makeprg。此选项可能包含“%”和“#”字符(请参见 :_%:_#),它们将扩展为当前和备用文件名。使用 ::S 逃避文件名(如果它们包含特殊字符)。环境变量将扩展 :set_env。请参见 option-backslash 获取有关包含空格和反斜杠的信息。请注意,'|' 必须逃避两次:一次用于“:set”,另一次用于命令的解释。当您使用名为“myfilter”的过滤器时,请执行以下操作
set makeprg=gmake\ \\\|\ myfilter
可以给出占位符“$*”(甚至多次)以指定将包含参数的位置,例如
set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
出于安全原因,此选项不能从 modelinesandbox 中设置。
'matchpairs' 'mps' 'matchpairs' 'mps' 字符串(默认“(:),{:},[:]”)缓冲区本地 形成配对的字符。 % 命令在两者之间跳转。只允许不同的字符对,因此您无法在两个双引号之间跳转。字符必须用冒号分隔。配对必须用逗号分隔。包含“<”和“>”的示例(用于 HTML)
set mps+=<:>
更奇特的示例,用于在赋值中的“=”和“;”之间跳转,这在 C 和 Java 等语言中非常有用
au FileType c,cpp,java set mps+==:;
有关使用“%”的更高级方法,请参见 $VIMRUNTIME/plugin 目录中的 matchit.vim 插件。 add-local-help
'matchtime' 'mat' 'matchtime' 'mat' 数字(默认 5)全局 当 'showmatch' 设置时,显示匹配括号的十分之一秒。请注意,这与其他设置时间的选项不同,它不是以毫秒为单位。这是为了与 Nvi 兼容。
'maxfuncdepth' 'mfd' 'maxfuncdepth' 'mfd' 数字(默认 100)全局 用户函数的函数调用最大深度。这通常可以捕获无休止的递归。当使用递归深度更大的递归函数时,将 'maxfuncdepth' 设置为更大的数字。但这会使用更多内存,存在内存耗尽时失败的风险。将此限制提高到 200 以上也会更改 Ex 命令递归的最大值,请参见 E169。另请参见 :function。也用于回调函数的最大深度。
'maxmapdepth' 'mmd' E223 'maxmapdepth' 'mmd' 数字(默认 1000)全局 在不生成要使用的字符的情况下执行映射的次数。这通常可以捕获无休止的映射,例如“:map x y”和“:map y x”。它仍然无法捕获“:map g wg”,因为在执行下一个映射之前会使用 'w'。另请参见 key-mapping
'maxmempattern' 'mmp' 'maxmempattern' 'mmp' 数字(默认 1000)全局 用于模式匹配的内存最大量(以 KB 为单位)。最大值为大约 2000000。使用它可以无限制地工作。 E363
当 Vim 遇到限制时,它会显示错误消息,并且行为类似于键入CTRL-C。遇到限制通常意味着模式效率低下或过于复杂。这在使用非常长的行的模式“\(.\)*”时就可能发生。“.*”的效果要好得多。也可能在重绘时发生,当语法规则尝试匹配复杂的文本结构时。Vim 可能会在达到 'maxmempattern' 限制之前耗尽内存,在这种情况下,您将收到“内存不足”错误而不是错误消息。
'menuitems' 'mis' 'menuitems' 'mis' 数字(默认 25)全局 菜单中使用的项目最大数量。用于从项目列表生成的菜单,例如“Buffers”菜单。更改此选项不会产生直接影响,必须先刷新菜单。
'mkspellmem' 'msm' 'mkspellmem' 'msm' 字符串(默认“460000,2000,500”)全局 :mkspell 的参数。这会调整何时开始压缩单词树。当单词很多时,压缩可能很慢,但这是为了避免耗尽内存。每个单词使用的内存量很大程度上取决于单词的相似程度,这就是为什么此调整很复杂的原因。
有三个用逗号分隔的数字
{start},{inc},{added}
对于大多数语言,未压缩的单词树适合内存。{start} 给出了在进行任何压缩之前可以使用多少内存(以 KB 为单位)。它应该比 Vim 可用的内存略小。
超过{start} 限制后,{inc} 数字指定在进行另一次压缩之前可以分配多少内存(以 KB 为单位)。数字越小,意味着在添加更少的单词后就会进行压缩,速度较慢。数字越大,意味着会分配更多内存。
完成压缩后,在忽略{inc} 限制并按需进行压缩之前,可以添加{added} 乘以 1024 个单词。数字越小,表示达到{inc} 限制的可能性越小,使用的内存更少,但速度更慢。
需要这些数字的语言是意大利语和匈牙利语。默认值适用于您拥有大约 512 MB 内存的情况。如果您拥有 1 GB 内存,可以使用
set mkspellmem=900000,3000,800
如果您拥有不到 512 MB 的内存,无论将 'mkspellmem' 设置为何值,:mkspell 可能会在某些语言中失败。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'modeline' 'ml' 'nomodeline' 'noml' 'modeline' 'ml' 布尔值(默认启用(根禁用))缓冲区本地 如果 'modeline' 启用,'modelines' 将给出要检查以查找设置命令的行数。如果 'modeline' 禁用或 'modelines' 为零,则不会检查任何行。请参见 modeline
'modelineexpr' 'mle' 'nomodelineexpr' 'nomle' 'modelineexpr' 'mle' boolean (默认关闭) 全局 当开启时,允许一些在 modeline 中设置的选项是表达式。检查选项以确定它是否受 'modelineexpr' 影响。另见 modeline。出于安全原因,此选项不能从 modelinesandbox 中设置。
'modelines' 'mls' 'modelines' 'mls' number (默认 5) 全局 如果 'modeline' 开启,'modelines' 指定检查设置命令的行数。如果 'modeline' 关闭或 'modelines' 为零,则不检查任何行。参见 modeline
'modifiable' 'ma' 'nomodifiable' 'noma' E21 'modifiable' 'ma' boolean (默认开启) 局部于缓冲区 当关闭时,缓冲区内容无法更改。 'fileformat''fileencoding' 选项也不能更改。可以通过 -M 命令行参数在启动时重置。
'modified' 'mod' 'nomodified' 'nomod' 'modified' 'mod' boolean (默认关闭) 局部于缓冲区 local-noglobal 当开启时,缓冲区被认为已修改。当以下情况发生时,此选项会被设置: 1. 自上次写入后,文本发生了更改。使用 undo 命令返回原始文本将重置该选项。但是,撤消写入缓冲区之前所做的更改将再次设置该选项,因为文本与写入时的文本不同。 2. 'fileformat''fileencoding' 与其原始值不同。原始值在读取或写入缓冲区时设置。":set nomodified" 命令也会将原始值重置为当前值,并且 'modified' 选项将被重置。类似地适用于 'eol''bomb'。当缓冲区发生更改,而该更改是由于 BufNewFile、BufRead/BufReadPost、BufWritePost、FileAppendPost 或 VimLeave 自动命令事件导致的,则不会设置此选项。有关解释,请参见 gzip-example。当 'buftype' 为 "nowrite" 或 "nofile" 时,此选项可能会被设置,但会被忽略。请注意,文本实际上可能相同,例如,当对 "A" 使用 "rA" 时,'modified' 会被设置。
'more' 'nomore' 'more' boolean (默认开启) 全局 当开启时,列表在整个屏幕填满时暂停。您将看到 more-prompt。当此选项关闭时,不会暂停,列表将持续到完成。
'mouse'
'mouse' string (默认 "nvi") 全局 启用鼠标支持。例如,要在普通模式和可视模式下启用鼠标
set mouse=nv
要暂时禁用鼠标支持,请在使用鼠标时按住 Shift 键。
可以为不同的模式启用鼠标支持: n 普通模式 v 可视模式 i 插入模式 c 命令行模式 h 编辑帮助文件时,所有先前的模式 a 所有先前的模式 r 用于 hit-entermore-prompt 提示
在文本缓冲区中的任何位置左键单击以将光标放置在该位置。这对运算符也有效,例如,键入 d,然后左键单击以删除从当前光标位置到您单击位置的文本。
拖动窗口的 状态行 或垂直分隔符以调整其大小。
如果针对 "v"(可视模式)启用,则双击选择单词,三击选择整行,四击选择矩形块。
有关使用鼠标滚轮滚动,请参见 scroll-mouse-wheel
注意: 在终端中启用鼠标时,复制/粘贴将尽可能使用 "* 寄存器。另见 'clipboard'
相关选项: 'mousefocus' 窗口焦点跟随鼠标指针 'mousemodel' 哪个鼠标按钮执行哪个操作 'mousehide' 在键入文本时隐藏鼠标指针 'selectmode' 是否启动选择模式或可视模式。
'mousefocus' 'mousef' 'nomousefocus' 'nomousef' 'mousefocus' 'mousef' boolean (默认关闭) 全局 鼠标指针所在的窗口会自动激活。当更改窗口布局或以其他方式更改窗口焦点时,鼠标指针会移到具有键盘焦点的窗口。关闭是默认值,因为它使用下拉菜单会有点古怪,因为指针传输可能会意外地激活窗口。
'mousehide' 'mh' 'nomousehide' 'nomh' 'mousehide' 'mh' boolean (默认开启) 全局 仅在 GUI 中 当开启时,在键入字符时隐藏鼠标指针。当鼠标移动时,鼠标指针会恢复。
'mousemodel' 'mousem' 'mousemodel' 'mousem' string (默认 "popup_setpos") 全局 设置用于鼠标的模型。该名称主要指定右键用于什么: extend 右键扩展选择。这与 xterm 中的行为类似。 popup 右键弹出一个菜单。按住 Shift 的左键扩展选择。这与 Microsoft Windows 中的行为类似。 popup_setpos 与 "popup" 相似,但光标会移动到鼠标单击的位置,因此所选操作将对单击的对象起作用。如果单击选择内部,则对该选择进行操作,即不移动光标。当然,这意味着右键单击选择之外将结束可视模式。每种模型下每个按钮的概述
mouse extend popup(_setpos)
左键单击 放置光标 放置光标 左键拖动 开始选择 开始选择 按住 Shift 的左键 搜索词 扩展选择 右键单击 扩展选择 弹出菜单(放置光标) 右键拖动 扩展选择 - 中键单击 粘贴 粘贴
在 "popup" 模型中,右键会产生一个弹出菜单。Nvim 会创建一个默认的 弹出菜单,但您可以重新定义它。
请注意,您可以使用映射进一步细化按钮的含义。参见 mouse-overview。但是,映射不应用于无模式选择。
示例
map <S-LeftMouse>     <RightMouse>
map <S-LeftDrag>      <RightDrag>
map <S-LeftRelease>   <RightRelease>
map <2-S-LeftMouse>   <2-RightMouse>
map <2-S-LeftDrag>    <2-RightDrag>
map <2-S-LeftRelease> <2-RightRelease>
map <3-S-LeftMouse>   <3-RightMouse>
map <3-S-LeftDrag>    <3-RightDrag>
map <3-S-LeftRelease> <3-RightRelease>
map <4-S-LeftMouse>   <4-RightMouse>
map <4-S-LeftDrag>    <4-RightDrag>
map <4-S-LeftRelease> <4-RightRelease>
需要 CTRL 修饰符的鼠标命令可以通过在使用鼠标之前键入 "g" 键来模拟:"g<LeftMouse>" 是 "<C-LeftMouse> (跳转到鼠标单击下的标签) "g<RightMouse>" 是 "<C-RightMouse> ("CTRL-T")
'mousemoveevent' 'mousemev' 'nomousemoveevent' 'nomousemev' 'mousemoveevent' 'mousemev' boolean (默认关闭) 全局 当开启时,鼠标移动事件会传递到输入队列,并且可用于映射。默认情况下,关闭可以避免鼠标移动开销,除非必要。 警告: 设置此选项可能会导致在鼠标移动时中止待处理的映射。
'mousescroll' E5080 'mousescroll' string (默认 "ver:3,hor:6") 全局 此选项控制使用鼠标滚轮滚动时滚动的行数/列数 (scroll-mouse-wheel)。该选项是一个逗号分隔的列表。每个部分都包含一个方向和一个计数,如下所示: direction:count,direction:count 方向是 "hor" 或 "ver" 之一。 "hor" 控制水平滚动,"ver" 控制垂直滚动。Count 设置给定方向的滚动量,它应该是非负整数。每个方向最多应该设置一次。如果省略了方向,则使用默认值(水平滚动为 6,垂直滚动为 3)。您可以使用计数 0 来禁用鼠标滚动。
示例
set mousescroll=ver:5,hor:2
这将使 Nvim 在垂直滚动时一次滚动 5 行,在水平滚动时一次滚动 2 列。
'mousetime' 'mouset' 'mousetime' 'mouset' number (默认 500) 全局 定义两次鼠标单击之间被识别为多次单击的最大时间(毫秒)。
'nrformats' 'nf' 'nrformats' 'nf' string (默认 "bin,hex") 局部于缓冲区 这定义了 Vim 在使用 CTRL-ACTRL-X 命令分别对数字进行加减时将考虑的基数;有关这些命令的更多信息,请参见 CTRL-A。 alpha 如果包含,单个字母字符将被递增或递减。这对带有字母索引 a)、b) 等的列表很有用。 octal-nrformats
octal 如果包含,以零开头的数字将被视为八进制。例如:对 "007" 使用 CTRL-A 会得到 "010"。 hex 如果包含,以 "0x" 或 "0X" 开头的数字将被视为十六进制。例如:对 "0x100" 使用 CTRL-X 会得到 "0x0ff"。 bin 如果包含,以 "0b" 或 "0B" 开头的数字将被视为二进制。例如:对 "0b1000" 使用 CTRL-X 会减一,得到 "0b0111"。 unsigned 如果包含,数字被识别为无符号。因此,前导破折号或负号不会被视为数字的一部分。例如:对 "9-2020" 中的 "2020" 使用 CTRL-X 会得到 "9-2019"(不使用 "unsigned" 会得到 "9-2021")。对 "9-2020" 中的 "2020" 使用 CTRL-A 会得到 "9-2021"(不使用 "unsigned" 会得到 "9-2019")。对 "0" 使用 CTRL-X 或对 "18446744073709551615"(2^64 - 1)使用 CTRL-A 不会有任何效果,溢出被阻止。 blank 如果包含,将根据前导空格将数字视为有符号或无符号。如果带有前导破折号的数字的破折号紧接在非空格字符之前(即不是制表符或 " "),则负号不会被视为数字的一部分。例如:对 "Carbon-14" 中的 "14" 使用 CTRL-A 会得到 "Carbon-15"(不使用 "blank" 会得到 "Carbon-13")。对 "Carbon -8" 中的 "8" 使用 CTRL-X 会得到 "Carbon -9"(因为 -8 前面有空格。如果设置了 "unsigned",则结果将为 "Carbon -7")。如果包含此格式,则会像设置了 "unsigned" 一样阻止溢出。如果包含此格式和 "unsigned",则 "unsigned" 将优先。
以数字 1-9 开头的数字始终被视为十进制。对于不被识别为八进制或十六进制的数字也适用。
'number' 'nu' 'nonumber' 'nonu' 'number' 'nu' 布尔值(默认关闭) 窗口局部 在每行前面打印行号。 当 'cpoptions' 中不包含 'n' 选项时,换行后的行将不会使用行号所在的列。 使用 'numberwidth' 选项调整行号的空间。 当长换行后的行不是从第一个字符开始时,数字前会出现 '-' 字符。 对于高亮显示,请参阅 hl-LineNrhl-CursorLineNr:sign-define "numhl" 参数。 number_relativenumber
'relativenumber' 选项将显示的数字更改为相对于光标的数字。 结合 'number',共有以下四种组合(光标位于第 3 行)
'nonu' 'nu' 'nonu' 'nu' 'nornu' 'nornu' 'rnu' 'rnu'
|apple          |  1 apple      |  2 apple      |  2 apple
|pear           |  2 pear       |  1 pear       |  1 pear
|nobody         |  3 nobody     |  0 nobody     |3   nobody
|there          |  4 there      |  1 there      |  1 there
'numberwidth' 'nuw' 'numberwidth' 'nuw' 数字(默认 4) 窗口局部 用于行号的最小列数。 仅在设置了 'number''relativenumber' 选项或打印带行号的行时相关。 由于数字和文本之间始终有一个空格,因此数字本身少一个字符。 该值是最小宽度。 当需要适应缓冲区中的最大行号或窗口中的行数时,将使用更大的宽度,具体取决于是否设置了 'number''relativenumber'。 因此,使用 Vim 的默认值 4,可以容纳高达 999 行的行号。 当缓冲区有 1000 行时,将使用 5 列。 最小值为 1,最大值为 20。
'omnifunc' 'ofu' 'omnifunc' 'ofu' 字符串(默认 "") 缓冲区局部 此选项指定一个函数,用于在插入模式下使用 CTRL-X CTRL-O 进行全能补全。 i_CTRL-X_CTRL-O 请参阅 complete-functions,了解如何调用该函数以及该函数应该返回的内容。 该值可以是函数名、lambdaFuncref。 请参阅 option-value-function 获取更多信息。 此选项通常由文件类型插件设置::filetype-plugin-on 出于安全原因,不能从 modelinesandbox 中设置此选项。
'operatorfunc' 'opfunc' 'operatorfunc' 'opfunc' 字符串(默认 "") 全局 此选项指定一个函数,由 g@ 运算符调用。 请参阅 :map-operator 获取更多信息和示例。 该值可以是函数名、lambdaFuncref。 请参阅 option-value-function 获取更多信息。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'packpath' 'pp' 'packpath' 'pp' 字符串(默认请参阅 'runtimepath') 全局 用于查找包的目录。 请参阅 packagespackages-runtimepath。 出于安全原因,不能从 modelinesandbox 中设置此选项。
'paragraphs' 'para' 'paragraphs' 'para' 字符串(默认 "IPLPPPQPP TPHPLIPpLpItpplpipbp") 全局 指定分隔段落的 nroff 宏。 这些是一对两个字母(请参阅 object-motions)。
'patchexpr' 'pex' 'patchexpr' 'pex' 字符串(默认 "") 全局 对文件应用补丁并生成结果文件的最新版本的表达式。 请参阅 diff-patchexpr。 出于安全原因,不能从 modelinesandbox 中设置此选项。
'patchmode' 'pm' E205 E206 'patchmode' 'pm' 字符串(默认 "") 全局 当非空时,保留文件的旧版本。 这可用于在更改源代码发行版中的文件时保留文件的原始版本。 只有第一次写入文件时,才会保留原始文件的副本。 副本的名称是原始文件的名称,附加了 'patchmode' 选项中的字符串。 此选项应以点开头。 使用类似 ".orig" 或 ".org" 的字符串。 'backupdir' 必须不为空,才能使此功能正常工作(详细信息:备份文件在成功写入新文件后被重命名为 patchmode 文件,因此必须能够写入备份文件)。 如果没有要备份的文件,则会创建一个空文件。 当 'backupskip' 模式匹配时,不会创建 patchmode 文件。 对压缩文件使用 'patchmode' 会在末尾附加扩展名(例如,“file.gz.orig”),因此结果名称并不总是被识别为压缩文件。 只能使用普通文件名字符,/\*?[|<> 是非法的。
'path' 'pa' E343 E345 E347 E854 'path' 'pa' 字符串(默认 ".,,") 全局 或 缓冲区局部 global-local 当使用 gf、[f, ]f、^Wf、:find:sfind:tabfind 和其他命令时,这将是一个要搜索的目录列表,前提是被搜索的文件具有相对路径(不以 "/"、"./ "或 "../" 开头)。 'path' 选项中的目录可以是相对路径或绝对路径。
用逗号分隔目录名
set path=.,/usr/local/include,/usr/include
也可以使用空格分隔目录名。 要在目录名中包含空格,请在空格前加一个反斜杠,并对空格进行转义
set path=.,/dir/with\\\ space
要在目录名中包含逗号,请在逗号前加一个反斜杠
set path=.,/dir/with\\,comma
要相对于当前文件的目录进行搜索,请使用
set path=.
要在当前目录中搜索,请在两个逗号之间使用空字符串
set path=,,
目录名可以以 ":" 或 "/" 结尾。
环境变量将被展开 :set_env
使用 netrw.vim 时,可以使用 URL。 例如,添加 "https://www.vim.org" 将使 ":find index.html" 正常工作。
在目录树中向上和向下搜索,使用 "*"、"**" 和 ";"。 请参阅 file-searching 获取信息和语法。
注意 '\' 字符,在选项中输入两次才能得到一次
set path=.,c:\\include
或者直接使用 '/'
set path=.,c:/include
不要忘记 "。",否则即使在与文件相同的目录中也无法找到文件! 最大长度有限制。 具体取决于系统,通常是 256 或 1024 个字符左右。 您可以使用 'path' 的值检查是否找到了所有包含文件,请参阅 :checkpath。 在向列表中添加或删除目录时,建议使用 :set+=:set-=。 这可以避免在将来的版本中使用另一个默认值时出现问题。 要删除当前目录,请使用
set path-=
要添加当前目录,请使用
set path+=
要使用环境变量,您可能需要替换分隔符。 以下是如何将 $INCL 附加到末尾的示例,其中目录名用分号分隔
let &path = &path .. "," .. substitute($INCL, ';', ',', 'g')
用 ":" 或任何其他分隔符替换 ";"。 请注意,当 $INCL 包含逗号或空格时,此方法无效。
'preserveindent' 'pi' 'nopreserveindent' 'nopi' 'preserveindent' 'pi' 布尔值(默认关闭) 缓冲区局部 当更改当前行的缩进时,尽可能保留缩进结构。 通常,缩进会被一系列制表符和空格替换,具体取决于需要(除非启用了 'expandtab',在这种情况下,只使用空格)。 启用此选项意味着缩进将尽可能保留现有的缩进字符,并且仅在需要时添加额外的制表符或空格。 'expandtab' 不适用于保留的空白,制表符仍然是制表符。 注意: 当多次使用 ">>" 时,结果缩进将是制表符和空格的混合。 您可能不喜欢这样。 另请参阅 'copyindent'。 使用 :retab 清理空白。
'previewheight' 'pvh' 'previewheight' 'pvh' 数字(默认 12) 全局 预览窗口的默认高度。 用于 :ptag 和相关命令。 当没有给出计数时,用于 CTRL-W_}
'previewwindow' 'pvw' 'nopreviewwindow' 'nopvw' E590 'previewwindow' 'pvw' 布尔值(默认关闭) 窗口局部 local-noglobal 标识预览窗口。 只能有一个窗口设置了此选项。 它通常不是直接设置的,而是通过使用 :ptag:pedit 等命令之一设置的。
'pumblend' 'pb' 'pumblend' 'pb' 数字(默认 0) 全局 为 弹出菜单 启用伪透明度。 有效值范围为 0(完全不透明的弹出菜单(禁用))到 100(完全透明的背景)。 0-30 之间的值通常最有帮助。
可以使用 highlight-blend 覆盖弹出菜单中各个高亮显示的级别。 例如,要启用透明度,但强制当前选定元素完全不透明
set pumblend=15
hi PmenuSel blend=0
取决于 UI。最适合 RGB 颜色。 'termguicolors'
'pumheight' 'ph' 'pumheight' 'ph' 数字 (默认值 0) 全局 弹出菜单 (ins-completion-menu) 中要显示的最大项目数。零表示“使用可用屏幕空间”。
'pumwidth' 'pw' 'pumwidth' 'pw' 数字 (默认值 15) 全局 弹出菜单 (ins-completion-menu) 的最小宽度。如果光标列 + 'pumwidth' 超过屏幕宽度,则弹出菜单会向内调整以适合屏幕。
'pyxversion' 'pyx' 'pyxversion' 'pyx' 数字 (默认值 3) 全局 指定用于 pyx* 函数和命令 python_x 的 python 版本。由于仅支持 Python 3,因此始终具有值 3。设置任何其他值都是错误。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'quickfixtextfunc' 'qftf' 'quickfixtextfunc' 'qftf' 字符串 (默认值 "") 全局 此选项指定一个函数,用于获取在 quickfix 和 location 列表窗口中显示的文本。这可以用于自定义 quickfix 或 location 窗口中针对相应 quickfix 或 location 列表中的每个条目的显示信息。有关如何编写函数和示例,请参见 quickfix-window-function。该值可以是函数名、lambdaFuncref。有关详细信息,请参见 option-value-function
出于安全原因,此选项不能从 modelinesandbox 中设置。
'quoteescape' 'qe' 'quoteescape' 'qe' 字符串 (默认值 "\") 局部于缓冲区 用于在字符串中转义引号的字符。用于 a'、a" 和 a` 等对象 a'。当在此选项中找到某个字符时,将跳过下一个字符。默认值使文本“foo\"bar\\”被视为一个字符串。
'readonly' 'ro' 'noreadonly' 'noro' 'readonly' 'ro' 布尔值 (默认值关闭) 局部于缓冲区 local-noglobal 如果打开,除非使用“!”,否则写入操作将失败。保护您免于意外覆盖文件。当 Vim 以只读模式 (“vim -R”) 启动或可执行文件名为“view”时,默认情况下打开。当使用“:w!”时,除非“Z”标志在 'cpoptions' 中,否则会重置当前缓冲区的 'readonly' 选项。当使用“:view”命令时,将为新编辑的缓冲区设置 'readonly' 选项。有关禁止更改缓冲区的内容,请参见 'modifiable'
'redrawdebug' 'rdb' 'redrawdebug' 'rdb' 字符串 (默认值 "") 全局 用于更改重绘工作方式的标志,用于调试目的。最适合与 'writedelay' 设置为某个合理值一起使用。支持以下标志: compositor 用颜色短暂闪烁重绘的区域,以指示重绘类型,以指示由合成器处理的每个重绘事件。这些是使用的突出显示组(及其默认颜色): RedrawDebugNormal gui=reverse 通过的正常重绘 RedrawDebugClear guibg=Yellow 通过的清除事件 RedrawDebugComposed guibg=Green 由合成器修改的重绘事件(由于重叠网格等) RedrawDebugRecompose guibg=Red 由合成器本身生成的重绘,由于网格移动或删除。 line 在屏幕上绘制每行之后引入延迟。当使用 TUI 或其他单网格 UI 时,“compositor”提供更多信息,应优先使用(每行都被合成器作为单独的事件处理) flush 在每个“flush”事件之后引入延迟。 nothrottle 关闭消息网格的限制。这是一种优化,它在绘制消息区域时将许多小的滚动合并为一个更大的滚动(使用 'display' msgsep 标志处于活动状态)。 invalid 启用对内部屏幕状态不一致的更严格检查(中止)。这主要在使用调试器(以及测试套件)运行 nvim 时很有用。 nodelta 将所有内部重绘的单元格发送到 UI,即使它们与已显示的状态相同。
'redrawtime' 'rdt' 'redrawtime' 'rdt' 数字 (默认值 2000) 全局 重绘显示的时间(以毫秒为单位)。适用于 'hlsearch''inccommand':match 突出显示和语法突出显示。当重绘耗时超过此毫秒数时,将不再突出显示其他匹配项。对于语法突出显示,该时间适用于每个窗口。当超过限制时,语法突出显示将被禁用,直到使用 CTRL-L 为止。这用于避免 Vim 在使用非常复杂的模式时挂起。
'regexpengine' 're' 'regexpengine' 're' 数字 (默认值 0) 全局 这将选择默认的正则表达式引擎。 two-engines 可能的值为: 0 自动选择 1 旧引擎 2 NFA 引擎 请注意,当使用 NFA 引擎并且模式包含不受支持的内容时,模式将不匹配。这仅对调试正则表达式引擎很有用。使用自动选择使 Vim 能够切换引擎,如果默认引擎变得过于昂贵。例如,当 NFA 引擎使用过多的状态时。这应该可以防止 Vim 在复杂模式与长文本的组合下挂起。
'relativenumber' 'rnu' 'norelativenumber' 'nornu' 'relativenumber' 'rnu' 布尔值 (默认值关闭) 局部于窗口 在每行前面显示相对于带有光标的行号。相对行号可帮助您使用可以放在某些垂直移动命令(例如 j k + -)之前的 count,而无需自己计算。在与其他命令(例如 y d c < > gq gw =)结合使用时尤其有用。当“n”选项从 'cpoptions' 中排除时,换行行将不会使用行号的列。 'numberwidth' 选项可用于设置用于行号的空间。当长换行行不是从第一个字符开始时,“-”字符将放在数字之前。有关用于数字的突出显示,请参见 hl-LineNrhl-CursorLineNr
光标行之前的数字还取决于 'number' 的值,请参见 number_relativenumber,了解这两个选项的所有组合。
'report'
'report' 数字 (默认值 2) 全局 报告更改的行数的阈值。当更改的行数超过 'report' 时,将针对大多数“:”命令显示消息。如果要始终显示,请将 'report' 设置为 0。对于“:substitute”命令,将使用替换次数而不是行数。
'revins' 'ri' 'norevins' 'nori' 'revins' 'ri' 布尔值 (默认值关闭) 全局 在插入模式下插入字符将反向工作。请参见“反向键入” ins-reverse。当 'allowrevins' 设置后,可以在插入模式下使用 CTRL-_ 命令切换此选项。
'rightleft' 'rl' 'norightleft' 'norl' 'rightleft' 'rl' 布尔值 (默认值关闭) 局部于窗口 打开时,显示方向变为从右到左,即文件中存储的字符从右到左出现。使用此选项,可以编辑从右到左书写的语言(例如希伯来语和阿拉伯语)的文件。此选项针对每个窗口,因此可以同时编辑混合文件,或以两种方式查看同一个文件(当您有一个包含从右到左和从左到右字符串的混合文本文件时,这很有用,以便这两组字符串都可以在不同的窗口中正确显示)。另请参见 rileft.txt
'rightleftcmd' 'rlc' 'rightleftcmd' 'rlc' 字符串 (默认值“search”) 局部于窗口 此选项中的每个单词都使命令行编辑能够为一组命令以从右到左的模式工作
搜索“/”和“?”命令
这对于希伯来语、阿拉伯语和波斯语等语言很有用。必须设置 'rightleft' 选项,'rightleftcmd' 才能生效。
'ruler' 'ru' 'noruler' 'noru' 'ruler' 'ru' 布尔值 (默认值打开) 全局 显示光标位置的行号和列号,用逗号分隔。如果空间足够,则在最右侧显示显示文本在文件中的相对位置: Top 最初可见行 Bot 最后可见行 All 最初和最后可见行 45% 文件中的相对位置 如果设置了 'rulerformat',它将确定标尺的内容。每个窗口都有自己的标尺。如果窗口有状态行,则标尺将在状态行中显示。如果窗口没有状态行并且 'cmdheight' 为零,则标尺不会显示。否则,它将显示在屏幕的最后一行。如果状态行由 'statusline' 提供(即不为空),则此选项优先于 'ruler''rulerformat'。如果显示的字符数与文本中的字节数不同(例如,对于 TAB 或多字节字符),则文本列(字节号)和屏幕列都会显示,用连字符分隔。对于空行,将显示“0-1”。对于空缓冲区,行号也将为零:“0,0-1”。如果您不想始终看到标尺,但想知道自己身在何处,请使用“g CTRL-Gg_CTRL-G
'rulerformat' 'ruf' 'rulerformat' 'ruf' 字符串 (默认值 "") 全局 当此选项不为空时,它将确定标尺字符串的内容,如 'ruler' 选项所示。此选项的格式类似于 'statusline'。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
默认标尺宽度为 17 个字符。要使标尺宽度为 15 个字符,请在开头放置“%15(”,在结尾放置“%)”。示例
set rulerformat=%15(%c%V\ %p%%%)
'runtimepath' 'rtp' vimfiles 'runtimepath' 'rtp' 字符串 (默认 "$XDG_CONFIG_HOME/nvim, $XDG_CONFIG_DIRS[1]/nvim, $XDG_CONFIG_DIRS[2]/nvim, … $XDG_DATA_HOME/nvim[-data]/site, $XDG_DATA_DIRS[1]/nvim/site, $XDG_DATA_DIRS[2]/nvim/site, … $VIMRUNTIME, … $XDG_DATA_DIRS[2]/nvim/site/after, $XDG_DATA_DIRS[1]/nvim/site/after, $XDG_DATA_HOME/nvim[-data]/site/after, … $XDG_CONFIG_DIRS[2]/nvim/after, $XDG_CONFIG_DIRS[1]/nvim/after, $XDG_CONFIG_HOME/nvim/after") 全局 用于搜索以下运行时文件的目录列表: filetype.lua 文件类型 new-filetype autoload/ 自动加载的脚本 autoload-functions colors/ 颜色方案文件 :colorscheme compiler/ 编译器文件 :compiler doc/ 文档 write-local-help ftplugin/ 文件类型插件 write-filetype-plugin indent/ 缩进脚本 indent-expression keymap/ 键映射文件 mbyte-keymap lang/ 菜单翻译 :menutrans lua/ Lua plugins menu.vim GUI 菜单 menu.vim pack/ 包 :packadd parser/ treesitter 语法解析器 plugin/ 插件脚本 write-plugin queries/ treesitter 查询 rplugin/ remote-plugin 脚本 spell/ 拼写检查文件 spell syntax/ 语法文件 mysyntaxfile tutor/ 教程文件 :Tutor
以及使用 :runtime 命令搜索到的任何其他文件。
默认设置将搜索以下位置: 1. 您的主目录,用于个人偏好。由 stdpath("config") 提供。 $XDG_CONFIG_HOME 2. 必须包含配置文件的目录,根据 xdg ($XDG_CONFIG_DIRS,默认值为 /etc/xdg)。这也包含来自系统管理员的偏好。 3. 数据主目录,用于用户安装的插件。由 stdpath("data")/site 提供。 $XDG_DATA_HOME 4. 每个 $XDG_DATA_DIRS 目录的 nvim/site 子目录。这是针对系统管理员安装但不是 Nvim 发行版一部分的插件。XDG_DATA_DIRS 默认值为 /usr/local/share/:/usr/share/,因此系统管理员应将站点插件安装到 /usr/share/nvim/site。 5. 会话状态目录,用于交换、备份目录、查看目录、撤销目录等状态数据。由 stdpath("state") 提供。 $XDG_STATE_HOME 6. $VIMRUNTIME,用于随 Nvim 分发的文件。 after-directory
7, 8, 9, 10. 在 1, 2, 3 和 4 的 after/ 子目录中,顺序相反。这是为了覆盖或添加分布式默认值或系统范围设置的偏好(很少需要)。
packages-runtimepath
"start" 包也会在这些之后搜索运行时文件 (runtime-search-path),尽管此类包不会在 &runtimepath 中明确报告。但 :packadd 会将 "opt" 包明确添加到 &runtimepath 中。
注意,与 'path' 不同,不允许使用 "**" 之类的通配符。允许使用普通通配符,但这会显着减慢搜索运行时文件的速度。为了提高速度,请尽可能少使用项目并避免通配符。请参阅 :runtime。示例
set runtimepath=~/vimruntime,/mygroup/vim,$VIMRUNTIME
这将首先使用目录 "~/vimruntime"(包含您的个人 Nvim 运行时文件),然后使用 "/mygroup/vim",最后使用 "$VIMRUNTIME"(默认运行时文件)。您可以在 $VIMRUNTIME 之前放置一个目录来查找替换分布式运行时文件的文件。您可以在 $VIMRUNTIME 之后放置一个目录来查找添加到分布式运行时文件的文件。
使用 --clean 时,不会包含主目录条目。
'scroll' 'scr' 'scroll' 'scr' 数字 (默认值是窗口高度的一半) 局部 到窗口 local-noglobal 使用 CTRL-UCTRL-D 命令滚动时滚动的行数。当窗口大小更改时,将设置为窗口中行数的一半。这可能会在启用 status-line'tabline' 选项后设置 'scroll' 选项时发生。如果您为 CTRL-UCTRL-D 命令提供计数,它将用作 'scroll' 的新值。使用 ":set scroll=0" 重置为窗口高度的一半。
'scrollback' 'scbk' 'scrollback' 'scbk' 数字 (默认 10000) 局部 到缓冲区 保留超出可见屏幕的行的最大数量。如果新行超过此限制,则顶部行将被删除。最小值为 1,最大值为 100000。仅在 terminal 缓冲区中。
注意: 保留在滚动回退中的不可见行在终端缓冲区水平调整大小后不会重新排版。
'scrollbind' 'scb' 'noscrollbind' 'noscb' 'scrollbind' 'scb' 布尔值 (默认关闭) 局部 到窗口 另请参阅 scroll-binding。当此选项设置时,滚动当前窗口也会滚动其他 scrollbind 窗口(也设置了此选项的窗口)。此选项对于查看文件的两个版本的差异很有用,请参阅 'diff'。请参阅 'scrollopt',了解确定此选项解释方式的选项。此选项在拆分窗口以编辑另一个文件时主要被重置。这意味着 ":split | edit file" 会产生两个具有滚动绑定的窗口,但 ":split file" 不会。
'scrolljump' 'sj' 'scrolljump' 'sj' 数字 (默认 1) 全局 当光标移出屏幕(例如,使用 "j")时滚动的最小行数。不适用于滚动命令(例如,CTRL-ECTRL-D)。如果您的终端滚动速度很慢,则很有用。当设置为从 -1 到 -100 的负数时,此值用作窗口高度的百分比。因此,-50 会滚动窗口高度的一半。
'scrolloff' 'so' 'scrolloff' 'so' 数字 (默认 0) 全局 或 局部 到窗口 global-local 保留在光标上方的最小屏幕行数。这将使您工作周围的一些上下文可见。如果您将其设置为非常大的值(999),则光标行将始终位于窗口的中间(除了在文件开头或结尾或长行换行时)。使用局部值后,使用以下两个选项之一返回全局值
setlocal scrolloff<
setlocal scrolloff=-1
有关水平滚动,请参阅 'sidescrolloff'
'scrollopt' 'sbo' 'scrollopt' 'sbo' 字符串 (默认 "ver,jump") 全局 这是一个逗号分隔的单词列表,它指定了 'scrollbind' 窗口的行为方式。 'sbo' 代表 ScrollBind 选项。以下单词可用: ver 为 'scrollbind' 窗口绑定垂直滚动 hor 为 'scrollbind' 窗口绑定水平滚动 jump 适用于两个窗口之间的垂直滚动偏移量。该偏移量是绑定窗口中第一个显示行的差异。当在窗口中移动时,另一个 'scrollbind' 窗口可能会达到缓冲区开头之前或结尾之后的位置。但是,偏移量不会改变,当移回时,'scrollbind' 窗口将尝试尽可能滚动到所需位置。现在将该窗口设置为当前窗口时,可以通过以下两种方式处理相对偏移量: 1. 当不包含 "jump" 时,会根据新当前窗口中的滚动位置调整相对偏移量。当返回另一个窗口时,将使用新的相对偏移量。 2. 当包含 "jump" 时,其他窗口会滚动以保持相同的相对偏移量。当返回另一个窗口时,它仍然使用相同的相对偏移量。另请参阅 scroll-binding。当 'diff' 模式处于活动状态时,即使没有 "ver",也会始终存在垂直滚动绑定。
'sections' 'sect' 'sections' 'sect' 字符串 (默认 "SHNHH HUnhsh") 全局 指定分隔部分的 nroff 宏。这些是两个字母的配对(参见 object-motions)。默认情况下,部分从 nroff 宏 ".SH"、".NH"、".H"、".HU"、".nh" 和 ".sh" 开始。
'selection' 'sel' 'selection' 'sel' 字符串 (默认 "inclusive") 全局 此选项定义选择的行为。它仅在 Visual 和 Select 模式中使用。可能的值
值 超过行 包含
旧的 否 是 包含 是 是 排他 是 否 "超过行" 表示光标允许定位在行尾之后一个字符。 "包含" 表示选择中的最后一个字符包含在操作中。例如,当使用 "x" 删除选择时。当使用 "old" 并且 'virtualedit' 允许光标移动到行尾之后时,换行符仍然不包含在内。请注意,当使用 "exclusive" 并从末尾向后选择时,您不能包含行的最后一个字符,当从 Normal 模式开始并且 'virtualedit' 为空时。
'selectmode' 'slm' 'selectmode' 'slm' 字符串 (默认 "") 全局 这是一个逗号分隔的单词列表,它指定了在启动选择时何时启动 Select 模式而不是 Visual 模式。可能的值: mouse 当使用鼠标键时 当使用带 shift 键的特殊键时 cmd 当使用 "v"、"V" 或 CTRL-V 时 请参阅 Select-mode
'sessionoptions' 'ssop' 'sessionoptions' 'ssop' 字符串 (默认 "blank,buffers,curdir,folds,help,tabpages,winsize,terminal") 全局 更改 :mksession 命令的效果。它是一个逗号分隔的单词列表。每个单词都启用保存和恢复某些内容
词 保存和恢复
空白的空窗口缓冲区隐藏并卸载缓冲区,不仅限于窗口当前目录中的缓冲区。当前目录手动创建的折叠、打开/关闭的折叠和本地折叠选项。全局变量,以大写字母开头且至少包含一个小写字母的全局变量。只存储字符串和数字类型。帮助帮助窗口本地选项 本地到窗口或缓冲区的选项和映射(不是本地选项的全局值)。选项 所有选项和映射(包括本地选项的全局值)。skiprtp 从选项中排除 'runtimepath''packpath'。调整大小 Vim 窗口的大小:'lines''columns'。sesdir 会话文件所在的目录将成为当前目录(对于从不同系统通过网络访问的项目很有用)。tabpages 所有标签页;没有这个选项,只恢复当前标签页,这样你就可以分别为每个标签页创建一个会话。terminal 包括可以恢复命令的终端窗口。winpos 整个 Vim 窗口的位置。winsize 窗口大小。slash 已弃用 始终启用。在文件名中使用“/”。unix 已弃用 始终启用。使用“\n”行结尾。
不要同时包含“curdir”和“sesdir”。当两者都不包含时,文件名将存储为绝对路径。如果你省略了“options”,许多东西在恢复会话后将无法正常工作。
'shada' 'sd' E526 E527 E528 'shada' 'sd' 字符串 (Win32 默认值:!,'100,<50,s10,h,rA:,rB: 其他:!,'100,<50,s10,h) 全局 非空时,在启动时读取 shada 文件,并在退出 Vim 时写入 (参见 shada-file)。字符串应为逗号分隔的参数列表,每个参数由一个字符标识特定参数,后跟一个指定该参数值的数字或字符串。如果省略了特定字符,则使用默认值作为该参数的值。以下是标识字符及其值的影响列表。
字符 值
shada-!
! 包含时,保存并恢复以大写字母开头且不包含小写字母的全局变量。因此,"KEEPTHIS" 和 "K_L_M" 会被存储,但 "KeepThis" 和 "_K_L_M" 不会。嵌套的列表和字典项可能无法正确读回,你最终会得到一个空项。 shada-quote
" 每个寄存器保存的最大行数。旧名称为 '<' 项,缺点是你需要在引号前加一个反斜杠,否则它会被识别为注释的开始! shada-%
% 包含时,保存并恢复缓冲区列表。如果 Vim 以文件名参数启动,则不会恢复缓冲区列表。如果 Vim 在没有文件名参数的情况下启动,则从 shada 文件恢复缓冲区列表。快速修复 ('buftype')、未列出 ('buflisted')、未命名和可移动介质上的缓冲区 (shada-r) 不会保存。如果后面跟着一个数字,则该数字指定存储的缓冲区的最大数量。如果没有数字,则存储所有缓冲区。 shada-'
' 记住的先前编辑文件的最大数量,用于记住标记。当 'shada' 非空时,此参数必须始终包含。包含此项还意味着 跳转列表更改列表 会存储在 shada 文件中。 shada-/
/ 要保存的搜索模式历史记录中的最大项数。如果非零,则还保存先前的搜索和替换模式。如果未包含,则使用 'history' 的值。 shada-:
: 要保存的命令行历史记录中的最大项数。如果未包含,则使用 'history' 的值。 shada-<
< 每个寄存器保存的最大行数。如果为零,则不保存寄存器。如果未包含,则保存所有行。'"' 是此项的旧名称。另请参见下面的 's' 项:以 KiB 为单位指定限制。 shada-@
@ 要保存的输入行历史记录中的最大项数。如果未包含,则使用 'history' 的值。 shada-c
c 虚拟选项,保留用于兼容性原因。没有实际效果:ShaDa 始终使用 UTF-8,'encoding' 值也固定为 UTF-8。 shada-f
f 文件标记是否需要存储。如果为零,则不存储文件标记 ('0 到 '9、'A 到 'Z)。如果不存在或非零,则存储所有标记。'0 用于当前光标位置(退出时或执行 :wshada 时)。 shada-h
h 在加载 shada 文件时禁用 'hlsearch' 的效果。如果未包含,则取决于自上次搜索命令以来是否使用了 ":nohlsearch"。 shada-n
n shada 文件的名称。名称必须紧随 'n'。必须位于选项的末尾!如果设置了 'shadafile' 选项,则该文件名将覆盖此处使用 'shada' 给出的文件名。打开文件时会扩展环境变量,而不是设置选项时。 shada-r
r 可移动介质。参数为字符串(直到下一个 ',')。此参数可以多次给出。每个参数指定路径的起点,该路径不会存储任何标记。这是为了避免可移动介质。对于 Windows,你可以使用 "ra:,rb:"。你也可以将其用于临时文件,例如,对于 Unix:"r/tmp"。大小写被忽略。 shada-s
s 项内容的最大大小(以 KiB 为单位)。如果为零,则不保存任何内容。与 Vim 不同,这适用于所有项目,但缓冲区列表和标题除外。完整项大小会偏移三个无符号整数:如果使用 s10,则最大项大小可能是 1 字节(类型:7 位整数)+ 9 字节(时间戳:最多 64 位整数)+ 3 字节(项大小:最多 16 位整数,因为 2^8 < 10240 < 2^16)+ 10240 字节(请求的最大项内容大小)= 10253 字节。
示例
set shada='50,<1000,s100,:0,n~/nvim/shada
'50 将记住你编辑的最后 50 个文件的标记。<1000 将记住寄存器的内容(每个最多 1000 行)。s100 内容占用超过 100 KiB 的项将被跳过。:0 不会保存命令行历史记录。n~/nvim/shada 要使用的文件名是 "~/nvim/shada"。no / 由于 '/' 未指定,因此将使用默认值,即保存所有搜索历史记录,以及先前的搜索和替换模式。no % 不会保存或读回缓冲区列表。no h 将恢复 'hlsearch' 高亮显示。
从空值设置 'shada' 时,你可以使用 :rshada 加载文件内容,这不会自动执行。
出于安全原因,此选项不能从 modelinesandbox 中设置。
'shadafile' 'sdf' 'shadafile' 'sdf' 字符串 (默认 "") 全局 非空时,将覆盖用于 shada (viminfo) 的文件名。如果等于 "NONE",则不会读取或写入 shada 文件。此选项可以使用 -i 命令行标志设置。--clean 命令行标志将其设置为 "NONE"。出于安全原因,此选项不能从 模式行沙箱 中设置。
'shell' 'sh' E91 'shell' 'sh' 字符串 (默认 $SHELL 或 "sh",Win32: "cmd.exe") 全局 用于 ! 和 :! 命令的 shell 的名称。更改值时,还要检查以下选项:'shellpipe''shellslash' 'shellredir''shellquote''shellxquote''shellcmdflag'。允许给命令传递一个参数,例如 "csh -f"。参见 option-backslash,了解如何包含空格和反斜杠。环境变量会扩展 :set_env
如果 shell 的名称包含空格,你需要用引号将其括起来。带引号的示例
set shell=\"c:\program\ files\unix\sh.exe\"\ -f
注意每个引号之前的反斜杠(避免开始注释)和每个空格(避免结束选项值),因此最好使用 :let-&,像这样
let &shell='"C:\Program Files\unix\sh.exe" -f'
还要注意,“-f” 不在引号内,因为它不是命令名称的一部分。 shell-unquoting
关于引号的规则:1. 选项在空格和制表符字符上拆分,这些字符不在引号内:"abc def" 运行名为 "abc" 的 shell,并带有额外的参数 "def",'"abc def"' 运行名为 "abc def" 的 shell,没有额外的参数(此处和下面:额外表示“除了 'shellcmdflag' 之外的”)。2. 选项中的引号可以出现在任何位置,任何数量:'"abc"', '"a"bc', 'a"b"c', 'ab"c"' 和 '"a"b"c"' 都等效于 "abc"。3. 在引号内,反斜杠前跟反斜杠表示一个反斜杠。反斜杠前跟引号表示一个引号。反斜杠前跟任何其他字符表示反斜杠和下一个字符字面意义:'"a\\b"' 与 "a\b" 相同,'"a\\"b"' 运行名为 'a"b' 的 shell,'"a\b"' 与 "a\b" 相同。4. 在引号之外,反斜杠始终表示自身,它不能用于转义引号:'a\"b"' 与 "a\b" 相同。请注意,这种处理是在 :set 完成其自身的转义取消处理之后完成的,因此为了保持理智,请使用 :let-&,如上所示。 shell-powershell
要使用 PowerShell
let &shell = executable('pwsh') ? 'pwsh' : 'powershell'
let &shellcmdflag = '-NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues[''Out-File:Encoding'']=''utf8'';$PSStyle.OutputRendering=''plaintext'';Remove-Alias -Force -ErrorAction SilentlyContinue tee;'
let &shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode'
let &shellpipe  = '2>&1 | %%{ "$_" } | tee %s; exit $LastExitCode'
set shellquote= shellxquote=
出于安全原因,此选项不能从 modelinesandbox 中设置。
'shellcmdflag' 'shcf' 'shellcmdflag' 'shcf' 字符串 (默认 "-c";Windows: "/s /c") 全局 传递给 shell 的标志,用于执行 "!" 和 ":!" 命令;例如,bash.exe -c lscmd.exe /s /c "dir"。对于 MS-Windows,默认值根据 'shell' 的值设置,以减少用户需要设置此选项的次数。在 Unix 上,它可以有多个标志。每个空格分隔的部分都作为参数传递给 shell 命令。参见 option-backslash,了解如何包含空格和反斜杠。参见 shell-unquoting,它讨论了将此选项拆分为多个参数。出于安全原因,此选项不能从 模式行沙箱 中设置。
'shellpipe' 'sp' 'shellpipe' 'sp' 字符串 (默认 ">", "| tee", "|& tee" 或 "2>&1| tee") 全局 用于将 ":make" 命令的输出放到错误文件中的字符串。另请参见 :make_makeprg。有关包含空格和反斜杠的信息,请参见 option-backslash。如果需要,临时文件的名 称可以用 "%s" 表示(如果此选项的值中没有出现 %s,则会自动附加文件名)。对于 MS-Windows,默认值为 "2>&1| tee"。stdout 和 stderr 会保存在一个文件中, 并回显到屏幕上。对于 Unix,默认值为 "| tee"。编译器的 stdout 会保存在一个文件中,并回显到屏幕上。如果 'shell' 选项在初始化后为 "csh" 或 "tcsh",则默认值将变为 "|& tee"。如果 'shell' 选项为 "sh"、"ksh"、"mksh"、"pdksh"、"zsh"、"zsh-beta"、"bash"、"fish"、"ash" 或 "dash",则默认值将变为 "2>&1| tee"。这意味着 stderr 也 将被包含在内。在使用 'shell' 选项之前,会删除路径,因此 "/bin/sh" 会使用 "sh"。此选项的初始化是在读取 vimrc 和其他初始化之后完成的,因此 当在其中设置 'shell' 选项时,'shellpipe' 选项会自动更改,除非它之前已显式设置。当 'shellpipe' 设置为空字符串时,不会进行 ":make" 输出的重定向。如果使用自己写入 'makeef''makeprg',则此功能很有用。如果不需要管道,但需要包含 'makeef',请将 'shellpipe' 设置为单个空格。不要忘记在空格前面加上一个反斜杠:":set sp=\ "。将来,管道可能会用于过滤,而此选项 将过时(至少对于 Unix 而言)。出于安全原因,此选项不能从 modelinesandbox 中设置。
'shellquote' 'shq' 'shellquote' 'shq' 字符串 (默认 ""; Windows,当 'shell' somewhere: "\"") 全局 引用字符,放置在传递给 shell 的命令周围,用于 "!" 和 ":!" 命令。重定向保留在引用之外。请参见 'shellxquote' 以包含重定向。同时设置这两个选项可能没有用。默认情况下,它是空字符串。仅知对于 Windows 系统上的第三方 shell(如 MKS Korn Shell 或 bash)有用,在这些 shell 上,它应该为 "\"。默认值会根据 'shell' 的值进行调整,以减少用户设置此选项的需要。出于安全原因,此选项不能从 modelinesandbox 中设置。
'shellredir' 'srr' 'shellredir' 'srr' 字符串 (默认 ">", ">&" 或 ">%s 2>&1") 全局 用于将过滤器命令的输出放到临时文件中的字符串。另请参见 :!。有关包含空格和反斜杠的信息,请参见 option-backslash。如果需要,临时文件的名 称可以用 "%s" 表示(如果此选项的值中没有出现 %s,则会自动附加文件名)。默认值为 ">"。对于 Unix,如果 'shell' 选项在初始化期间为 "csh" 或 "tcsh",则默认值将变为 ">&"。如果 'shell' 选项为 "sh"、"ksh"、"mksh"、"pdksh"、"zsh"、"zsh-beta"、"bash" 或 "fish",则默认值将变为 ">%s 2>&1"。这意味着 stderr 也 将被包含在内。对于 Win32,会执行 Unix 检查,并且还会检查 "cmd",这使得默认值为 ">%s 2>&1"。此外,还会检查相同名称及其附加 ".exe" 的名称。此选项的初始化是在读取 vimrc 和其他初始化之后完成的,因此 当在其中设置 'shell' 选项时,'shellredir' 选项会自动更改,除非它之前已显式设置。将来,管道可能会用于过滤,而此选项 将过时(至少对于 Unix 而言)。出于安全原因,此选项不能从 modelinesandbox 中设置。
'shellslash' 'ssl' 'noshellslash' 'nossl' 'shellslash' 'ssl' 布尔值 (默认关闭) 全局 仅适用于 MS-Windows 当设置此选项时,在扩展文件名时会使用正斜杠。当使用类 Unix Shell 代替 cmd.exe 时,这很有用。仍然 可以键入反斜杠,但 Vim 会将其更改为正斜杠。请注意,设置或重置此选项对某些现有文件名没有影响,因此此选项需要 在打开任何文件之前设置,才能获得最佳效果。这将来可能会改变。'shellslash' 仅在可以使用反斜杠作为路径分隔符时才有效。要测试是否如此,请使用
if exists('+shellslash')
另请参见 'completeslash'
'shelltemp' 'stmp' 'noshelltemp' 'nostmp' 'shelltemp' 'stmp' 布尔值 (默认开启) 全局 当开启时,对 shell 命令使用临时文件。当关闭时,使用管道。当无法使用管道时,无论如何都会使用临时文件。使用管道的优点 是没有人可以读取临时文件,并且 'shell' 命令不需要支持重定向。使用临时文件的优点 是可以检测文件类型和编码。FilterReadPreFilterReadPostFilterWritePreFilterWritePost autocommands 事件在 'shelltemp' 关闭时不会触发。system() 不 遵守此选项,它始终使用管道。
'shellxescape' 'sxe' 'shellxescape' 'sxe' 字符串 (默认 "") 全局 当 'shellxquote' 设置为 "(" 时,此选项中列出的字符将使用 "^" 字符进行转义。这使得可以使用 cmd.exe 执行大多数外部命令。出于安全原因,此选项不能从 modelinesandbox 中设置。
'shellxquote' 'sxq' 'shellxquote' 'sxq' 字符串 (默认 "", Windows: "\"") 全局 引用字符,放置在传递给 shell 的命令周围,用于 "!" 和 ":!" 命令。包含重定向。请参见 'shellquote' 以排除重定向。同时设置这两个选项可能没有用。当值为 "(" 时,会附加 ")"。当值为 '"(' 时,会附加 ')"'。当值为 "(" 时,另请参见 'shellxescape'。出于安全原因,此选项不能从 modelinesandbox 中设置。
'shiftround' 'sr' 'noshiftround' 'nosr' 'shiftround' 'sr' 布尔值 (默认关闭) 全局 将缩进四舍五入到 'shiftwidth' 的倍数。适用于 > 和 < 命令。CTRL-TCTRL-D 在插入模式下始终将缩进四舍五入到 'shiftwidth' 的倍数(这与 Vi 兼容)。
'shiftwidth' 'sw' 'shiftwidth' 'sw' 数字 (默认 8) 局部 到缓冲区 用于每一步(自动)缩进的空格数。用于 'cindent'>><< 等。当为零时,将使用 'tabstop' 值。使用 shiftwidth() 函数来获取有效的 shiftwidth 值。
'shortmess' 'shm' E1336 'shortmess' 'shm' 字符串 (默认 "ltToOCF") 全局 此选项有助于避免由文件消息引起的所有 hit-enter 提示,例如使用 CTRL-G,并避免一些其他消息。它是一系列标志
标志 含义 当存在时
l 使用 "999L, 888B" 代替 "999 lines, 888 bytes" shm-l m 使用 "[+]" 代替 "[Modified]" shm-m
r 使用 "[RO]" 代替 "[readonly]" shm-r
w 使用 "[w]" 代替 "written" 来表示文件写入消息 shm-w 并且使用 "[a]" 代替 "appended" 来表示 ':w >> file' 命令 a 以上所有缩写 shm-a
o 覆盖写入文件的写入消息,后跟 shm-o 读取文件的后续消息(对于 ":wn" 或当 'autowrite' 开启时很有用) O 读取文件的消息会覆盖任何先前的 shm-O 消息;也用于快速修复消息(例如,":cn") s 不要显示 "search hit BOTTOM, continuing at TOP" 或 shm-s "search hit TOP, continuing at BOTTOM" 消息;当使用搜索计数时,不要显示 "W" 在计数消息之前(请参见下面的 shm-S) t 如果文件消息太长,则在开头截断文件消息,shm-t 以便适合命令行,"<" 将出现在最左边的列中;在 Ex 模式下被忽略 T 如果其他消息太长,则在中间截断其他消息,shm-T 以便适合命令行;"..." 将出现在中间;在 Ex 模式下被忽略 W 写入文件时,不要显示 "written" 或 "[w]" shm-W A 当找到现有 shm-A 交换文件时,不要显示 "ATTENTION" 消息 I 启动 Vim 时,不要显示介绍消息,shm-I
请参见 :intro c 不要显示 ins-completion-menu 消息;对于 shm-c
例如,"-- XXX 完成 (YYY)","匹配 1/2","唯一匹配","未找到模式","返回到原始位置",等等。C 在扫描 ins-completion shm-C 项目时不会显示消息,例如 "正在扫描标签"。q 在录制宏时不会显示 "正在录制 @a" shm-q。F 在编辑文件时不会显示文件信息,例如 shm-F 使用了 :silent 命令;请注意,这也影响来自 'autoread' 的消息,重新加载 S 在搜索时不会显示搜索计数消息,例如 shm-S "[1/5]"。当 "S" 标志不存在时(例如显示搜索计数),"搜索到达底部,继续从顶部开始" 和 "搜索到达顶部,继续从底部开始" 消息只由搜索计数统计信息之前的 "W"(助记符:包裹)字母表示。
这给了你机会避免缓冲区之间的更改需要你按 <Enter>,但仍然为可用空间提供了尽可能有用的消息。要获得使用空 'shm' 时会得到的消息,请使用 ":file!"。有用的值:shm= 没有消息缩写。shm=a 缩写,但不丢失信息。shm=at 缩写,并在必要时截断消息。
'showbreak' 'sbr' E595 'showbreak' 'sbr' 字符串(默认 "")全局或窗口本地 全局-本地 要放在已换行的行的开头。有用的值是 "> " 或 "+++ "。
let &showbreak = "> "
let &showbreak = '+++ '
只允许可打印的单单元格字符,不包括 <Tab> 和逗号(在未来的版本中,逗号可能用于分隔显示在行尾和行首的部分)。hl-NonText 高亮组决定高亮显示。请注意,显示断行后的制表符将以不同的方式显示。如果你想要 'showbreak' 出现在行号之间,请将 "n" 标志添加到 'cpoptions'。窗口本地值会覆盖全局值。如果全局值已设置,并且你希望当前窗口中没有值,请使用 NONE。
setlocal showbreak=NONE
'showcmd' 'sc' 'noshowcmd' 'nosc' 'showcmd' 'sc' 布尔值(默认开启)全局显示(部分)命令在屏幕的最后一行。如果你的终端速度很慢,请将此选项关闭。在 Visual 模式下,将显示选定区域的大小。
当在行内选择字符时,显示字符数。如果字节数不同,也将显示:“2-6”表示两个字符和六个字节。
当选择多行时,显示行数。
当选择块时,显示屏幕字符大小:{lines}x{columns}。可以使用 'showcmdloc' 选项在另一个位置显示此信息,这在 'cmdheight' 为 0 时非常有用。
'showcmdloc' 'sloc' 'showcmdloc' 'sloc' 字符串(默认 "last")全局此选项可用于在另一个位置显示(部分)输入的命令。可能的值是:last 屏幕的最后一行(默认)。statusline 当前窗口的状态栏。tabline 屏幕的第一行,如果 'showtabline' 已启用。将此选项设置为 "statusline" 或 "tabline" 意味着每当命令发生更改时这些将被重绘,这可能在每个键被按下时发生。%S 'statusline' 项目可以在 'statusline''tabline' 中使用来放置文本。如果没有自定义的 'statusline''tabline',它将在一个方便的位置显示。
'showfulltag' 'sft' 'noshowfulltag' 'nosft' 'showfulltag' 'sft' 布尔值(默认关闭)全局在插入模式下从标签文件完成单词时(参见 ins-completion),显示标签名称和整理后的搜索模式形式(如果有)作为可能的匹配项。因此,如果你匹配了一个 C 函数,你就可以看到关于需要哪些参数的模板(编码风格允许)。请注意,这与在 'completeopt' 中使用 "longest" 不太兼容,因为来自搜索模式的完成可能与输入的文本不匹配。
'showmatch' 'sm' 'noshowmatch' 'nosm' 'showmatch' 'sm' 布尔值(默认关闭)全局当插入括号时,短暂跳转到匹配的括号。只有当匹配可以在屏幕上看到时才会进行跳转。显示匹配的时间可以使用 'matchtime' 设置。如果找不到匹配项(无论匹配项是否可见),都会发出蜂鸣声。当 'cpoptions' 中不包含 "m" 标志时,输入字符会立即将光标移回它应该在的位置。有关设置显示匹配时的光标形状和闪烁,请参见 'guicursor' 中的 "sm" 字段。可以使用 'matchpairs' 选项指定要显示匹配项的字符。使用 'rightleft''revins' 来查找相反的匹配项。另请参见 matchparen 插件,该插件在移动时突出显示匹配项 pi_paren.txt 注意:使用简短形式被评为 PG 级。
'showmode' 'smd' 'noshowmode' 'nosmd' 'showmode' 'smd' 布尔值(默认开启)全局如果处于插入、替换或 Visual 模式,则在最后一行显示消息。 hl-ModeMsg 高亮组决定高亮显示。当 'cmdheight' 为零时,此选项无效。
'showtabline' 'stal' 'showtabline' 'stal' 数字(默认 1)全局此选项的值指定何时显示包含标签页标签的行:0:从不 1:只有当至少有两个标签页时 2:始终 这适用于 GUI 和非 GUI 实现的标签页行。有关标签页的更多信息,请参见 标签页
'sidescroll' 'ss' 'sidescroll' 'ss' 数字(默认 1)全局水平滚动的最小列数。仅在 'wrap' 选项关闭且光标移出屏幕时使用。当它为零时,光标将被放在屏幕中央。当使用慢速终端时,将其设置为一个大数字或 0。不适用于 "zh" 和 "zl" 命令。
'sidescrolloff' 'siso' 'sidescrolloff' 'siso' 数字(默认 0)全局或窗口本地 全局-本地 如果 'nowrap' 设置,则光标左侧和右侧保持的最小屏幕列数。将此选项设置为大于 0 的值,同时将 'sidescroll' 也设置为非零值,可以在你水平滚动的行中显示一些上下文(除了行首)。将此选项设置为一个大值(比如 999)的效果是,只要光标没有太靠近行首,就会将光标水平居中在窗口中。使用本地值后,使用以下两个中的一个回到全局值
setlocal sidescrolloff<
setlocal sidescrolloff=-1
示例:与 'sidescroll''listchars' 一起尝试以下示例,以永远不允许光标移动到 "extends" 字符上
set nowrap sidescroll=1 listchars=extends:>,precedes:<
set sidescrolloff=1
'signcolumn' 'scl' 'signcolumn' 'scl' 字符串(默认 "auto")窗口本地何时以及如何绘制符号列。有效值为:"auto" 只有在要显示符号时才显示 "auto:[1-9]" 调整大小以适应多个符号,最多达到给定的数字(最大 9),例如 "auto:4" "auto:[1-8]-[2-9]" 调整大小以适应多个符号,最多达到给定的最大数字(最大 9),同时保持至少给定的最小数字(最大 8)的固定空间。最小数字应该始终小于最大数字,例如 "auto:2-5" "no" 从不 "yes" 始终 "yes:[1-9]" 始终,为最多达到给定数字(最大 9)的符号保留固定空间,例如 "yes:3" "number" 在 'number' 列中显示符号。如果数字列不存在,则表现为 "auto"。
'smartcase' 'scs' 'nosmartcase' 'noscs' 'smartcase' 'scs' 布尔值(默认关闭)全局如果搜索模式包含大写字符,则覆盖 'ignorecase' 选项。仅在搜索模式被键入且 'ignorecase' 选项处于开启状态时使用。用于命令“/”、“?”、“n”、“N”、“:g” 和 “:s”。不适用于“*”、“#”、“gd”、“标签搜索”等。在 “*” 和 “#” 之后,可以通过执行 “/” 命令、从历史记录中调用搜索模式并按 <Enter> 使 'smartcase' 被使用。
'smartindent' 'si' 'nosmartindent' 'nosi' 'smartindent' 'si' 布尔值(默认关闭)缓冲区本地在开始新行时执行智能自动缩进。适用于类似 C 的程序,但也适用于其他语言。 'cindent' 会做类似的事情,在大多数情况下效果更好,但更严格,请参见 C 缩进。当 'cindent' 处于开启状态或 'indentexpr' 设置时,设置 'si' 将不起作用。 'indentexpr' 是一个更高级的替代方案。通常,在使用 'smartindent' 时,'autoindent' 也应该处于开启状态。缩进将自动插入
在以 "{" 结尾的行之后。
在以来自 'cinwords' 的关键字开头的行之后。
在以 "}" 开头的行之前(仅使用 "O" 命令)。当在新的行中键入 '}' 作为第一个字符时,该行将与匹配的 "{" 保持相同的缩进。当在新的行中键入 '#' 作为第一个字符时,该行的缩进将被移除,'#' 将被放在第一列。下一行的缩进将被恢复。如果你不想要这样,请使用以下映射:"inoremap # X^H#",其中 ^H 是通过 CTRL-V CTRL-H 键入的。当使用 ">>" 命令时,以 '#' 开头的行不会向右移动。
'smarttab' 'sta' 'nosmarttab' 'nosta' 'smarttab' 'sta' 布尔值(默认开启) 全局 当开启时,行前的 <Tab> 会根据 'shiftwidth' 插入空格。在其他地方使用 'tabstop''softtabstop'<BS> 将删除一行开头的 'shiftwidth' 个空格。当关闭时,<Tab> 始终根据 'tabstop''softtabstop' 插入空格。'shiftwidth' 仅用于将文本向左或向右移动 shift-left-right。插入的内容(<Tab> 或空格)取决于 'expandtab' 选项。另请参见 ins-expandtab。当 'expandtab' 未设置时,空格数将通过使用 <Tab> 来最小化。
'smoothscroll' 'sms' 'nosmoothscroll' 'nosms' 'smoothscroll' 'sms' 布尔值(默认关闭) 窗口局部 滚动与屏幕行一起工作。当 'wrap' 设置后,窗口中的第一行包裹一部分可能不可见,就好像它在窗口上方。第一行开头将显示 "<<",并以 hl-NonText 突出显示。你可能还想将 "lastline" 添加到 'display' 选项中,以尽可能显示最后一行。 注意: 部分实现,对于 gjgk 还不适用。
'softtabstop' 'sts' 'softtabstop' 'sts' 数字(默认 0) 缓冲区局部 当执行编辑操作(如插入 <Tab> 或使用 <BS>)时,<Tab> 计入的空格数。它 "感觉" 就像插入了 <Tab>,而实际上使用的是空格和 <Tab> 的混合。这有助于将 'ts' 设置保留在标准值 8,同时能够像设置为 'sts' 一样编辑。但是,"x" 等命令仍然适用于实际字符。当 'sts' 为零时,此功能关闭。当 'sts' 为负数时,将使用 'shiftwidth' 的值。另请参见 ins-expandtab。当 'expandtab' 未设置时,空格数将通过使用 <Tab> 来最小化。'cpoptions' 中的 'L' 标志会改变当 'list' 设置时制表符的使用方式。
如果 'varsofttabstop' 设置为非空字符串,则将忽略 'softtabstop' 的值。
'spell' 'nospell' 'spell' 布尔值(默认关闭) 窗口局部 当开启时,将进行拼写检查。参见 spell。语言由 'spelllang' 指定。
'spellcapcheck' 'spc' 'spellcapcheck' 'spc' 字符串(默认 "[.?!]\_[\])'"\t ]\+") 缓冲区局部 用于查找句子结尾的模式。将检查下一个单词是否以大写字母开头。如果不是,则将用 SpellCap hl-SpellCap 突出显示它(除非该单词也拼写错误)。如果不需要此检查,请将此选项留空。仅在 'spell' 设置时使用。小心使用特殊字符,有关包含空格和反斜杠的信息,请参见 option-backslash。有关根据语言自动设置此选项的信息,请参见 set-spc-auto
'spellfile' 'spf' 'spellfile' 'spf' 字符串(默认 "") 缓冲区局部 用于 zgzw 命令添加单词的词典文件名称。它必须以 ".{encoding}.add" 结尾。你需要包含路径,否则文件将被放置在当前目录中。路径可能包含来自 'isfname'、' '、','、'@' 和 ':' 的字符。 E765
它也可以是一个用逗号分隔的名称列表。在 zgzw 命令之前可以添加一个计数,用于访问每个名称。这允许使用个人词典文件和项目词典文件。当此选项为空时添加单词,Vim 将为你设置它:使用 'runtimepath' 中第一个可写的目录。如果还没有 "spell" 目录,它将被创建。对于文件名,将使用 'spelllang' 中出现的第一个语言名称,忽略区域。生成的 ".spl" 文件将用于拼写检查,它不必出现在 'spelllang' 中。通常,所有区域都使用一个文件,但如果你想添加区域名称,你可以添加它。但是,它将仅在 'spellfile' 设置为它时使用,对于 'spelllang' 中的条目,只有没有区域名称的文件会被找到。出于安全原因,此选项不能从 modelinesandbox 中设置。
'spelllang' 'spl' 'spelllang' 'spl' 字符串(默认 "en") 缓冲区局部 一个用逗号分隔的词典名称列表。当 'spell' 选项开启时,将对这些语言进行拼写检查。示例
set spelllang=en_us,nl,medical
这意味着将识别美式英语、荷兰语和医学词汇。未识别的单词将被突出显示。词典名称必须包含字母数字字符、连字符或下划线。它不应包含逗号或点。建议使用连字符将两位字母的语言名称与规范分隔开。因此,"en-rare" 用于识别罕见的英语单词。区域名称必须放在最后,格式为 "_xx",其中 "xx" 是两位字母的小写区域名称。你可以通过列出多个区域来使用多个区域:"en_us,en_ca" 支持美式英语和加拿大英语,但不支持澳大利亚、新西兰或英国的特定词汇。(注意: 目前 en_au 和 en_nz 词典比 en_ca、en_gb 和 en_us 更旧)。如果包含名称 "cjk",则会从拼写检查中排除东亚字符。这在编辑也包含亚洲词语的文本时很有用。请注意,"medical" 词典不存在,它只是较长名称的示例。 E757
作为特殊情况,可以按原样给出 .spl 文件的名称。名称中的第一个 "_xx" 将被移除并用作区域名称(_xx 是一个下划线,两个字母,后面跟着一个非字母)。这主要用于测试目的。你必须确保使用了正确的编码,Vim 不会检查它。此处解释了如何找到相关拼写文件:spell-load
如果 spellfile.vim 插件处于活动状态,并且你使用的语言名称 Vim 在 'runtimepath' 中找不到 .spl 文件,则插件会询问你是否要下载该文件。
此选项成功设置后,Vim 将在 'runtimepath' 中查找 "spell/LANG.vim" 文件。"LANG" 是 'spelllang' 的值,直到第一个不是 ASCII 字母或数字且不是连字符的字符为止。另请参见 set-spc-auto
'spelloptions' 'spo' 'spelloptions' 'spo' 字符串(默认 "") 缓冲区局部 用于拼写检查的选项的逗号分隔列表: camel 当一个单词是 CamelCased 时,假设 "Cased" 是一个单独的单词:单词中每个紧跟在小写字母后的字母表示一个新单词的开始。 noplainbuffer 仅在 'syntax' 启用或缓冲区中设置了 extmark 时才对缓冲区进行拼写检查。在这种情况下,仅对缓冲区的指定区域进行拼写检查。
'spellsuggest' 'sps' 'spellsuggest' 'sps' 字符串(默认 "best") 全局 用于拼写建议的方法。适用于 z= 命令和 spellsuggest() 函数。这是一个用逗号分隔的项目列表
best 内部方法,最适合英语。查找 "fast" 这样的更改,并使用一些类似声音的评分来改进排序。
double 内部方法,使用两种方法并混合结果。第一种方法是 "fast",另一种方法计算建议的词语听起来与错误的词语有多像。这只有在语言指定了声音折叠时才有效。可能很慢,并不总是能给出更好的结果。
fast 内部方法,仅检查简单的更改:字符插入/删除/交换。对于简单的打字错误非常有效。
{number}z= 列出的建议的最大数量。不适用于 spellsuggest()。建议的数量永远不会超过 'lines' 的值减去二。
timeout:{millisec} 将搜索建议的时间限制为 {millisec} 毫秒。适用于以下方法。省略时,限制为 5000。为负数时,无限制。
file:{filename} 读取文件 {filename},该文件必须包含两列,用斜杠分隔。第一列包含错误的单词,第二列包含建议的正确单词。示例
theribal/terrible
将此用于常见的错误,这些错误不会出现在使用内部方法的建议列表的顶部。没有斜杠的行会被忽略,将此用于注释。第二列中的单词必须是正确的,否则将不会使用它。如果它当前被标记为拼写错误,请将该单词添加到 ".add" 文件中。该文件用于所有语言。
expr:{expr} 评估表达式 {expr}。使用函数来避免空格问题。最好是调用无参数的函数,请参阅 expr-option-functionv:val 保存拼写错误的单词。表达式必须计算为一个列表的列表,每个子列表包含一个建议和一个分数。示例
[[the, 33], [that, 44]]
设置 'verbose' 并使用 z= 查看内部方法使用的分数。分数越低越好。如果您暂时将 'spellsuggest' 设置为排除 "expr:" 部分,这可能会调用 spellsuggest()。错误将被静默忽略,除非您将 'verbose' 选项设置为非零值。
只能使用 "best"、"double" 或 "fast" 中的一个。其他选项可以在任何顺序中出现多次。示例
set sps=file:~/.config/nvim/sugg,best,expr:MySuggest()
出于安全原因,此选项不能从 modelinesandbox 中设置。
'splitbelow' 'sb' 'nosplitbelow' 'nosb' 'splitbelow' 'sb' 布尔值(默认关闭)全局 当打开时,拆分窗口会将新窗口放置在当前窗口下方。 :split
'splitkeep' 'spk' 'splitkeep' 'spk' 字符串(默认 "cursor")全局 此选项的值确定打开、关闭或调整水平分割大小时的滚动行为。
可能的值是:cursor 保持相同的相对光标位置。screen 保持文本在同一屏幕行上。topline 保持顶行相同。
对于 "screen" 和 "topline" 值,光标位置将在必要时更改。在这种情况下,跳转列表将填充以前的光标位置。对于 "screen",当 'wrap' 启用时,文本并不总是能保持在同一屏幕行上。
'splitright' 'spr' 'nosplitright' 'nospr' 'splitright' 'spr' 布尔值(默认关闭)全局 当打开时,拆分窗口会将新窗口放置在当前窗口右侧。 :vsplit
'startofline' 'sol' 'nostartofline' 'nosol' 'startofline' 'sol' 布尔值(默认关闭)全局 当 "on" 时,以下列出的命令将光标移动到行的第一个非空白字符。当关闭时,光标将保持在同一列(如果可能)。这适用于以下命令
CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", "gg"
"d"、"<<"、"==" 和 ">>" 与行级操作符 (operator-resulting-pos)
"%" 与计数
缓冲区更改命令 (CTRL-^, :bnext, :bNext 等)
仅包含行号的 Ex 命令,例如,":25" 或 ":+"。在缓冲区更改命令的情况下,光标将放置在上次编辑缓冲区时的列位置。
'statuscolumn' 'stc' 'statuscolumn' 'stc' 字符串(默认 "")特定于窗口 当非空时,此选项确定窗口侧面的区域内容,通常包含折叠、符号和行号列。此选项的格式与 'statusline' 类似。
来自 'statusline' 格式的一些项目在 'statuscolumn' 中有所不同
%l 当前绘制行的行号列 %s 当前绘制行的符号列 %C 当前绘制行的折叠列
'statuscolumn' 的宽度遵循默认列的宽度,并适应 'numberwidth''signcolumn''foldcolumn' 选项值(无论符号和折叠项是否存在)。此外,'statuscolumn' 会随着评估格式字符串的大小而增长,直到达到一定程度(遵循默认折叠、符号和行号列的最大大小)。缩小仅在缓冲区中的行数发生变化或 'statuscolumn' 选项设置时发生。
v:lnum 变量保存要绘制的行号。 v:relnum 变量保存要绘制的相对行号。 v:virtnum 变量在绘制虚拟行时为负,在绘制实际缓冲区行时为零,在绘制缓冲区行的换行部分时为正。
使用 v:relnum 时,请记住,除非设置了 'relativenumber',否则光标移动本身不会导致 'statuscolumn' 更新。
注意:%@ 点击执行函数项也受支持,但指定的函数对同一列中的每一行都相同。它不能通过动态 'statuscolumn' 格式进行切换,处理程序应考虑到这一点。
示例
" Line number with bar separator and click handlers:
set statuscolumn=%@SignCb@%s%=%T%@NumCb@%l│%T
" Line numbers in hexadecimal for non wrapped part of lines:
let &stc='%=%{v:virtnum>0?"":printf("%x",v:lnum)} '
" Human readable line numbers with thousands separator:
let &stc='%{substitute(v:lnum,"\\d\\zs\\ze\\'
           . '%(\\d\\d\\d\\)\\+$",",","g")}'
" Both relative and absolute line numbers with different
" highlighting for odd and even relative numbers:
let &stc='%#NonText#%{&nu?v:lnum:""}' .
 '%=%{&rnu&&(v:lnum%2)?"\ ".v:relnum:""}' .
 '%#LineNr#%{&rnu&&!(v:lnum%2)?"\ ".v:relnum:""}'
警告:此表达式将针对每个屏幕行进行评估,因此定义一个昂贵的表达式可能会对渲染性能产生负面影响。
'statusline' 'stl' E540 E542 'statusline' 'stl' 字符串(默认 "")全局或特定于窗口 global-local 当非空时,此选项确定状态行的内容。另请参阅 status-line
该选项由 printf 风格的 '%' 项目与普通文本交织而成。每个状态行项目采用以下形式:%-0{minwid}.{maxwid}{item} 除了 {item} 之外,所有字段都是可选的。单个百分号可以给出为 "%%"。
当选项以 "%%" 开头时,它将用作表达式,进行评估,并将结果用作选项值。示例
set statusline=%!MyStatusLine()
g:statusline_winid 变量将设置为状态行所属窗口的 window-ID。结果可以包含将被评估的 %{} 项目。请注意,"%%" 表达式是在当前窗口和缓冲区的上下文中评估的,而 %{} 项目是在状态行所属窗口的上下文中评估的。
如果在评估选项时出现错误,则它将被清空以避免进一步的错误。否则,屏幕更新将循环。如果结果包含不可打印的字符,则结果是不可预测的。
请注意,当设置此选项(并且 'laststatus' 为 2 或 3)时,'ruler' 的唯一效果是控制 CTRL-G 的输出。
字段含义
- 左对齐项目。默认情况下,当 minwid 大于项目长度时,项目将右对齐。0 数字项目中的前导零。被 "-" 覆盖。minwid 项目的最小宽度,填充由 "-" 和 "0" 设置。值必须小于或等于 50。maxwid 项目的最大宽度。文本项目的左端将使用 "<" 进行截断。数字项目将被向下移至 maxwid-2 位,然后是 ">"number,其中 number 是缺少的位数,类似于指数表示法。item 一个字母代码,如下所述。
以下是可能的 statusline 项目的说明。 "item" 中的第二个字符是类型:N 表示数字,S 表示字符串,F 表示标志,如下所述
不适用
item 含义
f S 缓冲区中文件的路径,如键入或相对于当前目录。F S 缓冲区中文件的完整路径。t S 缓冲区中文件的名称(尾部)。m F 修改标志,文本为 "[+]";如果 'modifiable' 关闭,则为 "[-]"。M F 修改标志,文本为 ",+" 或 ",-"。r F 只读标志,文本为 "[RO]"。R F 只读标志,文本为 ",RO"。h F 帮助缓冲区标志,文本为 "[help]"。H F 帮助缓冲区标志,文本为 ",HLP"。w F 预览窗口标志,文本为 "[Preview]"。W F 预览窗口标志,文本为 ",PRV"。y F 缓冲区中文件的类型,例如 "[vim]"。请参阅 'filetype'。Y F 缓冲区中文件的类型,例如 ",VIM"。请参阅 'filetype'。q S "[Quickfix List]"、"[Location List]" 或空。k S "b:keymap_name" 的值或当使用 :lmap 映射时 'keymap' 的值:"<keymap>" n N 缓冲区号。b N 光标下字符的值。B N 如上所述,以十六进制表示。o N 文件中光标下字节的字节号,第一个字节为 1。助记符:从文件开头偏移(加 1)O N 如上所述,以十六进制表示。l N 行号。L N 缓冲区中的行数。c N 列号(字节索引)。v N 虚拟列号(屏幕列)。V N 虚拟列号为 -{num}。如果等于 'c',则不显示。p N 文件中行的百分比,如 CTRL-G 所示。P S 显示窗口中文件的百分比。这类似于 'ruler' 中描述的百分比。始终为 3 位,除非经过转换。S S 'showcmd' 内容,请参阅 'showcmdloc'。a S 如默认标题所示的参数列表状态。({current} of {max})如果参数文件计数为零或一,则为空。{ NF 评估 "%{" 和 "}" 之间的表达式并替换结果。请注意,在结束 "}" 之前没有 "%"。表达式不能包含 "}" 字符,调用函数来解决此问题。请参阅下面的 stl-%{{% - 这几乎与 "{" 相同,只是表达式的结果会再次评估为状态行格式字符串。因此,如果 expr 的返回值包含 "%" 项目,它们将被扩展。表达式可以包含 "}" 字符,表达式结尾由 "%" 表示。例如
func! Stl_filename() abort
    return "%t"
endfunc
stl=%{Stl_filename()} 结果为 "%t" stl=%{%Stl_filename()%} 结果为 "当前文件名" %} - "{%" 表达式结束 ( - 项目组开始。可用于设置节的宽度和对齐方式。必须以 %) 结尾。 ) - 项目组结束。不允许使用宽度字段。 T N 对于 'tabline':开始标签页 N 标签。使用 %T 或 %X 结束标签。使用鼠标左键单击此标签可切换到指定的标签页,而使用鼠标中键单击则会关闭指定的标签页。 X N 对于 'tabline':开始关闭标签页 N 标签。使用 %X 或 %T 结束标签,例如:%3Xclose%X。使用 %999X 表示 "关闭当前标签页" 标签。使用鼠标左键单击此标签会关闭指定的标签页。 @ N 开始执行函数标签。使用 %X 或 %T 结束标签,例如:%10@[email protected]%X。单击此标签将运行指定的函数:在示例中,当使用鼠标左键单击 "foo.c" 一次时,将运行 SwitchBuffer(10, 1, 'l', ' ') 表达式。指定的函数按顺序接收以下参数: 1. minwid 字段值,如果未指定 N 则为零 2. 鼠标点击次数以检测多次点击 3. 使用的鼠标按钮:"l"、"r" 或 "m" 分别表示左键、右键或中键;不应依赖第三个参数仅为 "l"、"r" 或 "m":对于其他鼠标按钮,可以预期任何其他仅包含 ASCII 小写字母的非空字符串值 4. 按下的修饰键:包含字符串 "s"(如果按下了 Shift 修饰键)、"c"(表示 Ctrl)、"a"(表示 Alt)和 "m"(表示 Meta);目前,如果未按下修饰键,则字符串包含空格,但不应依赖空格的存在或修饰键的特定顺序:使用 stridx() 来测试是否存在某个修饰键;字符串保证只包含 ASCII 字母和空格,每个修饰键一个字母;"?" 修饰键也可能存在,但它的存在是 bug,表示添加了新的鼠标按钮识别,但没有修改对该标签上鼠标点击作出反应的代码。使用 getmousepos().winid 在指定函数中获取所点击项目的相应窗口 ID。 < - 如果太长,在哪里截断行。默认在开头。不允许使用宽度字段。 = - 对齐部分之间的分隔点。每个部分将由相同数量的空格隔开。使用一个 %=,其后的内容将右对齐。使用两个 %=,将有一个中间部分,其左右两侧留有空白。不允许使用宽度字段。 # - 设置高亮组。名称必须紧随其后,然后再加一个 #。因此,使用 %#HLname# 表示高亮组 HLname。相同的高亮也用于非当前窗口的状态栏。 * - 将高亮组设置为 User{N},其中 {N} 取自 minwid 字段,例如 %1*。使用 %* 或 %0* 恢复正常高亮。User{N} 和 StatusLine 之间的差异将应用于非当前窗口状态栏的 StatusLineNC。数字 N 必须在 1 到 9 之间。参见 hl-User1..9
在显示标志时,Vim 会移除标志前面如果有的话,领先的逗号。当像下面的例子一样使用标志时,这将使显示更加美观。
当组中的所有项目都变成空字符串(即未设置的标志)并且未为该组设置 minwid 时,整个组将变为空。这将使下面的组在未设置任何标志时完全从状态栏中消失。
set statusline=...%(\ [%M%R%H]%)...
注意,每次显示状态栏时都会对表达式进行求值。 stl-%{ g:actual_curbuf g:actual_curwin 在对 %{} 进行求值时,当前缓冲区和当前窗口将临时设置为正在绘制状态栏的窗口(和缓冲区)。表达式将在这种情况下求值。变量 "g:actual_curbuf" 被设置为实际当前缓冲区的 bufnr() 号码,"g:actual_curwin" 被设置为实际当前窗口的 窗口 ID。这些值是字符串。
如果从模式行设置,则 'statusline' 选项将在 沙盒 中求值,参见 sandbox-option。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
在对 'statusline' textlock 进行求值时,不允许更改文本或跳转到另一个窗口。
如果状态栏在您需要时没有更新(例如,在设置状态栏表达式中使用的变量之后),您可以使用 :redrawstatus 强制更新。
所有数字的结果被视为数字以进行显示。否则,结果被视为标志文本并应用于上述规则。
注意表达式中的错误。它们可能会使 Vim 无法使用!如果您遇到问题,请按住 ':' 或 'Q' 以获取提示,然后退出并使用 "vim --clean" 编辑您的 vimrc 或任何内容以使其正确。
示例:使用 'ruler' 设置模拟标准状态栏
set statusline=%<%f\ %h%w%m%r%=%-14.(%l,%c%V%)\ %P
类似的,但添加光标下字符的 ASCII 值(如 "ga")
set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
显示字节计数和字节值,修改标志以红色显示。
set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
如果加载压缩文件,则显示 ,GZ 标志
set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h...
:autocmd's
let b:gzflag = 1
还有
unlet b:gzflag
并定义此函数
function VarExists(var, val)
    if exists(a:var) | return a:val | else | return '' | endif
endfunction
'suffixes' 'su' 'suffixes' 'su' 字符串(默认 ".bak,~,.o,.h,.info,.swp,.obj")全局当多个文件匹配通配符时,具有这些后缀的文件将获得较低的优先级。参见 suffixes。可以使用逗号分隔后缀。逗号后的空格将被忽略。句点也被视为后缀的开始。为了避免句点或逗号被识别为分隔符,请在它前面加上反斜杠(参见 option-backslash,了解如何包含空格和反斜杠)。参见 'wildignore',了解如何完全忽略文件。建议使用 :set+=:set-= 在列表中添加或删除后缀。这将避免在未来版本使用其他默认值时出现问题。
'suffixesadd' 'sua' 'suffixesadd' 'sua' 字符串(默认 "")局部到缓冲区逗号分隔的后缀列表,这些后缀在搜索用于 "gf"、"[I" 等命令的文件时使用。示例
set suffixesadd=.java
'swapfile' 'swf' 'noswapfile' 'noswf' 'swapfile' 'swf' 布尔值(默认开启)局部到缓冲区为缓冲区使用交换文件。当不需要特定缓冲区的交换文件时,可以重置此选项。例如,包含机密信息,即使 root 也不能访问。注意:所有文本都将在内存中。
不要将其用于大型文件。
恢复将是不可能的!只有当 'updatecount' 非零且 'swapfile' 设置时,交换文件才会存在。当 'swapfile' 重置时,当前缓冲区的交换文件将立即删除。当 'swapfile' 设置且 'updatecount' 非零时,将立即创建交换文件。另见 swap-file。如果您想打开一个新的缓冲区而不为其创建交换文件,请使用 :noswapfile 修饰符。参见 'directory',了解交换文件的创建位置。
此选项与 'bufhidden''buftype' 一起使用,用于指定特殊类型的缓冲区。参见 special-buffers
'switchbuf' 'swb' 'switchbuf' 'swb' 字符串(默认 "uselast")全局此选项控制在缓冲区之间切换时的行为。在以下情况下会检查此选项:
使用 quickfix 命令(:cc:cn:cp 等)跳转到错误。
使用 :stag 命令跳转到标签。
使用 CTRL-W_fCTRL-W_F 命令打开文件。
使用缓冲区拆分命令(例如 :sbuffer:sbnext:sbrewind)跳转到缓冲区。可能的值(逗号分隔列表):useopen 如果包含,则跳转到当前标签页中包含指定缓冲区的第一个打开窗口(如果有)。否则:不要检查其他窗口。usetab 与 "useopen" 相似,但还会考虑其他标签页中的窗口。split 如果包含,则在加载用于显示错误的 quickfix 命令的缓冲区之前拆分当前窗口。否则:不要拆分,使用当前窗口(在 quickfix 窗口中使用时:先前使用的窗口,或者如果没有其他窗口则拆分)。vsplit 与 "split" 相同,但垂直拆分。newtab 与 "split" 相同,但打开一个新的标签页。当两者都存在时,会覆盖 "split"。uselast 如果包含,则在使用 quickfix 命令跳转到错误时,跳转到先前使用的窗口。如果一个窗口启用了 'winfixbuf',则 'switchbuf' 当前不应用于拆分的窗口。
'synmaxcol' 'smc' 'synmaxcol' 'smc' 数字(默认 3000)局部到缓冲区搜索语法项目时的最大列。在长行中,此列后的文本不会被高亮显示,并且后续行可能不会被正确高亮显示,因为语法状态会被清除。这有助于避免对仅包含一行文本的 XML 文件进行非常缓慢的重绘。设置为零以删除限制。
'syntax' 'syn' 'syntax' 'syn' 字符串(默认 "")局部到缓冲区 local-noglobal 当设置此选项时,将加载具有此名称的语法,除非语法高亮已使用 ":syntax off" 关闭。否则,此选项并不总是反映当前语法(b:current_syntax 变量确实反映当前语法)。此选项在模式行中最有用,因为它适用于无法自动识别的文件语法。示例,在 IDL 文件中
/* vim: set syntax=idl : */
当值中出现句点时,它将分隔两个文件类型名称。示例
/* vim: set syntax=c.doxygen : */
这将首先使用 "c" 语法,然后使用 "doxygen" 语法。请注意,第二个语法必须准备作为补充加载,否则将被跳过。可能出现多个句点。要关闭当前文件的语法高亮,请使用
set syntax=OFF
要根据 'filetype' 选项的当前值开启语法高亮,请使用
set syntax=ON
实际设置 'syntax' 选项时,会触发 Syntax 自动命令事件,并以该值作为参数。此选项不会复制到其他缓冲区,与 'cpoptions' 中的 's' 或 'S' 标志无关。只能使用字母数字字符、'.'、'-' 和 '_'。
'tabclose' 'tcl' 'tabclose' 'tcl' 字符串 (默认 "") 全局 此选项控制关闭标签页的行为(例如,使用 :tabclose)。为空时,Vim 会转到下一个(右侧)标签页。
可能的值(逗号分隔列表):left 如果包含,则转到上一个标签页,而不是下一个标签页。uselast 如果包含,则如果可能,转到以前使用的标签页。此选项优先于其他选项。
'tabline' 'tal' 'tabline' 'tal' 字符串 (默认 "") 全局 当非空时,此选项确定 Vim 窗口顶部标签页行的内容。为空时,Vim 将使用默认标签页行。有关更多信息,请参见 setting-tabline
标签页行仅在 'showtabline' 选项中指定时才会出现,并且只有在没有 GUI 标签行时才会出现。当 'guioptions' 中包含 'e' 并且 GUI 支持标签行时,会使用 'guitablabel' 代替。请注意,这两个标签页行非常不同。
该值与 'statusline' 中的评估方式相同。您可以使用 tabpagenr()tabpagewinnr()tabpagebuflist() 来确定要显示的文本。使用 "%1T" 表示第一个标签,"%2T" 表示第二个标签,依此类推。使用 "%X" 项表示关闭标签。
当更改 'tabline' 中使用的内容时,不会触发更新,请使用 :redrawtabline。当 'modelineexpr' 关闭时,此选项不能在模式行中设置。
请记住,只有一个标签页是当前标签页,其他标签页是不可见的,您无法跳转到它们的窗口。
'tabpagemax' 'tpm' 'tabpagemax' 'tpm' 数字 (默认 50) 全局 由 -p 命令行参数或 ":tab all" 命令打开的标签页的最大数量。 tabpage
'tabstop' 'ts' 'tabstop' 'ts' 数字 (默认 8) 缓冲区本地 文件中 <Tab> 占用的空格数。另请参见 :retab 命令和 'softtabstop' 选项。
注意:'tabstop' 设置为除 8 之外的任何值都可能导致您的文件在许多地方显示错误。该值必须大于 0 且小于 10000。
在 Vim 中使用制表符主要有五种方法:1. 始终将 'tabstop' 保持在 8,将 'softtabstop''shiftwidth' 设置为 4(或 3 或您喜欢的任何值),并使用 'noexpandtab'。然后,Vim 将使用制表符和空格的混合,但输入 <Tab><BS> 的行为就像每 4(或 3)个字符出现一个制表符一样。这是推荐的方式,文件在其他工具中和在终端中列出时将看起来相同。2. 将 'softtabstop''shiftwidth' 设置为您喜欢的任何值,并使用 'expandtab'。这样您将始终插入空格。当 'tabstop' 更改时,格式永远不会被弄乱(将其保留在 8,以防万一)。文件会稍大一些。您需要检查文件中是否不存在制表符。您可以通过首先设置 'expandtab' 并使用 %retab! 来消除它们,确保 'tabstop' 的值设置正确。3. 将 'tabstop''shiftwidth' 设置为您喜欢的任何值,并使用 'expandtab'。这样您将始终插入空格。当 'tabstop' 更改时,格式永远不会被弄乱。您需要检查文件中是否不存在制表符,就像上面的项目一样。4. 将 'tabstop''shiftwidth' 设置为您喜欢的任何值,并使用 modeline 在再次编辑文件时设置这些值。仅在使用 Vim 编辑文件时有效,其他工具假设一个制表符值 8 个空格。5. 始终将 'tabstop''shiftwidth' 设置为相同的值,以及 'noexpandtab'。然后,这应该有效(仅针对初始缩进),适用于人们使用的任何制表符设置。但是,如果您这样做,在第一个非空白字符后插入的制表符可能作为空格更好。否则,当 'tabstop' 更改时,对齐的注释将出错。
如果 'vartabstop' 设置为除空字符串以外的任何内容,则将忽略 'tabstop' 的值。
'tagbsearch' 'tbs' 'notagbsearch' 'notbs' 'tagbsearch' 'tbs' 布尔值 (默认开启) 全局 在搜索标签时(例如,对于 :ta 命令),Vim 可以使用标签文件中的二进制搜索或线性搜索。二进制搜索使搜索标签的速度快得多,但如果标签文件未正确排序,则线性搜索将找到更多标签。Vim 通常假定您的标签文件已排序,或者表明它们未排序。只有在并非如此的情况下,才需要关闭 'tagbsearch' 选项。
'tagbsearch' 开启时,首先在标签文件中使用二进制搜索。在某些情况下,Vim 将改为对某些文件进行线性搜索,或使用线性搜索重新尝试所有文件。当 'tagbsearch' 关闭时,只执行线性搜索。
当 Vim 在文件开头找到一行指示该文件未排序时,无论如何都会对一个文件进行线性搜索
!_TAG_FILE_SORTED        0        /some comment/
['0' 之前和之后的空格必须是一个 <Tab>]
当执行二进制搜索并且在 'tags' 中列出的任何文件中都没有找到匹配项,并且忽略大小写或使用模式而不是普通标签名称时,将使用线性搜索重新尝试。未排序标签文件中的标签以及大小写不同的匹配项将仅在重新尝试时找到。
如果标签文件指示它已按大小写折叠排序,则当忽略大小写时,可以避免第二次线性搜索。为此,在 "!_TAG_FILE_SORTED" 行中使用 '2' 值。可以使用大多数 unices 中 "sort" 的 -f 开关来按大小写折叠排序标签文件,例如在命令中:"sort -f -o tags tags"。对于 Universal ctags 和 Exuberant ctags 5.x 或更高版本(至少 5.5),可以使用 --sort=foldcase 开关。请注意,大小写必须折叠为大写才能使其生效。
默认情况下,标签搜索区分大小写。当 'ignorecase' 设置并且 'tagcase' 为 "followic" 时,或当 'tagcase' 为 "ignore" 时,将忽略大小写。当 'tagcase' 为 "followscs" 并且 'smartcase' 设置时,或者 'tagcase' 为 "smart" 并且模式仅包含小写字符时,也是如此。
'tagbsearch' 关闭时,当存在完全匹配时,标签搜索速度较慢,但当不存在完全匹配时,速度更快。未排序标签文件中的标签可能只能在 'tagbsearch' 关闭时找到。当标签文件未排序,或者排序方式错误(不是按 ASCII 字节值排序)时,应关闭 'tagbsearch',或者必须在标签文件中包含上面给出的行。此选项不会影响查找所有匹配标签的命令(例如,命令行完成和 ":help")。
'tagcase' 'tc' 'tagcase' 'tc' 字符串 (默认 "followic") 全局或缓冲区本地 global-local 此选项指定在搜索标签文件时如何处理大小写:followic 遵循 'ignorecase' 选项 followscs 遵循 'smartcase''ignorecase' 选项 ignore 忽略大小写匹配 匹配大小写 smart 忽略大小写,除非使用大写字母
'tagfunc' 'tfu' 'tagfunc' 'tfu' 字符串 (默认 "") 缓冲区本地 此选项指定用于执行标签搜索的函数。该函数获取标签模式,并应返回匹配标签的列表。有关如何编写函数以及示例,请参见 tag-function。该值可以是函数的名称、一个 lambda 或一个 Funcref。有关更多信息,请参见 option-value-function。出于安全原因,此选项不能从 modelinesandbox 中设置。
'taglength' 'tl' 'taglength' 'tl' 数字 (默认 0) 全局 如果非零,则标签将在此字符数内有效。
'tagrelative' 'tr' 'notagrelative' 'notr' 'tagrelative' 'tr' 布尔值 (默认开启) 全局 如果开启并且使用另一个目录中的标签文件,则该标签文件中的文件名相对于标签文件所在的目录。
'tags' 'tag' E433 'tags' 'tag' 字符串 (默认 "./tags;,tags") 全局或缓冲区本地 global-local 标签命令的文件名,用空格或逗号分隔。要将空格或逗号包含在文件名中,请在前面加上反斜杠(有关包含空格/逗号和反斜杠的信息,请参见 option-backslash)。当文件名以 "./" 开头时,'.' 将被替换为当前文件的路径。但仅当 'cpoptions' 中不包含 'd' 标志时。环境变量将扩展 :set_env。另请参见 tags-option。"*"、"**" 和其他通配符可用于在目录树中搜索标签文件。请参见 file-searching。例如,"/lib/**/tags" 将找到 "/lib" 下所有名为 "tags" 的文件。文件名本身不能包含通配符,它将按原样使用。例如,"/lib/**/tags?" 将找到名为 "tags?" 的文件。tagfiles() 函数可用于获取实际使用的文件名的列表。在列表中添加或删除文件名时,建议使用 :set+=:set-=。这避免了将来版本使用其他默认值时出现的问题。
'tagstack' 'tgst' 'notagstack' 'notgst' 'tagstack' 'tgst' boolean (默认开启) 全局 当开启时,tagstack 正常使用。当关闭时,带有参数的 ":tag" 或 ":tselect" 命令不会将标签压入标签栈。后面的 ":tag" 不带参数,":pop" 命令或任何其他使用标签栈的命令将使用未修改的标签栈,但会改变指向活动条目的指针。当在映射中使用 ":tag" 命令时,重置此选项很有用,因为此命令不应更改标签栈。
'termbidi' 'tbidi' 'notermbidi' 'notbidi' 'termbidi' 'tbidi' boolean (默认关闭) 全局 终端负责文本的双向性(由 Unicode 指定)。终端还应执行某些语言(如阿拉伯语)所需的必要字形塑造。设置此选项意味着当 'rightleft' 设置为 'arabic''arabicshape' 的值为 off 时,不会设置 'rightleft'。请注意,设置 'termbidi' 会立即生效,导致 'arabicshape' 被忽略,但 'rightleft' 不会自动更改。有关更多详细信息,请参阅 arabic.txt
'termguicolors' 'tgc' 'notermguicolors' 'notgc' 'termguicolors' 'tgc' boolean (默认关闭) 全局 在 TUI 中启用 24 位 RGB 颜色。使用 "gui" :highlight 属性而不是 "cterm" 属性。 guifg 需要一个与 ISO-8613-3 兼容的终端。
Nvim 会自动尝试确定主机终端是否支持 24 位颜色,如果支持,则会启用此选项(除非用户明确禁用)。
'termpastefilter' 'tpf' 'termpastefilter' 'tpf' string (默认 "BS,HT,ESC,DEL") 全局 用于指定要从粘贴到终端窗口的文本中删除的控制字符的选项的逗号分隔列表。支持的值为
BS 退格键
HT 制表符
FF 换页符
ESC 转义符
DEL 删除键
C0 其他控制字符,不包括换行符和回车符 < ' '
C1 控制字符 0x80...0x9F
'termsync' 'notermsync' 'termsync' boolean (默认开启) 全局 如果主机终端支持,则缓冲在重绘周期内进行的所有屏幕更新,以便每个屏幕在终端中一次性显示。这可以防止终端更新速度快于 Nvim 重绘速度时出现撕裂或闪烁。
'textwidth' 'tw' 'textwidth' 'tw' number (默认 0) 局部于缓冲区 正在插入的文本的最大宽度。较长的行将在空格后断开以获得此宽度。零值禁用此功能。当 'textwidth' 为零时,可以使用 'wrapmargin'。另请参阅 'formatoptions'ins-textwidth。当 'formatexpr' 设置时,它将用于断开行。
'thesaurus' 'tsr' 'thesaurus' 'tsr' string (默认 "") 全局或局部于缓冲区 全局-局部 由逗号分隔的文件名列表,用于查找用于同义词完成命令 i_CTRL-X_CTRL-T 的单词。请参阅 compl-thesaurus
如果 'thesaurusfunc' 已设置,则此选项不会使用,无论是针对缓冲区还是全局设置。
要在文件名中包含逗号,请在其前面加上反斜杠。逗号后的空格将被忽略,否则空格将包含在文件名中。有关使用反斜杠的信息,请参阅 option-backslash。当从列表中添加或删除目录时,建议使用 :set+=:set-=。这可以避免在未来版本使用其他默认值时出现问题。出于安全原因,此选项中不能使用反引号。
'thesaurusfunc' 'tsrfu' 'thesaurusfunc' 'tsrfu' string (默认 "") 全局或局部于缓冲区 全局-局部 此选项指定一个函数,用于使用 CTRL-X CTRL-T 进行同义词完成。 i_CTRL-X_CTRL-T 请参阅 compl-thesaurusfunc。该值可以是函数名、lambdaFuncref。有关更多信息,请参阅 option-value-function
出于安全原因,此选项不能从 modelinesandbox 中设置。
'tildeop' 'top' 'notildeop' 'notop' 'tildeop' 'top' boolean (默认关闭) 全局 当开启时:波浪号命令 "~" 的行为类似于操作符。
'timeout' 'to' 'notimeout' 'noto' 'timeout' 'to' boolean (默认开启) 全局 此选项和 'timeoutlen' 决定在收到映射键序列的一部分时的行为。例如,如果按下 <c-f> 并且 'timeout' 设置为开启,Nvim 将等待 'timeoutlen' 毫秒,以等待任何可能在映射中跟随 <c-f> 的键。
'timeoutlen' 'tm' 'timeoutlen' 'tm' number (默认 1000) 全局 等待映射序列完成的时间(以毫秒为单位)。
'title' 'notitle' 'title' boolean (默认关闭) 全局 当开启时,窗口标题将设置为 'titlestring' 的值(如果它不为空),或者设置为: filename [+=-] (path) - Nvim 其中: filename 正在编辑的文件的名称 - 表示文件不可修改,'ma' 关闭 + 表示文件已修改 = 表示文件是只读的 =+ 表示文件是只读的且已修改 (path) 是正在编辑的文件的路径
Nvim 服务器名称 v:servername 或 "Nvim"
'titlelen'
'titlelen' number (默认 85) 全局 给出用于窗口标题长度的 'columns' 百分比。当标题更长时,只显示路径名的末尾。路径名前面的 '<' 字符用于指示这一点。使用百分比使它适应窗口的宽度。但它不会完美地工作,因为可用的实际字符数还取决于使用的字体和其他标题栏中的内容。当 'titlelen' 为零时,将使用完整路径。否则,可以使用 1 到 30000 百分比的值。 'titlelen' 也用于 'titlestring' 选项。
'titleold'
'titleold' string (默认 "") 全局 如果不为空,此选项将用于在退出时设置窗口标题。仅当 'title' 启用时。出于安全原因,此选项不能从 modelinesandbox 中设置。
'titlestring'
'titlestring' string (默认 "") 全局 当此选项不为空时,它将用于窗口的标题。这仅在 'title' 选项开启时发生。
当此选项包含 printf 样式的 '%' 项目时,它们将根据用于 'statusline' 的规则进行扩展。如果它包含无效的 '%' 格式,则该值将按原样使用,并且在设置值时不会给出任何错误或警告。当 'modelineexpr' 关闭时,此选项不能在 modeline 中设置。
示例
auto BufEnter * let &titlestring = hostname() .. "/" .. expand("%:p")
set title titlestring=%<%F%=%l/%L-%P titlelen=70
'titlelen' 的值用于将项目对齐到可用空间的中间或右侧。有些人更喜欢将文件名放在前面
set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:.:h\")})%)%(\ %a%)
请注意使用 "%{ }" 和表达式来获取文件路径,但不包括文件名。 "%( %)" 结构用于仅在需要时添加分隔空格。 注意:'titlestring' 中使用特殊字符可能会导致显示乱码(例如,当它包含 CR 或 NL 字符时)。
'ttimeout' 'nottimeout' 'ttimeout' boolean (默认开启) 全局 此选项和 'ttimeoutlen' 决定 TUI 收到键码序列的一部分时的行为。
例如,如果收到 <Esc>(\x1b 字节)并且 'ttimeout' 设置为开启,Nvim 会等待 'ttimeoutlen' 毫秒,以等待终端完成键码序列。如果在超时之前没有收到输入,则假定为单个 <Esc>。许多 TUI 光标键码以 <Esc> 开头。
在非常慢的系统上,这可能会失败,导致光标键有时无法使用。如果你发现这个问题,你可以 ":set ttimeoutlen=9999"。Nvim 将等待在 <Esc> 后到达的下一个字符。
'ttimeoutlen' 'ttm' 'ttimeoutlen' 'ttm' number (默认 50) 全局 等待键码序列完成的时间(以毫秒为单位)。在键入命令的一部分时,还用于 CTRL-\ CTRL-NCTRL-\ CTRL-G
'undodir' 'udir' E5003 'undodir' 'udir' 字符串 (默认 "$XDG_STATE_HOME/nvim/undo//") 全局 用于撤销文件的目录名称列表,以逗号分隔。有关格式的详细信息,请参见 'backupdir'。“.” 表示使用文件的目录。对于 "file.txt",撤销文件名是 ".file.txt.un~"。对于其他目录,文件名是编辑文件的完整路径,路径分隔符被替换为 "%”。写入时:使用第一个存在的目录。“.” 始终有效,"." 之后的目录不会用于写入。如果所有目录都不存在,Nvim 将尝试创建列表中的最后一个目录。读取时,会尝试所有条目以查找撤销文件。使用第一个存在的撤销文件。如果无法读取,则会给出错误,不会再使用其他条目。请参见 undo-persistence。出于安全原因,此选项不能从 modelinesandbox 中设置。
请注意,与 'directory''backupdir' 不同,'undodir' 始终表现得好像存在尾部斜杠(有关这意味着什么,请参见 'backupdir')。
'undofile' 'udf' 'noundofile' 'noudf' 'undofile' 'udf' 布尔值 (默认关闭) 缓冲区局部 当开启时,Vim 会在将缓冲区写入文件时自动将撤销历史保存到撤销文件,并在读取缓冲区时从同一个文件恢复撤销历史。存储撤销文件的目录由 'undodir' 指定。有关此功能的更多信息,请参见 undo-persistence。当 'undoreload' 使重载前的缓冲区被保存以供撤销时,不会读取撤销文件。当 'undofile' 被关闭时,撤销文件不会被删除。
'undolevels' 'ul' 'undolevels' 'ul' 数字 (默认 1000) 全局或缓冲区局部 global-local 可以撤销的最大更改次数。由于撤销信息保存在内存中,因此较高的数字会导致使用更多内存。不过,单个更改可能已经使用了大量内存。设置为 0 以获得 Vi 兼容性:一个级别的撤销,“u” 撤销自身。
set ul=0
但是,您也可以通过在 'cpoptions' 中包含 'u' 标志来获得 Vi 兼容性,并且仍然可以使用 CTRL-R 来重复撤销。另请参见 undo-two-ways。设置为 -1 表示根本不撤销。您可能只想对当前缓冲区执行此操作。
setlocal ul=-1
这在您因单个更改而耗尽内存时很有帮助。
当全局值要使用时,局部值被设置为 -123456。
另请参见 clear-undo
'undoreload' 'ur' 'undoreload' 'ur' 数字 (默认 10000) 全局 在重载缓冲区时保存整个缓冲区以供撤销。这适用于 ":e!" 命令以及缓冲区在 Vim 之外发生更改时的重载。 FileChangedShell 仅当此选项为负数或行数小于此选项的值时,才会发生保存。将此选项设置为零以禁用重载的撤销。
在为重载保存撤销时,不会读取任何撤销文件。
请注意,这会导致整个缓冲区存储在内存中。如果您耗尽内存,请将此选项设置为较低的值。
'updatecount' 'uc' 'updatecount' 'uc' 数字 (默认 200) 全局 在键入这么多字符后,交换文件将被写入磁盘。当为零时,根本不会创建交换文件(请参见关于恢复的章节 crash-recovery)。'updatecount' 由使用 "-n" 选项启动 Vim 来设置为零,请参见 startup。在只读模式下编辑时,此选项将被初始化为 10000。交换文件可以通过 'swapfile' 为每个缓冲区禁用。当 'updatecount' 从零设置为非零时,将为所有已设置 'swapfile' 的缓冲区创建交换文件。当 'updatecount' 被设置为零时,不会删除现有的交换文件。此选项在 'buftype' 为 "nofile" 或 "nowrite" 的缓冲区中没有意义。
'updatetime' 'ut' 'updatetime' 'ut' 数字 (默认 4000) 全局 如果在这么多毫秒内没有键入任何内容,交换文件将被写入磁盘(请参见 crash-recovery)。也用于 CursorHold 自动命令事件。
'varsofttabstop' 'vsts' 'varsofttabstop' 'vsts' 字符串 (默认 "") 缓冲区局部 一个空格数列表,表示 <Tab> 在编辑时(例如,插入 <Tab> 或使用 <BS>)所占的空格数。它“感觉”像是插入了可变宽度的 <Tab>,而实际上使用了空格和 <Tab> 的混合。制表符宽度用逗号分隔,最后一个值应用于所有后续制表符。
例如,在编辑语句从第 9 列开始、注释从第 41 列开始的汇编语言文件时,使用以下内容可能会有用:
set varsofttabstop=8,32,8
这将设置软制表符停靠,分别为 8 和 8 + 32 个空格,之后每列增加 8 个空格。
请注意,当设置了 'varsofttabstop' 时,将忽略 'softtabstop' 的值。
'vartabstop' 'vts' 'vartabstop' 'vts' 字符串 (默认 "") 缓冲区局部 一个空格数列表,表示文件中 <Tab> 所占的空格数,用逗号分隔。每个值对应一个制表符,最后一个值应用于所有后续制表符。例如:
set vartabstop=4,20,10,8
这将使第一个制表符宽度为 4 个空格,第二个为 20 个空格,第三个为 10 个空格,所有后续制表符为 8 个空格。
请注意,当设置了 'vartabstop' 时,将忽略 'tabstop' 的值。
'verbose' 'vbs' 'verbose' 'vbs' 数字 (默认 0) 全局 设置详细程度级别。也由 -V:verbose 设置。
在级别 1 启用对 Lua 脚本中选项、映射等的赋值跟踪;当 'verbose' 为 0 时,不会跟踪 Lua 脚本,以提高性能。
如果大于或等于给定级别,Nvim 会生成以下消息:
级别 消息
---------------------------------------------------------------------- 1 启用 Lua 跟踪(见上文)。不生成消息。 2 当一个文件被 ":source"'ed 时,或者 shada 文件被读取或写入。 3 UI 信息,终端功能。 4 Shell 命令。 5 每个搜索的标签文件和包含文件。 8 将为其执行一组自动命令的文件。 9 执行的自动命令。 11 在路径中查找项目。 12 Vimscript 函数调用。 13 当异常被抛出、捕获、完成或丢弃时。 14 ":finally" 子句中挂起的任何内容。 15 来自脚本的 Ex 命令(在 200 个字符处截断)。 16 Ex 命令。
如果设置了 'verbosefile',则不会显示详细消息。
'verbosefile' 'vfile' 'verbosefile' 'vfile' 字符串 (默认 "") 全局 当不为空时,所有消息都将写入一个具有此名称的文件。当文件存在时,消息将被追加。写入文件在 Vim 退出或 'verbosefile' 被清空时结束。写入被缓冲,因此可能需要一段时间才能显示。将 'verbosefile' 设置为新值就像先将其清空一样。与 :redir 的区别在于,当设置了 'verbosefile' 时,不会显示详细消息。出于安全原因,此选项不能从 modelinesandbox 中设置。
'viewdir' 'vdir' 'viewdir' 'vdir' 字符串 (默认 "$XDG_STATE_HOME/nvim/view//") 全局 用于存储 :mkview 文件的目录的名称。出于安全原因,此选项不能从 modelinesandbox 中设置。
'viewoptions' 'vop' 'viewoptions' 'vop' 字符串 (默认 "folds,cursor,curdir") 全局 更改 :mkview 命令的效果。它是一个用逗号分隔的单词列表。每个单词都启用保存和恢复某件事
词 保存和恢复
cursor 文件和窗口中的光标位置 curdir 本地当前目录,如果用 :lcd 设置 folds 手动创建的折叠,打开/关闭的折叠和本地折叠选项 options 窗口或缓冲区的选项和映射(不是局部选项的全局值) localoptions 与 "options" 相同 slash 已弃用 始终启用。在文件名中使用 "/"。 unix 已弃用 始终启用。使用 "\n" 行结尾。
'virtualedit' 've' 'virtualedit' 've' 字符串 (默认 "") 全局或窗口局部 global-local 一个用逗号分隔的这些单词列表: block 允许在 Visual 块模式下进行虚拟编辑。 insert 允许在插入模式下进行虚拟编辑。 all 允许在所有模式下进行虚拟编辑。 onemore 允许光标移动到行的末尾之外 none 当用作局部值时,即使全局值已设置,也不允许虚拟编辑。当用作全局值时,"none" 与 "" 相同。 NONE "none" 的替代拼写。
虚拟编辑意味着光标可以放置在没有实际字符的地方。这可以是制表符的中间或行的末尾。这对在 Visual 模式下选择矩形并编辑表格很有用。 "onemore" 与此不同,它只允许光标移动到行最后一个字符之后。这使得一些命令更加一致。以前,如果行为空,光标总是位于行末尾。但这与 Vi 不兼容。它也可能破坏一些插件或 Vim 脚本。例如,因为 l 可以将光标移动到最后一个字符之后。谨慎使用!使用 $ 命令将移动到行中的最后一个字符,而不是最后一个字符之后。这实际上可能会将光标向左移动!g$ 命令将移动到屏幕行的末尾。将 "all" 与 "onemore" 组合在一起没有意义,但你不会收到警告。当与其他词语组合时,"none" 将被忽略。
'visualbell' 'vb' 'novisualbell' 'novb' 'visualbell' 'vb' boolean (默认关闭) global 使用视觉铃声代替蜂鸣声。另见 'errorbells'.
'warn' 'nowarn' 'warn' boolean (默认开启) global 当缓冲区已被修改时,在使用 shell 命令时发出警告消息。
'whichwrap' 'ww' 'whichwrap' 'ww' string (默认 "b,s") global 允许指定的键(将光标向左/右移动)在光标位于行首/行尾时移动到前一行/下一行。将字符连接起来以允许这些键进行此操作
字符键模式
b <BS> 正常和 Visual s <Space> 正常和 Visual h "h" 正常和 Visual(不建议) l "l" 正常和 Visual(不建议) < <Left> 正常和 Visual > <Right> 正常和 Visual ~ "~" 正常 [ <Left> 插入和替换 ] <Right> 插入和替换 例如
set ww=<,>,[,]
只允许在使用光标键时换行。当在组合使用删除或更改操作符时使用移动键,<EOL> 也算作一个字符。这使得 "3h" 与 "3dh" 不同,当光标越过行尾时。这也适用于 "x" 和 "X",因为它们与 "dl" 和 "dh" 做相同的事。如果你使用它,你可能也需要使用映射 ":map <BS> X" 使退格键删除光标前的字符。当包含 'l' 并且它在行尾(非空行)处使用操作符后使用时,它不会移动到下一行。这使得 "dl"、"cl"、"yl" 等正常工作。
'wildchar' 'wc' 'wildchar' 'wc' number (默认 <Tab>) global 你必须输入的字符以启动命令行中的通配符扩展,如 'wildmode' 中指定。有关更多信息,请参阅:cmdline-completion。在宏中使用时不识别此字符。有关此内容,请参阅 'wildcharm'。某些键将不起作用,例如 CTRL-C<CR> 和 Enter。可以使用 <Esc>,但连续按两次仍将退出命令行作为安全措施。尽管 'wc' 是数字选项,但它可以指定为数字、单个字符、键符号(例如 <Up><C-F>)或以插入符号开头的字母(例如 ^FCTRL-F
:set wc=27
:set wc=X
:set wc=^I
set wc=<Tab>
'wildcharm' 'wcm' 'wildcharm' 'wcm' number (默认 0) global 'wildcharm' 的工作方式与 'wildchar' 完全相同,只是它在宏中使用时会被识别。你可以通过查看 ex-edit-index 来找到适合此选项的 "备用" 命令行键。通常你实际上永远不会输入 'wildcharm',只需在自动调用补全模式的映射中使用它,例如
set wcm=<C-Z>
cnoremap ss so $vim/sessions/*.vim<C-Z>
然后在输入 :ss 后,你可以使用 CTRL-P & CTRL-N
'wildignore' 'wig' 'wildignore' 'wig' string (默认 "") global 文件模式列表。与其中一个模式匹配的文件在扩展 通配符、完成文件或目录名称时会被忽略,并影响 expand()glob()globpath() 的结果,除非传递了禁用此功能的标志。模式的使用方式与 :autocmd 相同,请参阅 autocmd-pattern。另见 'suffixes'。示例
set wildignore=*.o,*.obj
当从列表中添加或删除模式时,建议使用 :set+=:set-=。这将避免在未来版本使用其他默认值时出现问题。
'wildignorecase' 'wic' 'nowildignorecase' 'nowic' 'wildignorecase' 'wic' boolean (默认关闭) global 当设置为忽略大小写时,完成文件名称和目录名称时会忽略大小写。当 'fileignorecase' 设置时无效。在使用 shell 扩展通配符时不适用,这种情况发生在有特殊字符时。
'wildmenu' 'wmnu' 'nowildmenu' 'nowmnu' 'wildmenu' 'wmnu' boolean (默认开启) global 当 'wildmenu' 开启时,命令行补全将以增强模式运行。按 'wildchar'(通常是 <Tab>)以调用补全时,将显示可能的匹配项。当 'wildoptions' 包含 "pum" 时,补全匹配项将在弹出菜单中显示。否则,它们将显示在命令行上方,第一个匹配项突出显示(覆盖状态行,如果有的话)。显示前一个/下一个匹配项的键,例如 <Tab>CTRL-P/CTRL-N,将导致突出显示移动到相应的匹配项。'wildmode' 必须指定 "full":"longest" 和 "list" 不会启动 'wildmenu' 模式。你可以使用 wildmenumode() 检查当前模式。当按下未用于选择补全的键时,菜单将取消。
在菜单处于活动状态时,这些键具有特殊含义:CTRL-P - 转到前一个条目 CTRL-N - 转到下一个条目 <Left> <Right> - 选择前一个/下一个匹配项(如 CTRL-P/CTRL-N) <PageUp> - 选择几个条目之前的匹配项 <PageDown> - 选择几个条目之后的匹配项 <Up> - 在文件名/菜单名称补全中:向上移动到父目录或父菜单。 <Down> - 在文件名/菜单名称补全中:移动到子目录或子菜单。 <CR> - 在菜单补全中,当光标位于句点之后时:移动到子菜单。 CTRL-E - 结束补全,返回到选择匹配项之前的状态。 CTRL-Y - 接受当前选定的匹配项并停止补全。
如果你希望 <Left><Right> 移动光标而不是选择不同的匹配项,请使用以下方法
cnoremap <Left> <Space><BS><Left>
cnoremap <Right> <Space><BS><Right>
hl-WildMenu 突出显示当前匹配项。
'wildmode' 'wim' 'wildmode' 'wim' string (默认 "full") global 为使用 'wildchar' 指定的字符使用的补全模式。它是一个最多包含四个部分的逗号分隔列表。每个部分指定对每次连续使用 'wildchar' 的操作。第一部分指定对第一次使用 'wildchar' 的行为,第二部分指定对第二次使用 'wildchar' 的行为,等等。
每个部分都包含一个冒号分隔的列表,其中包含以下可能的值:"“ 仅完成第一个匹配项。 "full" 完成下一个完整匹配项。在最后一个匹配项之后,使用原始字符串,然后再次使用第一个匹配项。如果启用了 'wildmenu',它也会启动 'wildmenu'。 "longest" 完成到最长公共字符串。如果这没有导致更长的字符串,则使用下一部分。 "list" 当有多个匹配项时,列出所有匹配项。 "lastused" 当补全缓冲区名称并且多个缓冲区匹配时,按上次使用时间(除当前缓冲区之外)对缓冲区进行排序。当只有一个匹配项时,在所有情况下都会完全完成。
有用的冒号分隔值的示例:"longest:full" 类似于 "longest",但也启动 'wildmenu'(如果已启用)。不会完成到下一个完整匹配项。 "list:full" 当有多个匹配项时,列出所有匹配项并完成第一个匹配项。 "list:longest" 当有多个匹配项时,列出所有匹配项并完成到最长公共字符串。 "list:lastused" 当多个缓冲区匹配时,列出所有匹配项并按上次使用时间(除当前缓冲区之外)对缓冲区进行排序。
示例
set wildmode=full
完成第一个完整匹配项、下一个匹配项,等等(默认值)
set wildmode=longest,full
完成最长公共字符串,然后完成每个完整匹配项
set wildmode=list:full
列出所有匹配项并完成每个完整匹配项
set wildmode=list,full
列出所有匹配项而不完成,然后完成每个完整匹配项
set wildmode=longest,list
完成最长公共字符串,然后列出备选方案。有关更多信息,请参阅:cmdline-completion.
'wildoptions' 'wop' 'wildoptions' 'wop' string (默认 "pum,tagfile") global 一组词,用于更改 cmdline-completion 的执行方式。支持以下值:fuzzy 使用 模糊匹配 查找补全匹配项。当指定此值时,不会将通配符扩展用于补全。匹配项将按 "最佳匹配" 排序,而不是按字母顺序排序。这将比通配符扩展找到更多匹配项。目前,基于模糊匹配的补全不支持文件和目录名称,而是使用通配符扩展。 pum 使用弹出菜单显示补全匹配项,其样式与 ins-completion-menu 相同。 tagfile 当使用 CTRL-D 列出匹配的标签时,将列出标签的类型和标签所在的文件。每行只显示一个匹配项。常用的标签类型包括: d #define f function
'winaltkeys' 'wak' 'winaltkeys' 'wak' 字符串 (默认 "menu") 全局,仅在 Win32 中使用 一些 GUI 版本允许使用 ALT 键与菜单中带下划线的字符组合来访问菜单条目。这与使用 ALT 键进行映射和输入特殊字符发生冲突。此选项说明要执行的操作: no 不使用 ALT 键进行菜单操作。ALT 键组合可以映射,但没有自动处理。 yes ALT 键处理由窗口系统完成。ALT 键组合无法映射。 menu 使用 ALT 键与作为菜单快捷键的字符组合将由窗口系统处理。其他键可以映射。如果通过从 'guioptions' 中排除 'm' 来禁用菜单,则 ALT 键永远不会用于菜单。此选项不适用于 Win32 上的 <F10>
'winbar' 'wbr' 'winbar' 'wbr' 字符串 (默认 "") 全局或窗口本地 全局-本地 当不为空时,此选项启用窗口栏并确定其内容。窗口栏是在启用窗口栏的每个窗口顶部显示的栏。 'winbar' 的值与 'statusline' 中的值一样进行评估。
当更改 'winbar' 中使用的内容但不会触发其更新时,请使用 :redrawstatus
浮动窗口不使用 'winbar' 的全局值。必须为浮动窗口设置 'winbar' 的窗口本地值才能使浮动窗口具有窗口栏。
'modelineexpr' 关闭时,此选项无法在模式行中设置。
'winblend' 'winbl' 'winblend' 'winbl' 数字 (默认 0) 窗口本地 为浮动窗口启用伪透明度。有效值为 0(完全不透明窗口,禁用)到 100(完全透明背景)。0-30 之间的值通常最有用。
取决于 UI。最适合 RGB 颜色。 'termguicolors'
'window' 'wi' 'window' 'wi' 数字 (默认屏幕高度 - 1) 全局 当只有一个窗口且该值小于 'lines' 减 1 时,用于 CTRL-FCTRL-B 的窗口高度。屏幕将滚动 'window' 减 2 行,最小值为 1。当 'window' 等于 'lines' 减 1 时,CTRL-FCTRL-B 以更智能的方式滚动,处理换行。当调整 Vim 窗口大小时,如果该值小于 1 或大于或等于 'lines',它将被设置为 'lines' 减 1。 注意: 不要将此与 Vim 窗口的高度混淆,请使用 'lines' 表示该高度。
'winfixbuf' 'wfb' 'nowinfixbuf' 'nowfb' 'winfixbuf' 'wfb' 布尔值 (默认关闭) 窗口本地 如果启用,则窗口与其显示的缓冲区配对。例如,尝试使用 :edit 更改缓冲区将失败。其他更改窗口缓冲区的命令(例如 :cnext)也会跳过任何启用了 'winfixbuf' 的窗口。但是,如果 Ex 命令有 "!" 修饰符,则可以强制切换缓冲区。
'winfixheight' 'wfh' 'nowinfixheight' 'nowfh' 'winfixheight' 'wfh' 布尔值 (默认关闭) 窗口本地 本地-非全局 当打开或关闭窗口且 'equalalways' 设置时,保留窗口高度。也适用于 CTRL-W_=。默认情况下,为 预览窗口快速修复窗口 设置。当空间不足时,高度可能会更改。
'winfixwidth' 'wfw' 'nowinfixwidth' 'nowfw' 'winfixwidth' 'wfw' 布尔值 (默认关闭) 窗口本地 本地-非全局 当打开或关闭窗口且 'equalalways' 设置时,保留窗口宽度。也适用于 CTRL-W_=。当空间不足时,宽度可能会更改。
'winheight' 'wh' E591 'winheight' 'wh' 数字 (默认 1) 全局 当前窗口的最小行数。这不是硬性最小值,如果空间不足,Vim 将使用更少的行。如果焦点转到较小的窗口,则其大小将增加,以牺牲其他窗口的高度为代价。将 'winheight' 设置为较小的数字以进行正常编辑。将其设置为 999 以使当前窗口填充大部分屏幕。其他窗口将只有 'winminheight' 高。这样做有一个缺点,即 ":all" 将只创建两个窗口。为了避免 "vim -o 1 2 3 4" 只创建两个窗口,请在启动完成之后设置此选项,使用 VimEnter 事件
au VimEnter * set winheight=999
最小值为 1。在执行更改当前窗口高度的命令之后,高度不会调整。 'winheight' 应用于当前窗口。使用 'winminheight' 设置其他窗口的最小高度。
'winhighlight' 'winhl' 'winhighlight' 'winhl' 字符串 (默认 "") 窗口本地 窗口本地突出显示。以逗号分隔的突出显示 组名 对 "{hl-from}:{hl-to},...",其中每个 {hl-from} 是一个 突出显示组 项目,将被窗口中的 {hl-to} 组覆盖。
注意: 突出显示命名空间优先于 'winhighlight'。参见 nvim_win_set_hl_ns()nvim_set_hl()
垂直分隔符的突出显示由分隔符左侧的窗口确定。选项卡页的 'tabline' 突出显示由选项卡页的最后关注的窗口决定。弹出菜单的突出显示由当前窗口决定。消息区域的突出显示无法覆盖。
示例:显示非当前窗口的不同颜色
set winhighlight=Normal:MyNormal,NormalNC:MyNormalNC
'winminheight' 'wmh' 'winminheight' 'wmh' 数字 (默认 1) 全局 当窗口不是当前窗口时,窗口的最小高度。这是一个硬性最小值,窗口永远不会变小。当设置为零时,窗口可能被“压缩”为零行(即仅状态栏),如果必要的话。当它们变为活动窗口时,它们将返回至少一行(因为光标必须有地方去)。使用 'winheight' 设置当前窗口的最小高度。此选项仅在将窗口变小时进行检查。不要使用很大的数字,它会导致打开多个窗口时出现错误。0 到 3 的值是合理的。
'winminwidth' 'wmw' 'winminwidth' 'wmw' 数字 (默认 1) 全局 当窗口不是当前窗口时,窗口的最小宽度。这是一个硬性最小值,窗口永远不会变小。当设置为零时,窗口可能被“压缩”为零列(即仅垂直分隔符),如果必要的话。当它们变为活动窗口时,它们将返回至少一行(因为光标必须有地方去)。使用 'winwidth' 设置当前窗口的最小宽度。此选项仅在将窗口变小时进行检查。不要使用很大的数字,它会导致打开多个窗口时出现错误。0 到 12 的值是合理的。
'winwidth' 'wiw' E592 'winwidth' 'wiw' 数字 (默认 20) 全局 当前窗口的最小列数。这不是硬性最小值,如果空间不足,Vim 将使用更少的列。如果当前窗口较小,则其大小将增加,以牺牲其他窗口的宽度为代价。将其设置为 999 以使当前窗口始终填充屏幕。将其设置为较小的数字以进行正常编辑。在执行更改当前窗口宽度的命令之后,宽度不会调整。 'winwidth' 应用于当前窗口。使用 'winminwidth' 设置其他窗口的最小宽度。
'wrap' 'nowrap' 'wrap' 布尔值 (默认打开) 窗口本地 此选项更改文本的显示方式。它不会更改缓冲区中的文本,请参阅 'textwidth' 以了解该内容。当打开时,超过窗口宽度的行将换行,并在下一行继续显示。当关闭时,行将不换行,并且只会显示长行的部分内容。当光标移动到未显示的部分时,屏幕将水平滚动。如果必要,该行将在单词中间断开。参见 'linebreak' 以在单词边界处断开。为了使水平滚动更有用,请尝试以下操作
set sidescroll=5
set listchars+=precedes:<,extends:>
参见 'sidescroll''listchars'wrap-off。当 'diff' 选项打开时,此选项无法从 模式行 中设置。
'wrapmargin' 'wm' 'wrapmargin' 'wm' 数字 (默认 0) 缓冲区本地 从右侧窗口边框开始换行的字符数。当在该限制之外键入文本时,将插入一个 <EOL>,并在下一行继续插入。添加边距的选项(例如 'number''foldcolumn')会导致文本宽度进一步缩减。当 'textwidth' 非零时,此选项不适用。另请参阅 'formatoptions'ins-textwidth
'wrapscan' 'ws' 'nowrapscan' 'nows' E384 E385 'wrapscan' 'ws' 布尔值 (默认打开) 全局 搜索环绕文件结尾。也适用于 ]s[s,搜索拼写错误。
'write' 'nowrite' 'write' 布尔值 (默认开启) 全局 允许写入文件。如果未设置,则不允许写入文件。 可用于只读模式,在这种模式下仍允许修改文本。 可以使用 -m-M 命令行参数重置。 即使这需要写入临时文件,过滤文本仍然是可能的。
'writeany' 'wa' 'nowriteany' 'nowa' 'writeany' 'wa' 布尔值 (默认关闭) 全局 允许写入任何文件,无需 "!" 覆盖。
'writebackup' 'wb' 'nowritebackup' 'nowb' 'writebackup' 'wb' 布尔值 (默认开启) 全局 在覆盖文件之前创建备份。 备份将在文件成功写入后删除,除非 'backup' 选项也开启。 警告: 关闭此选项意味着,当 Vim 无法正确写入缓冲区,然后由于某种原因退出时,您将丢失原始文件以及您正在写入的内容。 仅当您的文件系统几乎已满并导致写入失败时才重置此选项(并确保在写入成功之前不要退出 Vim)。 有关另一种解释,请参见 backup-table。 当 'backupskip' 模式匹配时,不会创建备份。 具体取决于 'backupcopy',备份是新文件还是重命名的原始文件(并写入新文件)。
'writedelay' 'wd' 'writedelay' 'wd' 数字 (默认 0) 全局 仅与 'redrawdebug' 一起生效。 每次刷新后等待的毫秒数。
命令索引
快速参考