Skip to content

Grapheme Cluster Cursor Movement

Category: unicode · Tags: Unicode

Cursor movement (CUF/CUB) should respect grapheme cluster boundaries. Moving the cursor back over a ZWJ emoji sequence should skip the entire sequence, not individual codepoints. Many terminals still move by codepoint rather than grapheme cluster.
How this is tested: Write an emoji ZWJ sequence, move cursor back by 1, verify cursor position.

Supported by 4 of 14 backends (29%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9? unknown
Ghostty1.3.1? unknown
cmux0.62.2? unknown
Kitty0.46.2? unknown
VS Code1.112.0? unknown
Warp0.2026.03.18.08.24.03? unknown
Cursor2.6.21? unknown
iterm2-app3.6.9? unknown
kitty-app0.46.2? unknown
Terminal.app2.15? unknown

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
vt1000.2.1✓ yes
vterm0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes

Powered by Termless
Playwright for Terminals