我想生成默认的编辑器来编辑一个临时文件,并在编辑器关闭时处理结果。
我正在通过执行git config --get core.editor
从git中获取默认编辑器。就我而言,结果是"C:\\Program Files\\Microsoft VS Code\\Code.exe" --wait
。
我以为我可以做到这一点:
let editorCmd = getCoreEditorFromGit();
let result = Command::new(editorCmd)
.arg(&"random-file.txt")
.status()
.expect("Editor should launch");
但是Windows报告错误:
thread 'main' panicked at 'Editor should launch: Os { code: 5, kind: PermissionDenied, message: "Zugriff verweigert" }', src\main.rs:134:26
我想这是因为Command::new(prog)
期望prog
是程序的路径,而不是整个命令。
我如何使其工作?
很显然,当编辑器路径包含空格时,将字符串拆分为空格是行不通的。我真的想避免解析命令字符串,以便可以正确使用Command
构建器。