控制台中的多行输入

时间:2018-12-08 02:26:44

标签: go input terminal

为此,他四处张望,但没有任何答案。

我可以通过使用scan或bufio.readstring循环在Go中使用控制台创建多行提示输入,并检查输入到结束输入字符。或者甚至可以将任何字符传递给bufio.readstring,以便输入\ n后可以继续阅读。

但是在两种情况下,用户都无法将其退格到前一行,因为已经输入并验证了前一行。

如何使用户退格到上一行,或在控制台输入的各行之间自由移动光标?

我可以想象清除终端并重画一些东西。那是唯一的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用一个readline库,如本演示所示

package main

import (
    "github.com/chzyer/readline"
)

func main() {
    rl, err := readline.NewEx(&readline.Config{
        Prompt:                 "> ",
        HistoryFile:            "/tmp/readline-multiline",
        DisableAutoSaveHistory: true,
    })
    if err != nil {
        panic(err)
    }
    defer rl.Close()

    for {
        cmd, err := rl.Readline()
        if err != nil {
            break
        }
        rl.SaveHistory(cmd)
    }
}