Vim mode: emit cursor shape escape sequences on mode switch

Resolved 💬 3 comments Opened Mar 11, 2026 by cfutschik Closed Mar 15, 2026

When using vim keybindings in Claude Code, the cursor stays as a solid block regardless of the current mode. Most tools with vim mode emit ANSI cursor shape escape sequences to visually distinguish modes:

  • Insert mode → beam/bar cursor (\e[6 q)
  • Normal mode → block cursor (\e[2 q)

This is standard behavior in neovim, zsh vi-mode, Zed, and other vim-mode implementations. The visual feedback makes it immediately obvious which mode you're in without needing to check a mode indicator.

Current behavior: Cursor shape stays the same (block) in all vim modes.

Expected behavior: Cursor changes to a beam/bar in insert mode and a block in normal mode, matching the convention used by other vim-mode tools.

Environment: macOS, iTerm2, vim keybindings enabled.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗