我尝试在go程序中调用vim
,代码类似这样:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
err := exec.Command("vim", "a.txt").Run()
if err != nil {
fmt.Println(err)
}
os.Exit(0)
}
我运行 go run mycode.go
然后得到:
exit status 1
我已经尝试了几种方法来成功,例如将 Run()
替换为 Start()
、Output()
、...
,但似乎不起作用.最后,我尝试做的是尝试调用 vim
并停止我当前的 go 程序。我只想看到 vim
出现,仅此而已。
最佳答案
为了让 vim 呈现它的界面,您需要将标准输入/输出流附加到进程:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("vim", "a.txt")
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
os.Exit(0)
}
不附加流类似于从 shell 运行以下命令:
vim < /dev/null > /dev/null 2> /dev/null
关于command-line - 无法在 go 代码中调用 `vim`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744648/