我看过这个演示,打印出一段文字(就像你在输入some-command --help
时得到的那样),然后又跳回到文本中的几个关键字并更改了文字颜色,< em>已经在终端中打印出来。
这对我来说似乎很疯狂。他们是怎么做到的?
开始考虑它,我猜stdout
和stdin
在技术上是一个“IO流”,所以也许这是一个跟踪光标位置的持久变量?我记得在构建语言解析器时做了类似的事情。
目标是这样的:假设您在控制台中键入以下内容,并输出一个空白数组,因为在Node.js中,它都是异步的,我们不想每次在控制台中编写异步函数: / p>
$ node app.js
> App.User.all()
=> []
然后,当执行异步回调时,您返回并编辑=> []
以包含结果:
$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]
至少知道如何实现,即使有很多其他问题需要解决(与此问题无关。)我知道你可以定义一个全局回调并执行{{1}之类的操作。 })。
如何在已经打印后编辑终端输出?
答案 0 :(得分:42)
终于找到了“demo”:
定位光标:\033[<L>;<C>H
或\033[<L>;<C>f
(将光标放在第L行和第C列)
\033[<N>A
\033[<N>B
\033[<N>C
\033[<N>D
\033[2J
\033[K
\033[s
\033[u
答案 1 :(得分:0)
如果您在Mac OX X中工作,我相信Eddie程序会执行“在已经打印后编辑终端输出”之类的操作。 (参见“维基百科的Eddie(文本编辑)”)。
在文件菜单下,选择“新建”,然后在“设置/文档设置...”下选择“外壳窗口”。之后尝试几个unix命令:date,ls,cal等。然后放上光标并编辑它们。
我会尝试使用Node但我无法在Mac OS X 10.5.8下安装它(Node)。