gpt4 book ai didi

node.js - 提示时 STDOUT 在 STDIN 前面?

转载 作者:搜寻专家 更新时间:2023-11-01 00:46:19 27 4
gpt4 key购买 nike

我有一个 setInterval 每秒记录一次时间。我想使用 STDIN 在我的脚本中执行命令,但 STDOUT 在我键入时移动光标并将其自身置于提示符中。

我对提示没有太多经验,刚开始研究这个。

脚本:

setInterval(function(){
console.log(new Date().toUTCString());
},1000)

var readline = require('readline');

var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.question("Hi there, how are you?", function(answer) {

});

输出:

Hi there, how are you?Mon, 17 Dec 2012 16:20:34 GMT
fine
Mon, 17 Dec 2012 16:20:35 GMT
Mon, 17 Dec 2012 16:20:36 GMT
Mon, 17 Dec 2012 16:20:37 GMT
Mon, 17 Dec 2012 16:20:38 GMT

你会如何解决这样的问题?缓存所有的 STDOUT,清除屏幕,写入所有的 STDOUT 并在每次 console.log() 记录时再次提示?

是的,我确实想创建某种基于聊天的系统/命令行界面,其中输出高于输入。

谢谢!

最佳答案

基本上您要问的是如何制作复杂的终端应用程序。最流行的库称为 ncurses,它有 node bindings here .不幸的是,我没有使用它的个人经验。

你的另一个选择是按照你说的去做,并使用你自己的内部缓冲区手动重新渲染终端。您可以使用 Node 的 tty 模块获取输出终端的大小,docs here , 然后使用 ANSI escape codes要清除终端,将光标定位在您想要的位置,然后使用 process.stdout.write 打印您想要的内容。

您可以在我的另一个问题 over here 中看到使用转义码的示例

关于node.js - 提示时 STDOUT 在 STDIN 前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com