1

最近,我支持一个名为Vundle的 Vim 插件。一个名为 as 的字典g:bundle有一个项目:

{'path': function('1')}

如果我调用 item.path(),Vundle 可以在 vundle/config.vim 中调用“s:bundle.path()”:

func! s:bundle.path()
    return s:expand_path(g:bundle_dir.'/'.self.name)
endf

那么,你能告诉我关于Vimscript中匿名函数的参数“1”的用法吗?


更新:

谢谢卡尔卡特先生。

我使用:function {1}命令,其结果是:

function 1() dict                                                                                                                                                          
    return s:expand_path(g:bundle_dir.'/'.self.name)
endfunction

功能块同s:bundle.path(),证明大括号中的数字表示Funcref

然后该函数将获得一个数字,而 dict.len 的值是一个引用该函数的 Funcref。该函数只能通过 Funcref 使用。当没有引用它的 Funcref 时,它将自动被删除。

参考:

https://github.com/gmarik/Vundle.vim/blob/master/autoload/vundle/config.vim#L106 http://vimdoc.sourceforge.net/htmldoc/eval.html#Dictionary-function

4

1 回答 1

1

您看到的是一个匿名 Dictionary 函数。这意味着对于 Dictionary {'path': function('1')}(我们称之为foo,我们知道它是 的一个元素g:bundles),已经定义了这个:

let foo = {}
function foo.path() dict
    return "foo"
endfunction

您可以通过以下方式了解有关函数定义的更多信息

:function {1}
于 2014-03-07T08:07:52.863 回答