Vim mode: change cursor shape based on mode (block for Normal, bar for Insert)
Feature Request
When using vim mode, the cursor shape stays as a block in both Normal and Insert modes, making it difficult to tell which mode you're currently in.
Expected Behavior
The cursor shape should change based on the current vim mode, similar to how terminal-based vim/neovim works:
- Normal mode: Block cursor
█ - Insert mode: Bar/line cursor
| - Visual mode: Underline cursor
_(optional)
This can be achieved by emitting standard ANSI escape sequences when switching modes:
\e[1 q → blinking block
\e[2 q → steady block
\e[3 q → blinking underline
\e[4 q → steady underline
\e[5 q → blinking bar
\e[6 q → steady bar
Most modern terminals (iTerm2, Alacritty, Kitty, WezTerm, Windows Terminal, etc.) support these sequences.
Current Behavior
The cursor remains a block shape regardless of the vim mode. The only way to distinguish modes is by reading the small mode indicator text in the status area, which is not as immediate or intuitive as a cursor shape change.
Why This Matters
Cursor shape is the primary visual cue that vim users rely on to identify the current mode at a glance. Without it, users frequently type commands in insert mode or try to type text in normal mode.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗