gpt4 book ai didi

command-line - 无法在 go 代码中调用 `vim`

转载 作者:IT王子 更新时间:2023-10-29 01:21:36 25 4
gpt4 key购买 nike

我尝试在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com