2011-02-15 47 views
0

讀取VIM可變我使用一個Perl(loader.vim)腳本加載VIM模塊:(的.vimrc)源/whatever/loader.vimVIM:Perl接口,傳遞一個變量以Perl和在Perl

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(「/路徑/要/ bundledir」),但要做到這一點,我需要能夠從Perl的例如內讀取一個變量:

 
function! LoadBundles(path) 
    let var = a:path 
perl HERE 
print "$var\n"; 

我該怎麼做?

我也想在perl這裏保存runtimepath,然後恢復它。如何從perl這裏讀取runtimepath?

+0

而(){<< >>被錯位 – Paleywiener 2011-02-15 04:37:33

回答

3

下面是如何,您可以在 「runtimepath」 選項從嵌入的Perl獲得:

perl VIM::Msg(VIM::Eval('&runtimepath')) 

執行以下操作以獲得更多的從the docs

:help if_perl.txt 

,然後搜索「VIM ::評估和演示」。因此,嘗試:

function! AnExample(arg) 
perl << EOF 
    VIM::Msg(VIM::Eval('a:arg')) 
EOF 
endfunction 

然後進行測試:

:so % 
:call AnExample("hello") 
+0

的感謝!偉大的作品:) – Paleywiener 2011-02-15 07:58:27