怎么在终端输出时可以分区块更新内容?

2019-06-17 15:17:42 +08:00
 Keyss

如图所示,经常看到这样展示的程序,但是不知道该怎么写代码
只知道\r可以刷新本行

这样刷新全屏幕到底是怎么实现的?不可能是一次刷一屏吧? 我所使用的编程语言有 go,java,python,尝试了很多种方法都弄不出来,求解

2828 次点击
所在节点    Linux
8 条回复
Northxw
2019-06-17 15:23:18 +08:00
有 vim 命令,自己谷歌
dorentus
2019-06-17 15:44:39 +08:00
去看看 libncurses
ysc3839
2019-06-17 16:39:44 +08:00
这种应该是用 ansi escape sequences 或者叫 vt sequences 实现的吧。
Keyss
2019-06-17 17:03:28 +08:00
@Northxw 你的意思是相当于在屏幕上修改文本?
Vegetable
2019-06-17 17:10:08 +08:00
比较成熟的项目之前留意到 node 有一个
https://www.npmjs.com/package/dynamic-terminal
核心就是 3 楼说的东西,和浏览器里边 react 的思路是差不多的,大概就是文本 diff,然后刷新发生了变化的地方.
Northxw
2019-06-17 17:23:49 +08:00
@Northxw 额 记错了。你再找找吧
Keyss
2019-06-17 17:33:44 +08:00
@Vegetable 但是这个是在 console 里面更新的,更前端的不一样啊,console 的话是标准准备要修改得回到上面一行,所以也就是这个他就是在一行里面输出的
Keyss
2019-06-17 18:36:31 +08:00
OK
谢谢大家
可以在 GitHub 搜索对应的 tui 或者 cui,cli,之类的关键字

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/574749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX