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

我看过这个demo,打印出一段文字(就像inputsome-command --help时会得到的那样),然后跳回到文本中的几个关键字,然后改变文本的颜色已经在terminal打印出来了

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

开始思考,我猜stdoutstdin在技​​术上是一个“IOstream”,所以也许这是一个持续variables,跟踪光标的位置? 我记得在构build语言parsing器时做类似的事情。

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

 $ node app.js > App.User.all() => [] 

然后当asynchronouscallback执行时,你回去编辑=> []来包含结果:

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

即使还有很多其他问题需要解决(至less与这个问题无关),而且我知道你可以定义一个全局的callbackApp.User.all(_c)App.User.all(_c) )。

打印完成后如何编辑terminal输出?

最后发现“演示”:

如果你在Mac OX X上工作,我相信程序Eddie会做一些类似于“已经打印完毕后编辑terminal输出”的东西。 (参见“维基百科的Eddie(文本编辑器)”)。

在文件菜单下select“新build”,然后在“设置/文档设置…”下select“shell窗口”。 之后,尝试一些UNIX命令:date,LS,CAL等,然后把你的光标,并编辑这些。

我会尝试与节点,但我不能在Mac OS X 10.5.8下安装它(节点)。