Skip to content

Add app-wide Vim mode #117

Open
Open

Description

@Juliusolsson05

Problem

Agent Code is a keyboard-heavy app, but the current interaction model is not modal. Users who live in Vim-style workflows should be able to navigate and edit across the app without constantly switching back to mouse-driven or platform-default controls.

This should be tracked as an app-wide capability, not a one-off editor feature. Vim mode needs to cover the places where users spend time: composer input, transcript navigation, panes/tabs, command palette flows, and file/editor surfaces where applicable.

Desired Behavior

Add a configurable Vim mode for the whole app.

At minimum, reason through support for:

  • normal/insert-style mode semantics where they make sense
  • composer editing and prompt navigation
  • pane/tab/workspace navigation with Vim-like movement
  • transcript scrolling and selection/navigation
  • command palette behavior that does not fight modal key handling
  • Monaco/editor integration using an existing Vim layer if practical
  • clear visual indication of current mode/focus so users do not get trapped

Acceptance Criteria

  • Vim mode is opt-in from settings or a command, not forced on existing users.
  • Key handling has a central design so feature areas do not each invent incompatible mini Vim modes.
  • Existing app shortcuts continue to work or have documented Vim-mode equivalents.
  • Text input fields, composer, and editor surfaces handle Escape/Insert/navigation predictably.
  • There is a clear escape hatch to disable Vim mode if key handling gets into a bad state.
  • Manual QA covers composer, command palette, pane switching, transcript scrolling, and editor/file surfaces.

Notes

This probably needs design before implementation because the risk is not the keybindings themselves; it is focus ownership. The app has many interactive surfaces, so Vim mode should define which layer owns a keypress in each state.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    class:C7-new-featureBug cluster of a recently shipped featuretype:featureNew capability (out of quality-loop fix scope)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions