画面消去 (ED)

コマンド `n` に応じて画面の内容を消去します。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 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 の場合、スクロールバック領域のみ消去します。これは 画面の可視部分には影響せず、カーソルも移動しません。スクロールバック領域とは、 画面が最下部までスクロールされているときに、画面の可視領域より上にある ターミナルの領域です。

検証

ED V-1: 単純な下方消去

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______|
|________|

ED V-2: 下方消去の SGR 状態

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______|
|________|

カーソルの右・下のすべてのセルは赤くなるはずです。

ED V-3: 下方消去の複数セル文字

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____|
|________|

ED V-4: 単純な上方消去

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_____|

ED V-5: 単純な完全消去

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______|
|________|