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 が期待しているものでもないと思います。サブプロセスが何らかの形で引用符をエスケープしているように見えますが、その理由はわかりません。

これを期待どおりに動作させる方法はありますか?

4

1 に答える 1

5

subprocess.callシェルを使用せずに引数を直接プロセスに渡すため ( を設定しない限り) 、引用符は必要ありませんshell=True

それで、subprocess.call(['gvim.exe', "+map <F5> :echo 'Hello!'<cr>"])十分でしょう。

于 2013-01-31T18:12:30.643 に答える