How to specify default value (e开发者_StackOverflow.g. 0, None) for a parameter in Vim script?
From the docs, it seems that arguments can't have default values in Vim script. However, you can emulate this by defining a function with variable number of arguments, and using a:0
to determine the number of extra arguments and a:1
through a:n
to access them:
function Foo(bar, ...)
if a:0 > 0
let xyzzy = a:1
else
let xyzzy = 0
end
endfunction
You can use get to select an argument in the specific position or a default value if it's not present.
function! Foo(bar, ...)
let baz = get(a:, 1, 0)
endfunction
Since Vim 8.1.1310 Vim also supports real optional function arguments.
However, that means that most vim installation don't support this yet. Neovim has that feature since version 0.7.0.
Example from :help optional-function-argument
:
function Something(key, value = 10)
echo a:key .. ": " .. a:value
endfunction
call Something('empty') "empfty: 10"
call Something('key', 20) "key: 20"
精彩评论