我正在try 运行一个简单的程序,该程序会产生一个VIM进程.

用户应该能够(当exec.Command启动时)切换到vim窗口,并且进程执行应该在那里停止.

当用户关闭vim(wq!)时,程序执行应该从该点继续.

下面这个简单的try 失败了,但我想不出原因

package main

import (
    "log"
    "os/exec"
)

func main() {

    cmd := exec.Command("vim", "lala")

    err := cmd.Run()

    if err != nil {
        log.Fatal(err)
    }
}
▶ go run main.go
2022/11/25 09:16:44 exit status 1
exit status 1

为什么是exit status 1美元?

推荐答案

你错过了这两行:

cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout

多亏了这两行,用户才能在终端中使用VIM编辑文件.当用户退出终端(例如,通过命令:wq)时,控制返回给程序.下面,您可以找到完整的代码:

package main

import (
    "log"
    "os"
    "os/exec"
)

func main() {
    cmd := exec.Command("vim", "lala")

    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout

    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }
}

希望这个能帮上忙!

Go相关问答推荐

追加一个字节数组的分配比2个字节数组的分配要少得多

理解Golang并发:缓冲通道的意外行为

Websocket服务器实现与x/net库trowing 403

如何在VSCode中为特定的.go文件创建调试配置?

Golang Gorm Fiber / argon2.Config 未定义

如何测试 Zerolog 记录器引发类型错误的日志(log)事件?

Fizz对Gin的OpenAPI生成器正在重命名类型

如何将任何类型的数据值传递到 Golang 中的 GRPC Protobuf struct ?

如何在 Go 中将 int 转换为包含 complex128 的泛型类型?

上传图片失败,出现错误dial tcp: lookup api.cloudinary.com: no such host

Golang 中的泛型类型转换

将值发送到 Channel 并在就绪时读取输出

如何使用带有方法的字符串枚举作为通用参数?

从 os.stdout 读取

对所有标志进行 ORing 的简短方法

如何在 GORM 中迭代一个 int 数组

Golang 泛型

try 执行`go test ./... -v`时,Golang中有没有办法设置标志

处理程序中的无限循环

我该如何做错误处理惯用的方式