画面消去 (ED)
コマンド `n` に応じて画面の内容を消去します。
- 0x1B
- ESC
- 0x5B
- [
- ____
- n
- 0x4A
- J
n が設定されていない場合、n の値は 0 です。n の有効な値は
0、1、2、3 だけです。その他の n の値が指定された場合、このシーケンスを実行しません。
このシーケンス文書の残りの部分では、n が有効な値であると想定します。
3 以外の有効な n の値の場合、このシーケンスは保留中の折り返し状態を解除します。
カーソル位置は、このシーケンスの実行中は
すべての状況下で変化しません。
文字選択属性の選択 (DECSCA) が有効であるか、 現在アクティブな画面で最後に有効化された保護モードである場合、 保護属性は無視されます。それ以外の場合、保護属性は尊重されます。保護属性を 扱うこのロジックの詳細は 文字消去 (ECH) を参照してください。
すべての操作で、複数セル文字が分割される場合は、その複数セル文字全体を消去します。 たとえば、「橋」が表示されていて、消去対象がその 2 セル文字の 最初のセルまたは 2 つ目のセルのどちらか一方だけでも、2 つのセルの両方を消去します。
このシーケンスはどのスクロール領域(上端・下端・左端・右端)も尊重しません。 操作の境界は可視画面全体です。
n が 0 の場合、下方の表示を消去する操作を実行します。
カーソルの右側と下側のすべてのセルを消去します。消去されたセルの
背景色は現在の SGR 状態に従って着色されます。
n が 1 の場合、上方の表示を消去する操作を実行します。
カーソルの左側と上側のすべてのセルを消去します。消去されたセルの
背景色は現在の SGR 状態に従って着色されます。
n が 2 の場合、表示全体を消去します。これは
上方消去(n = 1)と下方消去(n = 0)の両方が実行されたのと
同等です。
n が 3 の場合、スクロールバック領域のみ消去します。これは
画面の可視部分には影響せず、カーソルも移動しません。スクロールバック領域とは、
画面が最下部までスクロールされているときに、画面の可視領域より上にある
ターミナルの領域です。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2H"
printf "\033[0J"
|ABC_____|
|Dc______|
|________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2H"
printf "\033[41m"
printf "\033[0J"
|ABC_____|
|Dc______|
|________|
カーソルの右・下のすべてのセルは赤くなるはずです。
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "AB橋C\n"
printf "DE橋F\n"
printf "GH橋I\n"
printf "\033[2;4H"
printf "\033[0J"
|AB橋C___|
|DE_c____|
|________|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2H"
printf "\033[1J"
|________|
|_cF_____|
|GHI_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[2;2H"
printf "\033[2J"
|________|
|_c______|
|________|