在 return/new 行后隐藏控制台的用户输入

Hide console's user input after return/new line

我想做的是 hiding/erasing 所有用户 input 从 nodejs 控制台应用程序一次 entered,所以当用户 插入 一些文本然后输入回车时,他将无法再在控制台中阅读他刚刚 输入 的内容(所以基本上在 输入 ).

后立即删除该行

这应该很容易实现,但我不知道该怎么做 =)。

提前致谢

编辑: 假设我们有这段代码:

const readline = require('readline')

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

rl.question('How ya doin?\n', input => {
    console.log('seems like you\'r doing ' + input.toString())  
})

根据Bash HOWTO

Move the cursor up N lines:

3[<N>A

要用您的输出覆盖用户的第 1 行输入,您应该向上移动 1 行并打印您的输出。它看起来像这样:

console.log('3[1A' + 'seems like you\'r doing ' + input.toString());

更新: 找到了一个不错的答案:)

How do you edit existing text (and move the cursor around) in the terminal?

看起来 readline 已经可以为您处理这个问题了..

const readline = require('readline')

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

rl.question('How ya doin?\n', input => {
    readline.moveCursor(process.stdout, 0,-1)
    console.log('seems like you\'r doing ' + input.toString())  
})