有没有办法擦除最后一行输出?

问题描述:

一个非常简单的程序,打印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 

可以使用logUpdate NPM模块,或vorpal NPM模块。这些都是这样做的。

对我来说,以下工作:

process.stdout.clearLine(); 
process.stdout.cursorTo(0);