VIM:Perl接口,将变量传递给Perl并从Perl读取vim变量

时间:2011-02-15 04:35:07

标签: perl vim

我使用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?

1 个答案:

答案 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")