端末で自分のプログラムの出力をすべて(およびのみ)消去するにはどうすればよいですか?

端末で自分のプログラムの出力をすべて(およびのみ)消去するにはどうすればよいですか?

私はncursesのようなものを使用できることを知っていますが、その依存関係を私のプロジェクトに含めたくありません。

画面を圧倒せずにより多くの情報を表示できるように、特定の時点でプログラムによって生成されたすべての出力を消去する方法を探しています。

これはRustで書かれたプログラムです。次の端末処理用のライブラリがあります。ターミナル

ANSI文字をオプションとして使用する方法もお読みください。

ベストアンサー1

互換性のある端末がある場合は、xtermTermionを使用して代替画面に切り替えることができます。

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スクリプトから代替画面に切り替える。もちろん、これはライブラリが必ずしも必要ではないことを意味します。

おすすめ記事