我尝试vim在go程序中调用,代码类似于:
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)
}
Run Code Online (Sandbox Code Playgroud)
我跑了go run mycode.go然后得到了:
exit status 1
Run Code Online (Sandbox Code Playgroud)
我曾尝试多种方法来接替这个如替换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)
}
Run Code Online (Sandbox Code Playgroud)
不附加流类似于从shell运行以下命令:
vim < /dev/null > /dev/null 2> /dev/null
Run Code Online (Sandbox Code Playgroud)