mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 07:46:12 +03:00
website: ich
This commit is contained in:
103
website/app/vt/ich/page.mdx
Normal file
103
website/app/vt/ich/page.mdx
Normal file
@ -0,0 +1,103 @@
|
||||
import VTSequence from "@/components/VTSequence";
|
||||
|
||||
# Insert Character (ICH)
|
||||
|
||||
<VTSequence sequence={["CSI", "Pn", "@"]} />
|
||||
|
||||
Insert `n` blank characters at the current cursor position and shift
|
||||
existing cell contents right.
|
||||
|
||||
The parameter `n` must be an integer greater than or equal to 1. If `n` is less than
|
||||
or equal to 0, adjust `n` to be 1. If `n` is omitted, `n` defaults to 1.
|
||||
|
||||
This sequence always unsets the pending wrap state.
|
||||
|
||||
If the cursor position is outside of the [left and right margins](#TODO),
|
||||
this sequence does not change the screen, but the pending wrap state is
|
||||
still reset.
|
||||
|
||||
Existing cells shifted beyond the right margin are deleted. Inserted cells
|
||||
are blank with the background color colored according to the current SGR state.
|
||||
|
||||
## Validation
|
||||
|
||||
### ICH V-1: No Scroll Region, Fits on Screen
|
||||
|
||||
```bash
|
||||
printf "ABC"
|
||||
printf "\033[1G"
|
||||
printf "\033[2@"
|
||||
```
|
||||
|
||||
```
|
||||
|XcABC_____|
|
||||
```
|
||||
|
||||
### ICH V-2: SGR State
|
||||
|
||||
```bash
|
||||
printf "ABC"
|
||||
printf "\033[1G"
|
||||
printf "\033[41m"
|
||||
printf "\033[2@"
|
||||
printf "X"
|
||||
```
|
||||
|
||||
```
|
||||
|c_ABC_____|
|
||||
```
|
||||
|
||||
The `c_` cells should both have a red background. The `ABC` cells should
|
||||
remain unchanged in style.
|
||||
|
||||
### ICH V-3: Shifting Content Off the Screen
|
||||
|
||||
```bash
|
||||
cols=$(tput cols)
|
||||
printf "\033[${cols}G"
|
||||
printf "\033[2D"
|
||||
printf "ABC"
|
||||
printf "\033[2D"
|
||||
printf "\033[2@"
|
||||
printf "X"
|
||||
```
|
||||
|
||||
```
|
||||
|_______XcA|
|
||||
```
|
||||
|
||||
### ICH V-4: Inside Left/Right Scroll Region
|
||||
|
||||
```bash
|
||||
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_____|
|
||||
```
|
||||
|
||||
### ICH V-5: Outside Left/Right Scroll Region
|
||||
|
||||
```bash
|
||||
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_____|
|
||||
```
|
Reference in New Issue
Block a user