The moment you start using Cursor, you notice something: whether or not you’ve actually learned the keyboard shortcuts changes your productivity dramatically.
This article works through the official documentation to cover the full Windows/Mac shortcut list, with extra detail on the ones that tend to leave people wondering “wait, what’s this actually for?”
How to check your shortcuts Every shortcut is listed if you press
Ctrl R→Ctrl S(Mac:Cmd R→Cmd S), or search “Keyboard Shortcuts” in the command palette (Ctrl Shift P/Cmd Shift P).Every Cursor-specific keybinding can be freely remapped from the Keyboard Shortcuts settings.

General / Global Operations
| Action | Windows | Mac |
|---|---|---|
| Open AI side panel (Agent) | Ctrl I | Cmd I |
| Open AI side panel (Chat) | Ctrl L | Cmd L |
| Toggle Agent layout | Ctrl E | Cmd E |
| Open mode menu | Ctrl . | Cmd . |
| Cycle through AI models | Ctrl / | Cmd / |
| Open Cursor settings | Ctrl Shift J | Cmd Shift J |
| Toggle voice mode | Ctrl Shift Space | Cmd Shift Space |
| General settings | Ctrl , | Cmd , |
| Command palette | Ctrl Shift P | Cmd Shift P |
🔍 Ctrl I / Cmd I — Agent vs. Chat
Ctrl I (Cmd I) opens Agent mode (formerly Composer), and Ctrl L (Cmd L) opens Chat mode. Both call up the AI side panel, but they’re meant for different jobs.
- Agent (
Ctrl I): for handing off a whole task at once — sweeping changes across files, adding a new feature, that kind of thing - Chat (
Ctrl L): for getting an explanation of code, asking for advice, or just asking a question without touching anything
Example: Want to say “migrate this component to TypeScript”? Use
Ctrl I. Want “explain what this function is doing, in plain English”? UseCtrl L.
🔍 Ctrl . — What’s the mode menu?
Pressing Ctrl . (Cmd .) brings up the Agent / Ask / Plan mode-switching menu.
- Agent: edits and runs code autonomously
- Ask: answers questions without editing (searches the whole codebase to answer)
- Plan: only builds an implementation plan — makes no actual changes
Rule of thumb: “I want to check what’s about to happen first” → Plan. “I want to understand a concept” → Ask. “Just build it” → Agent.
🔍 Ctrl / — Instant model switching
Every press of Ctrl / (Cmd /) cycles to the next available AI model. Use a heavier model like Opus for demanding tasks and a lighter one when speed matters more, and you can balance cost against speed on the fly.
AI Chat
Shortcuts for the chat input box.
| Action | Windows | Mac |
|---|---|---|
| Send (default Nudge) | Enter | Enter |
| Queue the message | Ctrl Enter | Cmd Enter |
| Force-send while typing | Ctrl Enter (while typing) | Cmd Enter (while typing) |
| Cancel generation | Ctrl Shift Backspace | Cmd Shift Backspace |
| Add selected code as context | Select code + Ctrl Shift L | Select code + Cmd Shift L |
| Add clipboard code as context | Ctrl V | Cmd V |
| Paste clipboard code as plain text | Ctrl Shift V | Cmd Shift V |
| Accept all suggested changes | Ctrl Enter | Cmd Enter |
| Reject all changes | Ctrl Backspace | Cmd Backspace |
| Move to next message | Tab | Tab |
| Cycle through Agent modes | Shift Tab | Shift Tab |
| Switch model (in chat) | Ctrl Alt / | Cmd Option / |
| Open a new chat | Ctrl N / Ctrl R | Cmd N / Cmd R |
| Open a new chat tab | Ctrl T | Cmd T |
| Go to previous chat | Ctrl [ | Cmd [ |
| Go to next chat | Ctrl ] | Cmd ] |
| Close chat | Ctrl W | Cmd W |
| Unfocus the input field | Esc | Esc |
🔍 Enter vs. Ctrl Enter — “Nudge” vs. “queue”
The default Enter is a “Nudge” send — it lightly prompts the Agent for “just the next move.” Ctrl Enter adds the message to a queue instead, letting you stack instructions the Agent will pick up once it finishes what it’s currently doing.
Example: The Agent is in the middle of building an auth feature and you think “oh, don’t forget the logout flow” → queue it with
Ctrl Enter, and it’ll get picked up once the current work wraps up.
🔍 Ctrl V vs. Ctrl Shift V — pasting error logs
Copy an error from your terminal and paste it into Chat, and the two shortcuts behave differently.
Ctrl V: attaches it as context (rendered cleanly in the UI, code-block style)Ctrl Shift V: pastes it as plain text straight into the input field
If you want the AI to actually read the error, Ctrl V is the easier one to work with.
🔍 Ctrl Shift Backspace — stopping generation fast
If the AI is obviously headed the wrong direction, you don’t have to sit through the rest of the generation — cancel immediately. Once it stops, adjust your instruction and send again.
Inline Edit
Give edit instructions directly in the editor, on selected code, without opening the side panel — everything happens right at your cursor.
| Action | Windows | Mac |
|---|---|---|
| Open inline edit | Ctrl K | Cmd K |
| Switch input focus | Ctrl Shift K | Cmd Shift K |
| Submit | Enter | Enter |
| Cancel | Ctrl Shift Backspace | Cmd Shift Backspace |
| Send a quick question | Alt Enter | Option Enter |
🔍 Ctrl K / Cmd K — the AI shortcut you’ll use the most

Select some code and press Ctrl K (Cmd K), and a small prompt bar pops up right there. No need to open the side panel — just say “refactor this function,” “add a comment,” “fix this bug,” right on the spot.
Typical workflow:
- Drag-select the code you want to change
- Press
Ctrl K(Cmd K) - Type something like “rewrite this loop using reduce”
- Press
Enterto send → a diff appears Ctrl Enter(Cmd Enter) to accept,Ctrl Backspace(Cmd Backspace) to reject
Good to know: Press
Ctrl Kwith nothing selected, and it’ll use the surrounding lines at your cursor as context to generate new code. Put your cursor inside an empty function and hitCtrl K→ “write the validation logic” — and it’ll write it.
🔍 Alt Enter / Option Enter — “quick question” doesn’t touch your code
Alt Enter (Option Enter) opens “quick question” mode. A normal Enter gets treated as an instruction to change code, but this one is for read-only questions — “what is this code doing?” — where you just want an explanation. Nothing gets changed; you get a chat-style answer back.
Code Selection & Adding Context
| Action | Windows | Mac |
|---|---|---|
@ mentions | @ | @ |
| Shortcut commands | / | / |
| Add selection to Chat | Ctrl Shift L | Cmd Shift L |
| Add selection to Edit | Ctrl Shift K | Cmd Shift K |
| Add selection to a new chat | Ctrl L | Cmd L |
| Toggle file-reading strategy | Ctrl M | Cmd M |
| Accept next word of a suggestion | Ctrl → | Cmd → |
| Search the codebase in chat | Ctrl Enter | Cmd Enter |
| Copy code → add as context | Select code + Ctrl C → Ctrl V | Select code + Cmd C → Cmd V |
| Copy code → add as text | Select code + Ctrl C → Ctrl Shift V | Select code + Cmd C → Cmd Shift V |
🔍 “Add to Chat” vs. “Add to Edit” vs. “Add to new chat” — the three differences
Once you’ve selected code, you’ve got three places to send it.
| Shortcut | Destination | Use it for |
|---|---|---|
Ctrl Shift L | The chat you already have open | “Add this code to what we’re already discussing” |
Ctrl Shift K | Edit (inline edit) | “I want this code itself changed directly” |
Ctrl L | A brand-new chat | “I just want to focus on this one function” |
Example: You spot a function you suspect is buggy → select it,
Ctrl Lto start a fresh chat, and ask “what’s wrong with this function?”
🔍 Ctrl M / Cmd M — switching how files get read
Not well known, but genuinely useful. It toggles how Cursor reads a file (full-text read vs. outline read, etc.). Handy for saving tokens when you’re working with huge files.
🔍 @ mentions and / shortcuts
Type @ in the chat input and you can pull in files, folders, git commits, web pages, and more as context.

Commonly used @ mentions:
@filename: pulls a specific file into context@Codebase: semantically searches the whole repo as context@Docs: references documentation you’ve registered with Cursor@Web: pulls web search results into context
/ triggers shortcut commands, for quickly calling up things you use often (/edit, /generate, etc.).
Tab Completion
| Action | Windows | Mac |
|---|---|---|
| Accept a suggestion | Tab | Tab |
| Accept only the next word | Ctrl → | Cmd → |
| Dismiss a suggestion | Esc | Esc |
🔍 Ctrl → / Cmd → — why “partial accept” is so useful
Useful when a Tab-completion suggestion is too long and you only want part of it. Instead of accepting everything with Tab, pressing Ctrl → (Cmd →) accepts one word at a time.
Example: The AI suggests
getUserByEmailAndRole(email, role, includeDeleted), but you don’t need theincludeDeletedargument → step through withCtrl →, confirming word by word, and pull in only the part you need.
Terminal AI
Lets the AI generate shell commands directly inside the terminal.
| Action | Windows | Mac |
|---|---|---|
| Open the prompt bar | Ctrl K | Cmd K |
| Run the generated command | Ctrl Enter | Cmd Enter |
| Confirm the command (close) | Esc | Esc |
🔍 Terminal Ctrl K — generating shell commands in plain language
With the terminal focused, Ctrl K (Cmd K) opens a different “terminal prompt bar” from the regular editor’s inline edit. Describe what you want to do in plain English (or Japanese) and it generates the shell command for you.
How to use it:
- Click into the terminal to focus it
- Press
Ctrl K - Type something like “delete every
.logfile older than 3 days” - Press
Enterto generate the command (e.g.find . -name "*.log" -mtime +3 -delete) - Review it, run it with
Ctrl Enter, or cancel withEscif you don’t need it
It’s genuinely handy for those moments you can’t quite remember the right syntax — especially for gnarlier commands like find, awk, sed, or grep.
Combo moves worth knowing
A few shortcuts are far more powerful chained together than used alone.
Combo #1: Targeted refactor
Select code → Ctrl K → "add error handling" → Enter → review the diff → Ctrl Enter to acceptKeeps the blast radius limited to your selection, for when you don’t want the Agent touching the whole file.
Combo #2: Codebase-wide questions
Ctrl L (new chat) → @Codebase → "which file handles the auth logic?"@Codebase has Cursor semantically search the entire repo to answer. For “wait, where was that file again?” moments, it beats a manual search — you can just ask in plain language.
Combo #3: Dropping a terminal error straight in
Copy the terminal error output → Ctrl V in the chat input → "how do I fix this error?"Ctrl V attaches it as a proper code block, so even a long stack trace comes through as clean, usable context.
Combo #4: Plan first, then execute
Ctrl I → Ctrl . (switch modes) → select Plan → "I want to add user authentication" → review the plan → Ctrl . (switch to Agent) → run itRather than letting the Agent loose immediately, confirming the approach in Plan mode first and then switching to Agent helps avoid unintended large-scale changes.
Summary: the 7 shortcuts to learn first
If you’re just getting started with Cursor, internalizing these first will bump your productivity the fastest.
| Priority | Shortcut (Win / Mac) | Use |
|---|---|---|
| ★★★ | Ctrl K / Cmd K | Inline edit / terminal AI |
| ★★★ | Ctrl I / Cmd I | Agent (multi-file edits) |
| ★★★ | Tab | Accept Tab completion |
| ★★☆ | Ctrl L / Cmd L | Open chat / send a selection to a new chat |
| ★★☆ | Ctrl Shift L / Cmd Shift L | Add selected code to the current chat |
| ★★☆ | Ctrl / / Cmd / | Switch AI models on the spot |
| ★☆☆ | Ctrl . / Cmd . | Switch between Agent / Ask / Plan |
Don’t try to memorize all of these at once — pick up Ctrl K today, @Codebase tomorrow, and build up from there. The more you use them, the more you’ll wonder how you ever developed without them.
Last updated: June 2026 (Cursor 3.7) Reference: Cursor official documentation
