2016-07-28 145 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