有没有办法擦除最后一行输出?
问题描述:
一个非常简单的程序,打印3行输出:有没有办法擦除最后一行输出?
console.log('a');
console.log('b');
console.log('c');
有没有从程序删除最后一行的方式已经打印后?,即
console.log('a');
console.log('b');
console.log('c');
eraseLastLine();
console.log('C');
这将产生:
a
b
C
答
简单的解决方法是不打印换行符(即不要使用console.log
)。
- 使用
process.stdout.write
打印没有EOL字符的行。 - 使用回车(
\r
)字符返回到行的开头。使用\e[K
清除光标位置到行尾的所有字符。
实施例:
process.stdout.write("000");
process.stdout.write("\n111");
process.stdout.write("\n222");
向该线,输出将是:
000
111
222
但是,如果执行:
process.stdout.write("000");
process.stdout.write("\n111");
process.stdout.write("\n222");
process.stdout.write("\r\x1b[K")
process.stdout.write("333");
的输出是:
000
111
222\r\x1b[K
333
然而,终端将显示:
000
111
333
答
对我来说,以下工作:
process.stdout.clearLine();
process.stdout.cursorTo(0);