我正在尝试创建一个将在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
。
有什么方法吗?
答案 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