是否可以从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
由于Vim中与字典函数相关的错误/限制未触发自动加载,因此需要调用foo#Initialize()
。有关于此的Google Groups主题,Bram确认了这个问题。
然而,我不确定这是否是这个问题的根源,因为一旦文件被自动加载(通过foo#Initialize()
),调用字典函数就可以正常工作。这是上面的嵌套调用示例,它给了我一个错误。
澄清一下,这很好用:
function! foo#SayHello()
echo "hello"
endfunction
function! foo#OtherDict.say_hello() dict
call foo#SayHello()
end
它只是对自动加载的字典函数的嵌套调用失败。
答案 0 :(得分:1)
当脚本在使用前放入plugin/
目录或明确地:runtime
'时,会发生同样的情况。但是,使用脚本本地foo#MyDict
代替s:MyDict
时没有错误。这对我来说也是意想不到的。请在vim_dev mailing list上提交错误。