2013-01-31 52 views
5

我想使用子进程调用Vim,并将它传递给一个参数。例如:如何告诉子进程停止转义我的引号?

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

在命令行上此命令的作用:

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

然后我打F5,它告诉我打招呼。

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

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

完全不是我所料,我不认为这是什么Vim期待,无论是。它看起来像子进程是以某种方式逃避我的引号,但我不知道为什么。

有什么办法可以让我的工作像我期待的那样?

回答

5

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

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

+1

是的,问题不是转义(毕竟这只是显示字符串),它是引号。 – kindall

+0

呵呵。我*想*我也尝试过这种方法。我猜不会! –

相关问题