Vim脚本中函数参数的默认值

Vay*_*ayn 24 vim

如何为Vim脚本中的参数指定默认值(例如0,None)?

ham*_*mar 35

从文档中,似乎参数不能在Vim脚本中具有默认值.但是,您可以通过定义具有可变数量参数的函数来模拟这一点,并使用a:0确定额外参数的数量并a:1通过a:n访问它们:

function Foo(bar, ...)
  if a:0 > 0
    let xyzzy = a:1
  else
    let xyzzy = 0
  end
endfunction
Run Code Online (Sandbox Code Playgroud)

  • 使用三元语句的简短版本:`let l:xyzzy = a:0> 0?a:1:0` (7认同)

the*_*ian 9

您可以使用get在特定位置选择参数,如果不存在,则使用默认值.

function! Foo(bar, ...)
    let baz = get(a:, 1, 0)
endfunction
Run Code Online (Sandbox Code Playgroud)


rad*_*lan 5

Vim 8.1.1310 开始, Vim 也支持真正的可选函数参数。

但是,这意味着大多数 vim 安装尚不支持此功能。此外,neovim 也不提供该功能。