ターミナルでvimを使用すると、基本的にターミナルのウィンドウが空白になり、コーディングを開始するための新しいウィンドウが表示されますが、vimを終了すると、ターミナルの以前の出力が引き続き表示されます。プログラムの出力のみを出力し、プロセスが終了すると通常の状態に戻るように、ターミナルをクリアするにはどうすればよいですか?(Linuxでは、fedora)
2 に答える
低レベルでは、ターミナルプログラムに何をすべきかを指示する一連の制御文字を送信します。これは、手動で管理するには少し複雑すぎる可能性があります。
したがって、代わりに、 ncursesのようなコンソールライブラリを確認することをお勧めします。これにより、このような複雑さをすべて管理できます。
特にプログラムの終了後に魔法のように表示される前のコンテンツに関しては、これは実際にはvimが利用していて、ほとんどの最新の端末がサポートしているxtermの機能です。これは「代替画面」または単に「altscreen」と呼ばれます。基本的に、ターミナルプログラムに「OK、完全に新しい画面に切り替えます。後で別の画面に戻ります」と伝えます。
代替画面に切り替えるコマンドは通常ですが\E[?47h
、元に戻すコマンドは次のとおりです\E[?47l
。楽しみのためにこれを試してください。
echo -e "\033[?47h"
その後、元に戻します。
echo -e "\033[?47l"
または、シェルに依存せずに正しく設定する、より完全なソリューションの場合(これらは、vimが通常使用するシーケンスです)。
echo -e "\0337\033[?47h" # Save cursor position & switch to alternate screen
# do whatever
#Clear alternate screen, switch back to primary, restore cursor
echo -e "\033[2J\033[?47l\0338"
「clear」と入力するか、プログラムにシステムコマンドを追加して「clear」を呼び出すことができます。また、気づいていない場合は、vim内からシステムコマンドを実行できるため、終了してclearと入力する必要はありません。たとえば、vim内からプログラムをコンパイルして実行することもできます。
:!clear
:!make
:!./programName
また、私はこのテクニックを使用することはありませんが、vimを使用して新しい端末を呼び出すことができると思います:set terminal