文字消去 (ECH)
カーソル位置を含めてそこから右へ `n` 個のセルを空欄にします。
- 0x1B
- ESC
- 0x5B
- [
- ____
- n
- 0x58
- X
パラメーター n は 1 以上の整数でなければなりません。n が 0 以下の
場合は n を 1 に調整します。n が省略された場合は n が既定で 1 になります。
消去できる最も右の列は画面の最右列です。 右マージン はこのシーケンスに影響しません。
このシーケンスは常に保留中の折り返し状態を解除します。カーソルのある行が ソフト折り返しの行である場合、ソフト折り返し状態もリセットされます。
最右列までの n 個のセルについて、空の文字で置き換えてセルを
空欄にします。背景色は現在の SGR 状態に従って
着色されます。他の SGR 属性は保持されません。
複数セル文字が分割される場合は、その複数セル文字全体を消去します。たとえば、
「橋」が表示されていて ECH n = 1 が発行された場合、
その文字が 2 セルを占めていても全体を消去します。消去された
2 つのセルはどちらも、現在の SGR 状態に従った背景色で着色されます。
文字選択属性の選択 (DECSCA) が有効であるか、 現在アクティブな画面で最後に有効化された保護モードである場合、 保護属性は設定が無かったものとして無視され、その属性を持つセルは消去されます。DECSCA が現在有効で あるかどうかは関係なく、DECSCA が_最後に有効化された_保護モードであれば 保護属性はそれでも無視されます。
DECSCA が現在有効でなく、かつ現在アクティブな画面で最後に有効化された
保護モードでもない場合、保護属性がセットされたセルは尊重され消去されませんが、
n のカウントには含まれます。セルの保護属性が
元々 DECSCA で設定されたものかどうかは関係ありません。
printf "ABC"
printf "\033[1G"
printf "\033[2X"
|c_C_____|
cols=$(tput cols)
printf "\033[${cols}G"
printf "\033[2D"
printf "ABC"
printf "\033[D"
printf "\033[10X"
|_____Ac_|
cols=$(tput cols)
printf "\033[${cols}G" # move to last column
printf "A" # set pending wrap state
printf "\033[X"
printf "X"
|_______Xc
printf "ABC"
printf "\033[1G"
printf "\033[41m"
printf "\033[2X"
|c_C_____|
c_ 個のセルはどちらも赤い背景になるはずです。他のすべてのセルは
スタイルが変わっていないはずです。
printf "橋BC"
printf "\033[1G"
printf "\033[X"
printf "X"
|XcBC____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[1;3s" # scroll region left/right
printf "\033[4G"
printf "ABC"
printf "\033[1G"
printf "\033[4X"
|c___BC____|
printf "\033V"
printf "ABC"
printf "\033[1\"q"
printf "\033[0\"q"
printf "\033[1G"
printf "\033[2X"
|c_C_______|
printf "\033[1\"q"
printf "ABC"
printf "\033V"
printf "\033[1G"
printf "\033[2X"
|ABC_______|
カーソルは A の位置に留まります。