如何在vimscript中将varargs传递给另一个函数?

idb*_*rii 10 vim variadic-functions

我想为插件的函数编写一个包装器,但它使用了varargs(...).如何将我的函数接收的相同参数传递给插件的函数?

例:

function! PluginInterface(...)
    for i in a:000
        echo i
    endfor
endfunction

function! MyInterface(...)
    echo a:1 . ' is great'
    call PluginInterface(a:000)
endfunction

echo '>> Their call'
call PluginInterface('hello', 'world')
echo '>> My call'
call MyInterface('hello', 'world')
Run Code Online (Sandbox Code Playgroud)

idb*_*rii 20

而不是直接调用函数(call PluginInterface(a:000)),使用call():

call call("PluginInterface", a:000)
call call(function("PluginInterface"), a:000)
Run Code Online (Sandbox Code Playgroud)

(这看起来很奇怪,但是它call()是一个函数,所以你仍然必须用它:call或者let x =接受它的东西作为前缀expr.)

:help call().