如何告诉子进程停止转义我的引号?

时间:2013-01-31 18:10:52

标签: python vim subprocess

我正在尝试使用子进程调用Vim,并传递一个参数。例如:

subprocess.call(['gvim.exe', ''' "+map <F5> :echo 'Hello!'<cr>" '''])

此命令适用于命令行:

> gvim.exe "+map <F5> :echo 'Hello!'<cr>"

然后我点击 F5 然后它告诉我你好。

子进程调用不起作用。当我查看任务管理器中的进程时,我看到我的字符串现在是:

"\" +map <F5> :echo 'Hello!'<cr>\""

根本不是我所期望的,我也不认为这也是Vim所期望的。 看起来就像子进程以某种方式逃避我的引号,但我不知道为什么。

有什么方法可以像我期望的那样让它发挥作用吗?

1 个答案:

答案 0 :(得分:5)

引号不是必需的,因为subprocess.call在不使用shell的情况下将参数直接传递给进程(除非您设置shell=True)。

所以,subprocess.call(['gvim.exe', "+map <F5> :echo 'Hello!'<cr>"])就足够了。