我曾经看到一个演示,它打印出了一个段落的文本(就像在键入 some-command --help
时会得到的那样),然后在已经在终端中打印出来后,跳回到文本中的一些关键字并更改文本颜色。
这对我来说听起来很疯狂。他们是怎么做到的?
开始思考,我想 stdout
和 stdin
在技术上是一个 "IO 流",所以可能是一个持久变量,用于跟踪光标的位置吗?我记得当构建语言解析器时做过类似的事情。
目标是这样的:假设你在控制台中输入以下内容,并输出空数组,因为在 Node.js 中,所有内容都是异步的,我们不想每次在控制台中编写异步函数:
$ node app.js
> App.User.all()
=> []
然后当异步回调执行时,您返回并编辑=> []
以包括结果:
$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]
即使有很多其他问题需要解决(与此问题无关),但至少知道如何实现将是很棒的。我知道你可以定义全局回调并执行类似于 App.User.all(_c)
的操作。
如何在终端输出已经打印出来后进行编辑?
\x1b
或 Unicode 的\u001b
替换八进制的\033
。 - Jason Goemaat