Vvars

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


预定义变量
某些变量可以由用户设置,但类型不可更改。
v:argv argv-variable v:argv Vim 被调用时的命令行参数。这是一个字符串列表。第一个项目是 Vim 命令。有关带完整路径的命令,请参见 v:progpath
v:char char-variable v:char 用于评估 'formatexpr' 的参数,用于使用缩写 :map-<expr> 中的 <expr> 时输入的字符。它还被 InsertCharPreInsertEnter 事件使用。
v:charconvert_from charconvert_from-variable v:charconvert_from 要转换的文件的字符编码名称。仅在评估 'charconvert' 选项时有效。
v:charconvert_to charconvert_to-variable v:charconvert_to 转换后文件的字符编码名称。仅在评估 'charconvert' 选项时有效。
v:cmdarg cmdarg-variable v:cmdarg 给定到文件读/写命令的额外参数(“++p”,“++enc=”,“++ff=”)。这在触发文件读/写命令的自动命令事件之前设置。前面有一个空格,以便可以直接在读/写命令后面追加此变量。注意:“+cmd”不包含在此处,因为它将始终执行。
v:cmdbang cmdbang-variable v:cmdbang 为文件读/写命令设置与 v:cmdarg 相同。当使用 "!" 时,值为 1,否则为 0。请注意,这只能在自动命令中使用。对于用户命令,可以使用 <bang>
v:collate collate-variable v:collate 运行时环境排序顺序的当前区域设置。这允许 Vim 脚本了解当前区域设置编码。技术上:它是 LC_COLLATE 的值。当不使用区域设置时,值为“C”。此变量不能直接设置,请使用 :language 命令。请参见 multi-lang
v:completed_item completed_item-variable v:completed_item 包含 完成项目 的字典,用于在 CompleteDone 之后最近完成的单词。如果完成失败,或在离开并重新进入插入模式后,则为空。注意:插件可以修改该值来模拟内置的 CompleteDone 事件行为。
v:count count-variable v:count 针对最后一个 Normal 模式命令给定的计数。可用于在映射之前获取计数。只读。示例
:map _x :<C-U>echo "the count is " .. v:count<CR>
注意:需要 <C-U> 来删除在键入计数后的 ":" 后得到的行范围。当有两个计数时,如 "3d2w",它们会相乘,就像在命令 "d6w" 中一样,对于示例来说。还用于评估 'formatexpr' 选项。
v:count1 count1-variable v:count1 就像 "v:count",但当没有使用计数时默认为一。
v:ctype ctype-variable v:ctype 运行时环境字符的当前区域设置。这允许 Vim 脚本了解当前区域设置编码。技术上:它是 LC_CTYPE 的值。当不使用区域设置时,值为“C”。此变量不能直接设置,请使用 :language 命令。请参见 multi-lang
v:dying dying-variable v:dying 通常为零。当捕获到致命信号时,它将设置为一。当捕获到多个信号时,数字会增加。可以在自动命令中使用它来检查 Vim 是否没有正常终止。示例
:au VimLeave * if v:dying | echo "\nAAAAaaaarrrggghhhh!!!\n" | endif
注意:如果在 v:dying 为一时捕获到另一个致命信号,则不会执行 VimLeave 自动命令。
v:echospace echospace-variable v:echospace 可以在最后一行屏幕中用于 :echo 消息的屏幕单元格数量,在导致 hit-enter-prompt 之前。取决于 'showcmd''ruler''columns'。您需要检查 'cmdheight' 以查看最后一行的上面是否有全宽行可用。
v:errmsg errmsg-variable v:errmsg 最后一个给定的错误消息。可修改(可以设置)。示例
let v:errmsg = ""
silent! next
if v:errmsg != ""
  " ... handle error
v:errors errors-variable assert-return v:errors 由断言函数找到的错误,例如 assert_true()。这是一个字符串列表。断言函数在断言失败时追加一个项目。返回值表示此:如果在 v:errors 中添加了一个项目,则返回一,否则返回零。要删除旧结果,请将其清空
let v:errors = []
如果 v:errors 设置为除列表以外的任何内容,它将由断言函数变成一个空列表。
v:event event-variable v:event 当前 自动命令 的事件数据字典。仅在事件生命周期内有效;存储或传递 v:event 无效!请改为复制它
au TextYankPost * let g:foo = deepcopy(v:event)
键随事件而异;请参见特定事件的文档,例如 DirChangedTextYankPost
键 描述
abort 事件是否在中止条件下触发(例如,c_Escc_CTRL-C 针对 CmdlineLeave)。chan 通道 ID cmdlevel 命令行的级别。cmdtype 命令行的类型,命令行字符。cwd 当前工作目录。inclusive 运动是 包含的,否则是排除的。scope 事件特定的范围名称。operator 当前 操作符。也为 Ex 命令设置(与 v:operator 不同)。例如,如果 TextYankPost:yank Ex 命令触发,那么 v:event.operator 为 "y"。regcontents 作为 readfile() 样式的行列表存储在寄存器中的文本。regname 请求的寄存器(例如,"x" 针对 "xyy") 或未命名操作的空字符串。regtype 由 getregtype() 返回的寄存器类型。visual 选择是视觉的(与例如通过运动不同)。completed_item 在 CompleteChanged 上当前选择的完成项目,当没有选择完成项目时为 {}。height 在 CompleteChanged 上弹出菜单的高度 width 在 CompleteChanged 上弹出菜单的宽度 row 在 CompleteChanged 上弹出菜单的行数,相对于屏幕。col 在 CompleteChanged 上弹出菜单的列数,相对于屏幕。size 在 CompleteChanged 上完成项目的总数。scrollbar 如果弹出菜单有滚动条,则为 v:true,否则为 v:false。changed_window 如果事件在 DirChanged 上更改窗口(或选项卡)时触发,则为 v:true。status 作业状态或退出代码,-1 表示“未知”。TermClose reason 完成完成的原因。 CompleteDone
v:exception exception-variable v:exception 最近捕获但尚未完成的异常的值。另请参见 v:throwpointthrow-variables。示例
try
  throw "oops"
catch /.*/
  echo "caught " .. v:exception
endtry
输出:“caught oops”。
v:exiting exiting-variable v:exiting 退出代码,或在调用 VimLeavePreVimLeave 自动命令之前的 v:null。请参见 :q:x:cquit。示例
:au VimLeave * echo "Exit value is " .. v:exiting
v:false false-variable v:false 用于在 JSON 和 msgpack 中放置“false”的特殊值。请参见 json_encode()。此值在用作字符串(例如,在 expr5 中使用字符串连接运算符)时转换为“v:false”,在用作数字(例如,在 expr5expr7 中使用数字运算符)时转换为零。只读。
v:fcs_choice fcs_choice-variable v:fcs_choice 在触发 FileChangedShell 事件后应该发生什么。可以在自动命令中使用它来告诉 Vim 如何处理受影响的缓冲区:reload 重新加载缓冲区(如果文件已删除,则不起作用)。edit 重新加载缓冲区并检测选项(如 'fileformat''fileencoding''binary')的值(如果文件已删除,则不起作用)。ask 询问用户要执行的操作,就像没有自动命令一样。除了当只有时间戳更改时什么也不会发生。<empty> 什么也不做,自动命令应该完成需要执行的所有操作。默认值为“空”。如果使用另一个(无效)值,那么 Vim 的行为就像它是空的,没有警告消息。
v:fcs_reason fcs_reason-variable v:fcs_reason 触发 FileChangedShell 事件的原因。可以在自动命令中使用它来决定要执行的操作和/或要将 v:fcs_choice 设置为的值。可能的值:deleted 文件不再存在 conflict 文件内容、模式或时间戳已更改且缓冲区已修改 changed 文件内容已更改 mode 文件的模式已更改 time 仅文件时间戳已更改
v:fname fname-variable v:fname 评估 'includeexpr' 时:检测到的文件名。否则为空。
v:fname_diff fname_diff-variable v:fname_diff diff(补丁)文件的名称。仅在评估 'patchexpr' 时有效。
v:fname_in fname_in-variable v:fname_in 输入文件的名称。在评估以下选项时有效:
用于
'charconvert' 要转换的文件 'diffexpr' 原始文件 'patchexpr' 原始文件 以及为 SwapExists 设置交换文件名。
v:fname_new fname_new-variable v:fname_new 文件的新版本的名称。仅在评估 'diffexpr' 时有效。
v:fname_out fname_out-variable v:fname_out 输出文件的名称。仅在评估以下选项时有效:
用于
'charconvert' 生成的转换后的文件 [1] 'diffexpr' diff 的输出 'patchexpr' 生成的修补后的文件 [1] 对写入命令(例如:":w file")进行转换时,它将等于 v:fname_in。对读取命令(例如:":e file")进行转换时,它将是一个临时文件,不同于 v:fname_in。
v:folddashes folddashes-variable v:folddashes 用于 'foldtext':表示已关闭折叠的折叠级别的破折号。在 沙箱 中为只读。 fold-foldtext
v:foldend foldend-variable v:foldend 用于 'foldtext':已关闭折叠的最后一行。在 沙箱 中为只读。 fold-foldtext
v:foldlevel foldlevel-variable v:foldlevel 用于 'foldtext':已关闭折叠的折叠级别。在 沙箱 中为只读。 fold-foldtext
v:foldstart foldstart-variable v:foldstart 用于 'foldtext':已关闭折叠的第一行。在 沙箱 中为只读。 fold-foldtext
v:hlsearch hlsearch-variable v:hlsearch 变量,指示是否启用搜索高亮显示。仅当 'hlsearch' 启用时,设置此变量才有意义。将此变量设置为零等同于 :nohlsearch 命令,将此变量设置为一等同于
let &hlsearch = &hlsearch
请注意,从函数返回时会恢复该值。 function-search-undo.
v:insertmode insertmode-variable v:insertmode 用于 InsertEnterInsertChange 自动命令事件。值:i 插入模式 r 替换模式 v 虚拟替换模式
v:key key-variable v:key 字典 中当前项目的键。仅在评估与 map()filter() 一起使用的表达式时有效。只读。
v:lang lang-variable v:lang 运行时环境消息的当前区域设置。这使 Vim 脚本能够了解当前语言。技术上:它是 LC_MESSAGES 的值。该值取决于系统。不能直接设置此变量,请使用 :language 命令。当消息需要的语言不同于用于字符编码的语言时,它可能不同于 v:ctype。参见 multi-lang.
v:lc_time lc_time-variable v:lc_time 运行时环境时间消息的当前区域设置。这使 Vim 脚本能够了解当前语言。技术上:它是 LC_TIME 的值。不能直接设置此变量,请使用 :language 命令。参见 multi-lang.
v:lnum lnum-variable v:lnum 'foldexpr' fold-expr'formatexpr''indentexpr''statuscolumn' 表达式的行号,'guitablabel''guitabtooltip' 的标签页号。仅在评估其中一个表达式时有效。在 沙箱 中为只读。
v:lua lua-variable v:lua 从表达式调用 Lua 函数的前缀。有关更多信息,请参见 v:lua-call
v:maxcol maxcol-variable v:maxcol 最大行长。根据使用位置,它可以是屏幕列、字符或字节。目前在所有系统上的值为 2147483647。
v:mouse_col mouse_col-variable v:mouse_col 使用 getchar() 获取的鼠标单击的列号。这与 virtcol() 一样,是屏幕列号。当没有鼠标按钮单击时,该值为零。
v:mouse_lnum mouse_lnum-variable v:mouse_lnum 使用 getchar() 获取的鼠标单击的行号。这是文本行号,而不是屏幕行号。当没有鼠标按钮单击时,该值为零。
v:mouse_win mouse_win-variable v:mouse_win 使用 getchar() 获取的鼠标单击的窗口号。第一个窗口的编号为 1,与 winnr() 相同。当没有鼠标按钮单击时,该值为零。
v:mouse_winid mouse_winid-variable v:mouse_winid 使用 getchar() 获取的鼠标单击的 窗口 ID。当没有鼠标按钮单击时,该值为零。
v:msgpack_types msgpack_types-variable v:msgpack_types 字典,包含 msgpackparse()msgpackdump() 使用的 msgpack 类型。字典中的所有类型都是固定(不可编辑)的空列表。要检查某个列表是否属于 msgpack 类型,请使用 is 运算符。
v:null null-variable v:null 用于在 JSON 中放入“null”和在 msgpack 中放入 NIL 的特殊值。参见 json_encode()。当用作字符串(例如在 expr5 中使用字符串连接运算符)时,此值将转换为“v:null”,而当用作数字(例如在 expr5expr7 中使用数字运算符)时,将转换为零。只读。在某些情况下,v:null 可用于未设置的 List、Dict 等。这与空 List、Dict 等略有不同。
v:numbermax numbermax-variable v:numbermax 数字的最大值。
v:numbermin numbermin-variable v:numbermin 数字的最小值(负数)。
v:numbersize numbersize-variable v:numbersize 数字中的位数。通常为 64,但在某些系统上可能为 32。
v:oldfiles oldfiles-variable v:oldfiles 从启动时的 shada 文件加载的文件名列表。这些是 Vim 记住标记的文件。列表的长度受 'shada' 选项的 ' 参数限制(默认为 100)。当不使用 shada 文件时,列表为空。另请参见 :oldfilesc_#<。列表可以修改,但这不会影响稍后存储在 shada 文件中的内容。如果使用除 String 之外的其他值,则会导致问题。
v:operator operator-variable v:operator 在正常模式下给出的最后一个运算符。它是一个单个字符,除了以 <g><z> 开头的命令,在这种情况下它将是两个字符。最好与 v:prevcountv:register 一起使用。如果您想取消运算符待定模式并使用运算符,这将很有用,例如:
:omap O <Esc>:call MyMotion(v:operator)<CR>
该值将保持设置状态,直到输入另一个运算符,因此不要期望它为空。对于 :delete:yank 或其他 Ex 命令,不会设置 v:operator。只读。
v:option_command option_command-variable v:option_command 用于设置选项的命令。在执行 OptionSet 自动命令时有效。
选项是通过以下方式设置的值:
"setlocal" :setlocal:let l:xxx "setglobal" :setglobal:let g:xxx "set" :set:let "modeline" modeline
v:option_new option_new-variable v:option_new 选项的新值。在执行 OptionSet 自动命令时有效。
v:option_old option_old-variable v:option_old 选项的旧值。在执行 OptionSet 自动命令时有效。根据用于设置的命令和选项的类型,这可能是局部旧值或全局旧值。
v:option_oldglobal option_oldglobal-variable v:option_oldglobal 选项的旧全局值。在执行 OptionSet 自动命令时有效。
v:option_oldlocal option_oldlocal-variable v:option_oldlocal 选项的旧局部值。在执行 OptionSet 自动命令时有效。
v:option_type option_type-variable v:option_type set 命令的范围。在执行 OptionSet 自动命令时有效。可以是 "global" 或 "local"
v:prevcount prevcount-variable v:prevcount 上一个 Normal 模式命令的计数。 这是上一个命令的 v:count 值。 如果想要取消 Visual 或 Operator-pending 模式,然后使用计数,这很有用,例如:
:vmap % <Esc>:call MyFilter(v:prevcount)<CR>
只读。
v:profiling profiling-variable v:profiling 通常为零。 使用 ":profile start" 后设置为 1。 查看 分析
v:progname progname-variable v:progname Nvim 被调用的名称(路径已移除)。 只读。
v:progpath progpath-variable v:progpath 正在运行的 Nvim 的绝对路径。 只读。
v:register register-variable v:register 当前 Normal 模式命令有效的寄存器名称(无论该命令是否实际使用了寄存器)。 或者对于当前正在执行的 Normal 模式映射(在接受寄存器的自定义命令中使用)。 如果没有提供寄存器,则为默认寄存器“"”,除非 'clipboard' 包含“unnamed”或“unnamedplus”,那么它是 "*" 或 '+'。 另请查看 getreg()setreg()
v:relnum relnum-variable v:relnum 'statuscolumn' 表达式的相对行号。 只读。
v:scrollstart scrollstart-variable v:scrollstart 描述导致屏幕向上滚动的脚本或函数的字符串。 它仅在为空时设置,因此会记住第一个原因。 它被设置为“Unknown”以进行键入的命令。 这可用于找出脚本导致出现 hit-enter 提示的原因。
v:searchforward searchforward-variable v:searchforward 搜索方向:向前搜索后为 1,向后搜索后为 0。 当直接设置最后搜索模式时,它被重置为向前,查看 quote/。 请注意,返回值在从函数返回时会被恢复。 function-search-undo。 可读写。
v:servername servername-variable v:servername Nvim 的主要监听地址,即 serverlist() 返回的第一个项目。 通常,这是 Nvim 在 启动 时创建的命名管道,或由 --listen 提供(或使用过时的 $NVIM_LISTEN_ADDRESS 环境变量)。
另请查看 serverstart() serverstop()。 只读。
$NVIM
$NVIM 由 终端jobstart() 设置,因此它暗示当前环境是 Nvim 的子进程。 例如:
if $NVIM
  echo nvim_get_chan_info(v:parent)
endif
请注意 $NVIM 的内容将来可能会发生变化。
v:shell_error shell_error-variable v:shell_error 最后一个 shell 命令的结果。 当非零时,最后一个 shell 命令有错误。 当为零时,没有问题。 这仅在 shell 将错误代码返回给 Vim 时有效。 值 -1 通常用于无法执行命令时。 只读。 例如:
!mv foo bar
if v:shell_error
  echo 'could not rename "foo" to "bar"!'
endif
v:statusmsg statusmsg-variable v:statusmsg 上一个给定的状态消息。 可修改(可设置)。
v:stderr stderr-variable v:stderr 与 stderr 对应的 channel-id。 该值始终为 2; 使用此变量使代码更具描述性。 与 stdin 和 stdout(查看 stdioopen())不同,stderr 始终对写入开放。 例如:
:call chansend(v:stderr, "error: toaster empty\n")
v:swapchoice swapchoice-variable v:swapchoice SwapExists 自动命令可以将其设置为处理现有交换文件的所选选项:'o' 以只读方式打开 'e' 无论如何编辑 'r' 恢复 'd' 删除交换文件 'q' 退出 'a' 中止 该值应为单个字符字符串。 空值会导致询问用户,就像没有 SwapExists 自动命令时一样。 默认值为“”。
v:swapcommand swapcommand-variable v:swapcommand 在文件打开后要执行的 Normal 模式命令。 可用于 SwapExists 自动命令,让另一个 Vim 打开文件并跳转到正确的位置。 例如,当跳转到标签时,值为 ":tag tagname\r"。 对于 ":edit +cmd file",值为 ":cmd\r"。
v:swapname swapname-variable v:swapname 找到的交换文件名。 仅在 SwapExists 事件期间有效。 只读。
v:t_blob t_blob-variable v:t_TYPE v:t_blob Blob 类型的的值。 只读。 查看:type()
v:t_bool t_bool-variable v:t_bool Boolean 类型的的值。 只读。 查看:type()
v:t_dict t_dict-variable v:t_dict Dictionary 类型的的值。 只读。 查看:type()
v:t_float t_float-variable v:t_float Float 类型的的值。 只读。 查看:type()
v:t_func t_func-variable v:t_func Funcref 类型的的值。 只读。 查看:type()
v:t_list t_list-variable v:t_list List 类型的的值。 只读。 查看:type()
v:t_number t_number-variable v:t_number Number 类型的的值。 只读。 查看:type()
v:t_string t_string-variable v:t_string String 类型的的值。 只读。 查看:type()
v:termrequest termrequest-variable v:termrequest 最近从嵌入式 终端 中运行的进程发送的 OSC 或 DCS 控制序列的值。 这可以在 TermRequest 事件处理程序中读取,以响应嵌入式应用程序的查询。
v:termresponse termresponse-variable v:termresponse Nvim 从终端接收的最新 OSC 或 DCS 控制序列的值。 这可以在使用另一个转义序列查询终端后,在 TermResponse 事件处理程序中读取。
v:testing testing-variable v:testing 必须在使用 test_garbagecollect_now() 之前设置。
v:this_session this_session-variable v:this_session 最后加载或保存的会话文件的文件名。 当没有保存会话文件时为空。 查看 :mksession。 可修改(可设置)。
v:throwpoint throwpoint-variable v:throwpoint 最近捕获并未完成的异常抛出的位置。 在键入命令时未设置。 另请查看 v:exceptionthrow-variables。 例如:
try
  throw "oops"
catch /.*/
  echo "Exception from" v:throwpoint
endtry
输出: "Exception from test.vim, line 2"
v:true true-variable v:true 用于在 JSON 和 msgpack 中放置“true”的特殊值。 查看 json_encode()。 此值在用作字符串(例如在 expr5 中使用字符串连接运算符)时会转换为“v:true”,而在用作数字(例如在 expr5expr7 中使用数字运算符)时会转换为 1。 只读。
v:val val-variable v:val ListDictionary 的当前项目的的值。 仅在评估与 map()filter() 一起使用的表达式时有效。 只读。
v:version version-variable v:version Vim 版本号:主版本乘以 100 加上次版本。 Vim 5.0 是 500,Vim 5.1 是 501。 只读。 使用 has() 检查 Nvim(不是 Vim)版本
:if has("nvim-0.2.1")
v:vim_did_enter vim_did_enter-variable v:vim_did_enter 启动时为 0,在 VimEnter 之前为 1。 只读。
v:virtnum virtnum-variable v:virtnum 'statuscolumn' 表达式的虚拟行号。 在绘制虚拟行的状态列时为负,在绘制实际缓冲区行时为零,在绘制缓冲区行的换行部分时为正。 只读。
v:warningmsg warningmsg-variable v:warningmsg 上一个给定的警告消息。 可修改(可设置)。
v:windowid windowid-variable v:windowid 应用程序特定的窗口“句柄”,可以由任何附加的 UI 设置。 默认值为零。 注意: 对于 Nvim 窗口,使用 winnr()win_getid(),查看 窗口-ID
主要
命令索引
快速参考