为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 go 代码中调用 `vim`

无法在 go 代码中调用 `vim`

Go
侃侃无极 2021-12-07 10:10:17
我尝试vim在 go 程序中调用,其代码类似于:package mainimport (        "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出现,仅此而已。
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

为了让 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


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信