返回/换行后隐藏控制台的用户输入

时间:2017-07-17 14:56:32

标签: javascript node.js terminal stdout readline

我想要做的是在输入后从nodejs控制台应用中隐藏/删除所有用户输入,以便在用户插入时某些文字然后输入类型,他再也无法在控制台中读取他刚刚输入的内容了(所以基本上删除了它之后的行的输入)。

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

提前谢谢

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

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())  
})
  • 该应用提示问题
  • 用户回答"罚款" (在用户按下回车后,该行不再存在)
  • 该节目说"似乎......很好"

Output

2 个答案:

答案 0 :(得分:3)

根据Bash HOWTO

  

将光标向上移动N行:

     

\033[<N>A

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

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

<强>更新 找到了一个很好的答案:)

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

答案 1 :(得分:3)

看起来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())  
})