如何从终端清除所有(且仅)我的程序的输出

如何从终端清除所有(且仅)我的程序的输出

我知道我可以使用 ncurses 之类的东西,但我不想在我的项目中包含该依赖项。

我正在寻找一种方法来清除程序在某一点生成的所有输出,这样我就可以显示更多信息而不会淹没屏幕。

这是一个用 Rust 编写的程序。有一些库用于处理终端,例如特米恩

另请阅读有关使用 ANSI 字符作为选项的内容。

答案1

如果您有兼容的终端,xterm您可以尝试使用 Termion 切换到备用屏幕:

use termion::screen::AlternateScreen;
use std::io::{Write, stdout};

fn main()
{
    {
        let mut screen = AlternateScreen::from(stdout());
        write!(screen, "Writing to alternat(iv)e screen!").unwrap();
        screen.flush().unwrap();
    }
    println!("Writing to main screen again.");
}

Rust 文档:termion::screen

当你切换回来时,你写的所有内容都消失了。切换是通过发出转义序列来完成的,如下所述:StackOverflow:在 bash 脚本中切换到备用屏幕。当然,这意味着您并不严格需要该库。

相关内容