2016-07-28 78 views
0

我正在嘗試創建一個將在autocmd中使用的vimrc函數。該函數只需調用一個python腳本並將文件名作爲參數傳遞。使用vimrc函數傳遞Python參數

的.vimrc

fu! Test(filename) 
    let filename = expand("%:t") 
    "echom filename 
    !test.py filename 

example.py

#!usr/bin/python 
import sys 

print sys.argv[1] 

如果我去掉回波線,example.py正確回顯。但是,如果我嘗試按照上面顯示的方式執行操作,字符串filename會被直接傳遞。

有沒有辦法解決這個問題?

回答

1

當然,你可以使用execute命令來執行一個字符串,它是從你想要的命令建立和變量連接在一起:

fu! Test() 
    let filename = expand("%:t") 
    execute "!test.py " . l:filename 
endfunction 

我在你的Test功能省略了文件名參數,因爲它似乎並沒有被使用

+0

完美,非常感謝! – kennedyl

1

你有兩個選擇要麼你直接通過文件名作爲參數或者把它作爲一個局部變量:

fu! Test(filename) 
    "echom a:filename 
    execute "!test.py ".a:filename 

fu! Test() 
    let l:filename = expand("%:t") 
    "echom filename 
    execute "!test.py ". l:filename