我已经用println!打印了一些文本,现在我需要清除终端并写入新文本而不是旧文本。我如何从终端清除所有当前文本?我试过这段代码,但它只清除了当前行,1仍然在输出中。
println!
1
fn main() { println!("1"); print!("2"); print!("\r"); }
vshtjzan1#
您可以将控制字符发送到clear the terminal screen。
fn main() { print!("{}[2J", 27 as char); }
或者也可以使用position the cursor at row 1 , column 1:
print!("{esc}[2J{esc}[1;1H", esc = 27 as char);
oxalkeyp2#
print!("\x1B[2J\x1B[1;1H");
这将清除屏幕,并将光标放在屏幕的第一行和第一列。
ctzwtxfj3#
投票通过的答案提供的解决方案并没有按照我想要的方式工作。\x1B[2J\x1B[1;1H序列只能向下滚动终端,所以它实际上隐藏了内容,并没有清除它。因为我想运行一个无限循环,重新呈现显示给用户的内容,这是一个问题,因为我的终端窗口的滚动条随着每一个“滴答”而缩小。灵感来自我正在使用的Clear a terminal screen for real
\x1B[2J\x1B[1;1H
print!("{esc}c", esc = 27 as char);
这对我来说很好用。在我使用的其他系统上可能会有一些缺点(Ubuntu),我不知道。
zpqajqem4#
在Linux或macOS终端中尝试以下操作:
std::process::Command::new("clear").status().unwrap();
在Windows中:
std::process::Command::new("cls").status().unwrap();
这基本上是向终端发送“清除”命令。
rsaldnfx5#
use std::process::Command; // Clear the terminal screen: if cfg!(target_os = "windows") { Command::new("cls").status().unwrap(); } else { Command::new("clear").status().unwrap(); };
5条答案
按热度按时间vshtjzan1#
您可以将控制字符发送到clear the terminal screen。
或者也可以使用position the cursor at row
1
, column1
:oxalkeyp2#
这将清除屏幕,并将光标放在屏幕的第一行和第一列。
ctzwtxfj3#
投票通过的答案提供的解决方案并没有按照我想要的方式工作。
\x1B[2J\x1B[1;1H
序列只能向下滚动终端,所以它实际上隐藏了内容,并没有清除它。因为我想运行一个无限循环,重新呈现显示给用户的内容,这是一个问题,因为我的终端窗口的滚动条随着每一个“滴答”而缩小。灵感来自我正在使用的Clear a terminal screen for real
这对我来说很好用。在我使用的其他系统上可能会有一些缺点(Ubuntu),我不知道。
zpqajqem4#
在Linux或macOS终端中尝试以下操作:
在Windows中:
这基本上是向终端发送“清除”命令。
rsaldnfx5#