游標後退定位 (CBT)

將游標向左移動 `n` 個定位停駐點。

  1. 0x1B
    ESC
  2. 0x5B
    [
  3. ____
    n
  4. 0x5A
    Z

此操作的最左有效欄是第一欄。如果啟用了 原點模式,則此操作的最左有效欄是 左邊界。

向左移動游標,直到位於定位停駐點上。如果游標將移過最左有效欄, 則游標停留在最左有效欄,操作完成。重複此過程 n 次。

定位停駐點是動態的,可以透過諸如 水平定位點設定 (HTS)、定位點清除 (TBC) 等 逸出序列設定。終端機模擬器可以將定位停駐點預設在任何間隔, 不過 8 個空格的間隔最常見。

驗證

CBT V-1:左移越過第一欄

printf "\033[?5W" # reset tab stops
printf "\033[10Z"
printf "A"
|Ac________|

CBT V-2:從定位停駐點之後開始左移

printf "\033[?5W" # reset tab stops
printf "\033[1;10H"
printf "X"
printf "\033[Z"
printf "A"
|________AX|

CBT V-3:從定位停駐點上開始左移

printf "\033[?5W" # reset tab stops
printf "\033[1;9H"
printf "X"
printf "\033[1;9H"
printf "\033[Z"
printf "A"
|A_______X_|

CBT V-4:原點模式下的左邊界

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