【问题标题】:How can I tell subprocess to stop escaping my quotes?如何告诉 subprocess 停止转义我的引号?
【发布时间】:2013-01-15 22:37:03
【问题描述】:

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

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

此命令在命令行上运行:

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

然后我按下 F5 它会告诉我你好。

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

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

完全不是我所期望的,我也不认为这是 Vim 所期望的。 看起来 subprocess 以某种方式转义了我的引号,但我不知道为什么。

有什么方法可以让我按预期工作吗?

【问题讨论】:

    标签: python vim subprocess


    【解决方案1】:

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

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

    【讨论】:

    • 是的,问题不在于转义(毕竟那只是为了显示字符串),而是引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多