[FEATURE] Setting to hide built-in vim mode indicator when custom statusLine renders it
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Since v2.1.119 the statusLine JSON exposes vim.mode, so custom statusLine scripts can now render vim mode in their preferred style and position. However, Claude Code still renders its built-in -- INSERT -- / -- NORMAL -- indicator below the prompt unconditionally. This produces visible duplication when a custom statusLine already shows the same information.
Example:
[I] t:1.8k (12%) | main | opus 4.7 th:high ← my custom statusLine
-- INSERT -- ← built-in, unhideable
Proposed Solution
A boolean setting in settings.json such as hideVimModeIndicator: true (default false) that suppresses the built-in vim mode indicator. Users who want to render vim mode themselves via the new vim.mode field can opt in; everyone else keeps the current behavior.
Alternative Solutions
- Always render the built-in indicator alongside the custom statusLine (current behavior) — accepts duplication.
- Remove the built-in indicator entirely once
vim.modeis in JSON — breaks users who haven't migrated their statusLine scripts.
A user-controlled opt-in setting avoids both downsides.
Priority
Low - Nice to have
Feature Category
Configuration and settings
Use Case Example
- I run Claude Code with
editorMode: "vim"and a custom statusLine that prefixes[N]/[I]/[V]based on.vim.mode. - The built-in
-- INSERT --line below the prompt repeats the same information. - Setting
hideVimModeIndicator: truewould let my single statusLine be the canonical display, freeing the row below the prompt for system messages and reducing visual noise.
Additional Context
Prior closed/duplicated requests in this area:
- #19185 —
hideVimModeIndicatorsetting (closed as duplicate of #18917) - #18917 — vim mode in statusLine config (closed as duplicate of #16788)
- #16788 — expose vim mode in statusLine JSON (open; the JSON exposure half is implemented in v2.1.119, but the hide-the-built-in-indicator half was never tracked)
This issue narrowly targets the missing setting so the request doesn't get folded back into the JSON-exposure thread that's already been satisfied.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗