2013-01-31 54 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

呵呵。我*想*我也嘗試過這種方法。我猜不會! –

相關問題