[FEATURE] Setting to hide built-in vim mode indicator when custom statusLine renders it

Resolved 💬 2 comments Opened Apr 26, 2026 by sindre-henriksen Closed Jun 5, 2026

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.mode is 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

  1. I run Claude Code with editorMode: "vim" and a custom statusLine that prefixes [N] / [I] / [V] based on .vim.mode.
  2. The built-in -- INSERT -- line below the prompt repeats the same information.
  3. Setting hideVimModeIndicator: true would 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 — hideVimModeIndicator setting (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.

View original on GitHub ↗

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