30

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

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

开始考虑它,我猜它stdoutstdin技术上是一个“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)),至少知道如何实现这将是很棒的。

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

4

2 回答 2

61

终于找到了“demo”:

于 2012-05-31T08:44:09.087 回答
0

如果您在 Mac OS X 中工作,我相信 Eddie 程序会执行类似“在打印完后编辑终端输出”之类的操作。(参见“维基百科的 Eddie(文本编辑器)”)。

在文件菜单下,选择“新建”,然后在“设置/文档设置...”下选择“Shell Window”。之后尝试几个 unix 命令:date、ls、cal 等。然后放置光标并编辑这些命令。

我会尝试使用 Node,但我无法在 Mac OS X 10.5.8 下安装它(Node)。

于 2012-05-15T02:06:01.220 回答