插入行 (IL)

在目前游標位置插入空白行。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 0x4C
    L

在目前游標位置插入 n 行,並將現有行下移。

參數 n 必須是大於等於 1 的整數。如果 n 小於 等於 0,則將 n 調整為 1。如果省略 n,則 n 預設為 1。

如果目前游標位置在目前捲動區域之外, 此序列不執行任何動作。游標在以下情況位於目前捲動區域之外: 高於 上邊界、低於 下邊界、 位於 左邊界 左側或 右邊界 右側。

此序列會取消待定換行狀態。

此序列將游標欄移動到左邊界。

從目前游標列開始向下 n 行,插入按目前 SGR 狀態著色的空白行。 插入一行時,所有現有內容向下移動一行。最底列 是底部邊界。如果內容被移出底部邊界之外, 則這些內容會遺失;底部邊界之外的現有內容保持不變且不會移動。

如果設定了 左邊界 或 右邊界, 則只有邊界內(含邊界)的儲存格會被清空(插入時)或移動。 左邊界左側或右邊界右側的其他現有內容保持不變。

如果多儲存格字元會被拆分,則擦除整個多儲存格字元。例如, 如果「橋」列印在左邊界左側,而由 IL 導致的行下移會拆分該字元, 則應擦除該儲存格。

驗證

IL 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[L"
|ABC_____|
|c_______|
|DEF_____|
|GHI_____|

IL V-2:游標在捲動區域之外

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "\033[3;4r" # scroll region top/bottom
printf "\033[2;2H"
printf "\033[L"
|ABC_____|
|DEF_____|
|GHI_____|

IL V-3:頂部/底部捲動區域

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC\n"
printf "DEF\n"
printf "GHI\n"
printf "123\n"
printf "\033[1;3r" # scroll region top/bottom
printf "\033[2;2H"
printf "\033[L"
|ABC_____|
|c_______|
|DEF_____|
|123_____|

IL V-4:左/右捲動區域

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "ABC123\n"
printf "DEF456\n"
printf "GHI789\n"
printf "\033[?69h" # enable left/right margins
printf "\033[2;4s" # scroll region left/right
printf "\033[2;2H"
printf "\033[L"
|ABC123__|
|Dc__56__|
|GEF489__|
|_HI7____|