如何理解VimScript中的`{'key:function('1')}`?

时间:2014-03-07 07:50:03

标签: vim vim-plugin vundle

我最近赞成一个名为Vundle的Vim插件。名为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”的匿名函数的用法吗?


更新

感谢Karkat先生。

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

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

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

  

然后函数将变为nusmber,dict.len的值为a   引用此功能的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

1 个答案:

答案 0 :(得分:1)

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

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

您可以通过

了解有关功能定义的更多信息
:function {1}