我使用Perl(loader.vim)脚本加载VIM模块:(。vimrc)source /whatever/loader.vim
loader.vim:
function! LoadBundles() perl HERE while(</root/.vim/bundle/*/plugin/*>) { my ($path, $fname) =($_ =~ m|^(.+/)(.+?)$|); #VIM::Msg("$path $fname\n"); VIM::DoCommand("set runtimepath=$path"); VIM::DoCommand("runtime! $fname"); } HERE endfunction call LoadBundles()
我想做一些类似LoadBundles('/ path / to / bundledir')的东西,但为了做到这一点,我需要能够从Perl中读取变量,例如:
function! LoadBundles(path) let var = a:path perl HERE print "$var\n";
我该怎么做?
我还想在perl HERE中保存运行时路径,然后将其恢复。如何从perl HERE中读取runtimepath?
答案 0 :(得分:3)
以下是如何从嵌入式Perl中获取“runtimepath”选项:
perl VIM::Msg( VIM::Eval('&runtimepath') )
执行以下操作以从the docs获取更多信息:
:help if_perl.txt
然后搜索“VIM :: Eval”。所以试试:
function! AnExample(arg)
perl << EOF
VIM::Msg( VIM::Eval('a:arg') )
EOF
endfunction
然后测试:
:so %
:call AnExample("hello")