是否可以从 Vim 脚本中另一个自动加载的字典函数中调用自动加载的字典函数?
我想有这样的东西autoload/foo.vim
:
function! foo#Initialize()
return 1
endfunction
let foo#MyDict = {}
function! foo#MyDict.say_hi() dict
echo "hi"
endfunction
let foo#OtherDict = {}
function! foo#OtherDict.call_hi() dict
call foo#MyDict.say_hi()
endfunction
我想从另一个文件/交互式/无论如何使用它:
call foo#Initialize()
call foo#OtherDict.call_hi()
不幸的是,这给了我一个错误:
E121: Undefined variable: foo#MyDict
foo#Initialize()
由于 Vim 中与字典函数不触发自动加载相关的错误/限制,调用是必要的。有一个关于这个的谷歌群组线程,布拉姆证实了这个问题。
但是,我不确定这是这个问题的根源,因为一旦文件被自动加载(通过foo#Initialize()
),调用字典函数通常会起作用。上面的嵌套调用示例给了我一个错误。
为了澄清,这很好用:
function! foo#SayHello()
echo "hello"
endfunction
function! foo#OtherDict.say_hello() dict
call foo#SayHello()
end
只有对自动加载的字典函数的嵌套调用才会失败。