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

问题描述 投票:0回答:2

我曾经看过这个演示,它打印了一段文本(就像您在输入

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)
的操作)。

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

node.js terminal stdout
2个回答
67
投票

终于找到“demo”了:


0
投票

如果您使用的是 Mac OS X,我相信程序 Eddie 会执行类似“在打印终端输出后对其进行编辑”之类的操作。 (参见“维基百科上的艾迪(文本编辑器)”)。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.