使用vimrc函数传递python参数

时间:2016-07-28 21:05:45

标签: python vim

我正在尝试创建一个将在autocmd中使用的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

有什么方法吗?

2 个答案:

答案 0 :(得分:1)

当然,您可以使用execute命令执行一个字符串,该字符串是根据您想要的命令构建的,并且变量连接在一起:

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

我在Test函数中省略了filename参数,因为它似乎没有被使用

答案 1 :(得分: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