在 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())
})
- 应用提示问题
- 用户回答"Fine"(用户按下回车后该行不应该再出现)
- 程序说"seems like .... Fine"
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())
})
我想做的是 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())
})
- 应用提示问题
- 用户回答"Fine"(用户按下回车后该行不应该再出现)
- 程序说"seems like .... Fine"
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())
})