如何编辑终端中的现有文本(并移动光标)?

Lan*_*ard 20 terminal stdout node.js

我看过这个演示一次打印出一段文字(就像你在打字时得到的那样some-command --help),然后它又跳回到文本中的几个关键词并改变了文字颜色,之后它已经在终端打印出来了.

这对我来说似乎很疯狂.他们是怎么做到的?

开始考虑它,我猜stdout并且stdin在技​​术上是一个"IO流",所以也许这是一个跟踪光标位置的持久变量?我记得在构建语言解析器时做了类似的事情.

目标是这样的:假设您在控制台中键入以下内容,并输出一个空白数组,因为在Node.js中,它都是异步的,我们不想每次在控制台中编写异步函数:

$ node app.js
> App.User.all()
=> []
Run Code Online (Sandbox Code Playgroud)

然后,当执行异步回调时,您返回并编辑=> []以包含结果:

$ node app.js
> App.User.all()
=> [#<User id:1>, #<User id:2>...]
Run Code Online (Sandbox Code Playgroud)

即使有很多其他问题要解决这个问题,至少知道如何实现也是很棒的(与这个问题无关.我知道你可以定义一个全局回调并做类似的事情App.User.all(_c)).

如何在打印后编辑终端输出?

Lan*_*ard 44

终于找到了"demo":

  • 不能在模板字符串或严格模式下使用,但可以用十六进制`\ x1b`或unicode`\u001b`替换八进制`\ 033`. (3认同)