插入字元 (ICH)
在目前游標位置插入空白字元。
- 0x1B
- ESC
- 0x5B
- [
- ____
- n
- 0x40
- @
在目前游標位置插入 n 個空白字元,並將現有
儲存格內容右移。
參數 n 必須是大於等於 1 的整數。如果 n 小於
等於 0,則將 n 調整為 1。如果省略 n,則 n 預設為 1。
此序列總是取消待定換行狀態。
如果游標位置在 左右邊界 之外, 此序列不變更畫面,但待定換行狀態 仍會被重設。
移出右邊界之外的現有儲存格會被刪除。插入的儲存格為空白, 其背景色按目前 SGR 狀態著色。
如果多儲存格字元(如「橋」)因移動而使儲存格被攔腰拆分, 多儲存格字元可以被裁剪或擦除。典型行為是在 畫面右邊緣裁剪、在右邊界處擦除,但兩種行為均可接受。
printf "ABC"
printf "\033[1G"
printf "\033[2@"
printf "X"
|XcABC_____|
printf "ABC"
printf "\033[1G"
printf "\033[41m"
printf "\033[2@"
printf "X"
|c_ABC_____|
c_ 個儲存格都應有紅色背景。ABC 個儲存格樣式應保持不變。
cols=$(tput cols)
printf "\033[${cols}G"
printf "\033[2D"
printf "ABC"
printf "\033[2D"
printf "\033[2@"
printf "X"
|_______XcA|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[3;5s" # scroll region left/right
printf "\033[3G"
printf "ABC"
printf "\033[3G"
printf "\033[2@"
printf "X"
|__XcA_____|
printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?69h" # enable left/right margins
printf "\033[3;5s" # scroll region left/right
printf "\033[3G"
printf "ABC"
printf "\033[1G"
printf "\033[2@"
printf "X"
|XcABC_____|
cols=$(tput cols)
printf "\033[${cols}G"
printf "\033[1D"
printf "橋"
printf "\033[2D"
printf "\033[@"
printf "X"
|_______Xc_|
在這種情況下,最後一個儲存格為空白或對多儲存格字元進行裁剪都算有效。xterm 會對該字元進行裁剪,但許多其他終端機會擦除該儲存格。