Rob*_*rst 5 shell command-line-interface go tty stty
我正在尝试构建一个全屏终端应用程序。我使用 Go 作为我选择的语言。我已经弄清楚如何读取os.Stdin,但我不清楚如何清除终端窗口并操纵光标位置。我还想捕获终端输入而不打印(回显)。
我的问题是:
我的意图:
我想创建一个全屏终端应用程序,它呈现自己的 UI 并在内部处理输入(热键/导航/等...)。
如果有任何库涵盖此类用例,请随时推荐它们。
清除终端和设置位置的最简单方法是通过 ansi 转义码。然而,这可能不是理想的方式,因为终端的变化可能会反过来影响您。
fmt.Print("\033[2J") //Clear screen
fmt.Printf("\033[%d;%dH", line, col) // Set cursor position
Run Code Online (Sandbox Code Playgroud)
更好的选择是使用像goncurses或termbox-go这样的库(来源:第二个来自 Tim Cooper 的评论)。
有了这样的库,你可以做这样的事情:
import (
gc "code.google.com/p/goncurses"
)
func main() {
s, err := gc.Init()
if err != nil {
panic(err)
}
defer gc.End()
s.Move(5, 2)
s.Println("Hello")
s.GetChar()
}
Run Code Online (Sandbox Code Playgroud)
上面的代码复制自Rosetta代码
| 归档时间: |
|
| 查看次数: |
4857 次 |
| 最近记录: |