【问题标题】:Hide console's user input after return/new line返回/换行后隐藏控制台的用户输入
【发布时间】:2017-12-22 04:21:45
【问题描述】:

一旦进入,我想做的是从nodejs控制台应用程序中隐藏/删除所有用户输入,这样当用户插入 strong> 一些文本,然后输入,他将无法再阅读他刚刚在控制台中输入的内容(所以基本上在 输入后立即删除该行 )。

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

提前谢谢你

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

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())  
})
  • 应用提示问题
  • 用户回答“Fine”(用户按下回车后,此行不应再出现)
  • 程序说“看起来……很好”

【问题讨论】:

  • 你试过这个How to clear console 吗?
  • 我不想清除控制台。我只想清除用户输入(不是程序输出)
  • 老实说,我不清楚你到底想做什么。也许尝试用例子来解释?
  • @LEQADA 问题用示例编辑
  • 喜欢这个process.stdout.write('\033[1A seems like you\'r doing ' + input.toString()); ?

标签: javascript node.js terminal stdout readline


【解决方案1】:

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

【讨论】:

【解决方案2】:

根据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?

【讨论】:

  • 对安全没有任何影响?我认为这种方式只是 ANSI 颜色方式..
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2018-04-08
  • 2015-09-20
相关资源
最近更新 更多