Tinker AI
Read reviews
beginner 4 min read

Using Cursor keyboard-only: bindings that get you off the mouse

Published 2026-03-06 by Owner

Cursor inherits VS Code’s keyboard shortcut model. Most editor operations have keyboard shortcuts. The AI-specific operations are inconsistent — some have great shortcuts, some don’t, some have shortcuts but require mouse-first invocation.

After moving toward keyboard-only over a few months, here are the bindings I’ve found necessary.

Custom keybindings

Open Cmd+Shift+P → “Open Keyboard Shortcuts (JSON)”. Add:

[
  {
    "key": "cmd+i",
    "command": "composerMode.agent",
    "when": "!composerMode.active"
  },
  {
    "key": "cmd+shift+i",
    "command": "composerMode.askMode"
  },
  {
    "key": "cmd+shift+l",
    "command": "aichat.newchataction"
  },
  {
    "key": "cmd+shift+y",
    "command": "aichat.newconversation"
  },
  {
    "key": "cmd+e",
    "command": "aichat.insertselectionintochat"
  },
  {
    "key": "alt+enter",
    "command": "editor.action.acceptInlineCompletion"
  },
  {
    "key": "alt+escape",
    "command": "editor.action.rejectInlineCompletion"
  },
  {
    "key": "cmd+r cmd+i",
    "command": "cursor.directoryIgnoreCurrentFile"
  },
  {
    "key": "cmd+r cmd+r",
    "command": "cursor.reindexCodebase"
  },
  {
    "key": "cmd+r cmd+t",
    "command": "cursor.toggleAutocomplete"
  }
]

These cover the operations I do most often:

  • Cmd+I for Composer (the agent panel)
  • Cmd+Shift+I for Composer in ask mode
  • Cmd+Shift+L for new chat
  • Cmd+Shift+Y for new conversation in existing chat
  • Cmd+E for sending selection to chat
  • Alt+Enter for accepting inline completion (faster than Tab in some contexts)
  • Alt+Escape for explicitly rejecting (rather than typing through)
  • Cmd+R chord for cursor-specific operations

The chord key (Cmd+R)

The Cmd+R chord is a useful organizing principle. Cursor-specific operations live under one prefix. Once you know the prefix, the second key is mnemonic:

  • Cmd+R Cmd+I — ignore (file)
  • Cmd+R Cmd+R — reindex (codebase)
  • Cmd+R Cmd+T — toggle (autocomplete)
  • Cmd+R Cmd+P — pin (file to chat context)
  • Cmd+R Cmd+U — unpin (all files)

The chord pattern is borrowed from Emacs and works well in Cursor. Two keys per operation but the first is shared, so muscle memory builds quickly.

Cursor inherits VS Code’s navigation. Worth knowing:

  • Cmd+P — quick open file by name
  • Cmd+Shift+O — go to symbol in file
  • Cmd+T — go to symbol in workspace
  • Cmd+G — go to line
  • F12 — go to definition
  • Shift+F12 — find all references
  • Cmd+Click — go to definition (mouse equivalent of F12)

The chat panel and Composer also support keyboard navigation. Within the chat:

  • Cmd+L — focus chat input
  • Cmd+\ — focus the editor
  • Up/Down arrow in chat input — previous/next prompt
  • Cmd+K Cmd+I — show inline edit prompt at cursor position

Once you have the focus shortcuts, you can jump between editor, chat input, and Composer without ever touching the mouse.

What I use most

My top 10 keyboard operations during a typical Cursor session:

  1. Cmd+I — open Composer (most-used, very high frequency)
  2. Cmd+L — open chat panel
  3. Cmd+K — inline edit
  4. Tab / Alt+Enter — accept completion
  5. Cmd+Click (or F12) — go to definition (still trips me up keyboard-only sometimes)
  6. Cmd+P — find file
  7. Cmd+Shift+P — command palette
  8. Cmd+B — toggle sidebar
  9. Cmd+J — toggle terminal
  10. Cmd+\ — toggle focus between editor and chat

What still requires mouse

A few operations I haven’t found good keyboard shortcuts for:

Navigating Composer’s plan tree. Composer shows a checklist of steps. Navigating between steps with keyboard is awkward. Mouse click is faster.

Reordering pinned chat files. Pinned files in chat context can be reordered to influence priority. There’s no keyboard shortcut for this.

Some Composer interactions. Accepting individual file changes in Composer’s diff view requires clicking. Keyboard shortcuts exist but are inconsistent.

These are minor enough that I tolerate them. Maybe 2-3% of my Cursor interactions still require mouse.

Why bother?

For some workflows, mouse use is fine. For others, the cumulative cost of mouse trips is real:

For vim users. If your hands rest on home row, every mouse trip is a context switch. Keyboard-only Cursor preserves the vim flow.

For RSI sufferers. Mouse use exacerbates wrist problems. Keyboard-only with split keyboards is a meaningful intervention.

For pure speed. Once muscle memory is established, keyboard operations are faster than mouse for most editor tasks.

The gain isn’t dramatic for one operation. It compounds across thousands of operations per day.

Adoption strategy

Don’t try to switch keyboard-only overnight. The pattern that worked for me:

  1. Identify your top 5 mouse operations in Cursor
  2. Find or create keyboard shortcuts for them
  3. Use the shortcuts for a week, even if slower at first
  4. Once those are habit, identify the next 5
  5. Repeat until ~95% keyboard

The transition takes 4-6 weeks of deliberate practice. After that, you don’t think about it.

Custom shortcuts I considered and skipped

Some shortcuts I tried and reverted:

A shortcut for every Composer plan step. Too many to remember. Mouse is fine for this.

Custom shortcuts for AI model selection. I rarely change models mid-session. Settings panel is fine for the once-a-week change.

A shortcut for “regenerate response.” Conflicted with too many other shortcuts. The chat panel button is fine for this rare action.

What Cursor should improve

A few keyboard UX gaps:

  • The Composer plan tree should support arrow-key navigation
  • More consistent shortcuts across modes (some use Cmd+K, some use Cmd+L, some use Cmd+I; the pattern isn’t always clear)
  • Better documentation of keyboard shortcuts in-tool (the keyboard reference is buried)

These are reasonable next steps for the team. The current state is workable; better is possible.

For users who want keyboard-only now, the bindings above plus practice produce a clean workflow. The investment is finite; the payoff persists.