光标水平制表 (CHT)

将光标向右移动 `n` 个制表位。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 0x49
    I

参数 n 必须是大于等于 1 的整数。如果 n 小于 等于 0,则将 n 调整为 1。如果省略 n,则 n 默认为 1。

此操作的最右有效列是终端屏幕的最右列或 右边距 中较小者。 此序列在设置了 原点模式 时不会改变行为。

向右移动光标,直到光标位于制表位上。如果光标将移过最右有效列, 则光标停留在最右有效列,操作完成。重复此过程 n 次。

制表位是动态的,可以通过诸如 水平制表设置 (HTS)、制表符清除 (TBC) 等 转义序列设置。终端模拟器可以将制表位默认设置在任何间隔, 不过 8 个空格的间隔最常见。

校验

CHT V-1:右移越过最后一列

printf "\033[?5W" # reset tab stops
printf "\033[100I" # assuming the test terminal has less than 800 columns
printf "A"
|_________A|

CHT V-2:从制表位之前开始右移

printf "\033[?5W" # reset tab stops
printf "\033[1;2H"
printf "A"
printf "\033[I"
printf "X"
|_A______X_|

CHT V-3:右边距

printf "\033[1;1H" # move to top-left
printf "\033[0J" # clear screen
printf "\033[?5W" # reset tab stops
printf "\033[?69h" # enable left/right margins
printf "\033[3;6s" # scroll region left/right
printf "\033[1;1H" # move cursor in region
printf "X"
printf "\033[I"
printf "A"
|__AX______|