Manage master Cursor keyboard shortcuts and customize keybindings. Triggers on "cursor shortcuts", "cursor keybindings", "cursor keyboard", "cursor hotkeys", "cursor commands"...
Configure keybindings for discoverability and accessibility without masking safety-critical editor commands or creating team-specific ambiguity.
| Condition | Safe response |
|---|---|
| Shortcut conflicts with edit/debug action | Remove it or choose a non-conflicting binding. |
| Configuration prevents recovery | Restore the backed-up keybindings file or reset only the affected entry. |
| Team documentation diverges | Treat documented shared binding as authoritative and update it through review. |
Assign a personal shortcut to a Cursor command only after checking the Keyboard Shortcuts UI for conflicts, test it in a sample project, and retain the previous keybindings entry. Do not overwrite a documented team shortcut without agreement.
Complete keyboard shortcut reference for Cursor IDE. Covers AI-specific shortcuts, standard editor commands, and customization. All shortcuts shown as macOS / Windows-Linux.
| Action | macOS | Windows/Linux | Notes |
|---|---|---|---|
| Chat panel | Cmd+L |
Ctrl+L |
Open/focus AI chat sidebar |
| Inline Edit | Cmd+K |
Ctrl+K |
Edit selected code with AI |
| Composer | Cmd+I |
Ctrl+I |
Multi-file AI editing |
| Full Composer | Cmd+Shift+I |
Ctrl+Shift+I |
Expanded composer view |
| Action | macOS | Windows/Linux | Notes |
|---|---|---|---|
| Add to Chat context | Cmd+Shift+L |
Ctrl+Shift+L |
Add selected code to existing chat |
| Accept Tab suggestion | Tab |
Tab |
Accept full ghost text |
| Accept word-by-word | Cmd+ā |
Ctrl+ā |
Partial Tab acceptance |
| Dismiss suggestion | Esc |
Esc |
Reject ghost text |
| Force trigger completion | Ctrl+Space |
Ctrl+Space |
Manually trigger Tab |
| Accept inline edit | Cmd+Y |
Ctrl+Y |
Accept Cmd+K changes |
| Reject inline edit | Esc |
Esc |
Dismiss Cmd+K changes |
| Action | macOS | Windows/Linux | Notes |
|---|---|---|---|
| New chat | Cmd+N (in chat) |
Ctrl+N |
Start fresh conversation |
| Toggle chat panel | Cmd+L |
Ctrl+L |
Show/hide chat sidebar |
| Action | macOS | Windows/Linux |
|---|---|---|
| Command Palette | Cmd+Shift+P |
Ctrl+Shift+P |
| Quick Open file | Cmd+P |
Ctrl+P |
| Go to Symbol | Cmd+Shift+O |
Ctrl+Shift+O |
| Go to Line | Cmd+G |
Ctrl+G |
| Go to Definition | F12 |
F12 |
| Peek Definition | Option+F12 |
Alt+F12 |
| Go Back | Cmd+- |
Ctrl+- |
| Go Forward | Cmd+Shift+- |
Ctrl+Shift+- |
| Action | macOS | Windows/Linux |
|---|---|---|
| Multi-cursor (add) | Option+Click |
Alt+Click |
| Select all occurrences | Cmd+Shift+L |
Ctrl+Shift+L |
| Move line up/down | Option+ā/ā |
Alt+ā/ā |
| Duplicate line | Shift+Option+ā/ā |
Shift+Alt+ā/ā |
| Delete line | Cmd+Shift+K |
Ctrl+Shift+K |
| Toggle comment | Cmd+/ |
Ctrl+/ |
| Format document | Shift+Option+F |
Shift+Alt+F |
| Rename symbol | F2 |
F2 |
| Quick Fix | Cmd+. |
Ctrl+. |
| Action | macOS | Windows/Linux |
|---|---|---|
| Toggle terminal | Cmd+` |
Ctrl+` |
| Toggle sidebar | Cmd+B |
Ctrl+B |
| Source Control | Cmd+Shift+G |
Ctrl+Shift+G |
| Extensions | Cmd+Shift+X |
Ctrl+Shift+X |
| Explorer | Cmd+Shift+E |
Ctrl+Shift+E |
| Search across files | Cmd+Shift+F |
Ctrl+Shift+F |
| Keyboard shortcuts editor | Cmd+K Cmd+S |
Ctrl+K Ctrl+S |
Cmd+K Cmd+S to open Keyboard Shortcuts editorOpen keybindings.json: Cmd+Shift+P > Open Keyboard Shortcuts (JSON)
[
{
"key": "cmd+enter",
"command": "editor.action.inlineSuggest.commit",
"when": "inlineSuggestionVisible"
},
{
"key": "ctrl+shift+k",
"command": "aichat.newchat",
"when": "editorFocus"
},
{
"key": "cmd+k cmd+a",
"command": "editor.action.selectAll",
"when": "editorTextFocus && !editorReadonly"
}
]
If using the Vim extension with Cursor:
// keybindings.json -- resolve Vim conflicts
[
{
"key": "ctrl+l",
"command": "aichat.focus",
"when": "!vim.active || vim.mode == 'Normal'"
},
{
"key": "ctrl+k",
"command": "cursor.edit",
"when": "editorTextFocus && !vim.active"
}
]
Common Vim conflicts:
Ctrl+K conflicts with Vim's digraph modeCtrl+L conflicts with Vim's clear/redrawCtrl+I conflicts with Vim's jump forwardSolution: Remap Cursor AI shortcuts to avoid Vim's control sequences, or use when clauses to scope by Vim mode.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā CURSOR AI SHORTCUTS (macOS) ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā£
ā Cmd+L Chat panel ā
ā Cmd+K Inline edit (select first) ā
ā Cmd+I Composer (multi-file) ā
ā Cmd+Shift+L Add selection to chat ā
ā Tab Accept Tab suggestion ā
ā Cmd+ā Accept suggestion word-by-word ā
ā Esc Dismiss suggestion ā
ā Cmd+Y Accept inline edit ā
ā Cmd+Shift+P Command Palette ā
ā Cmd+P Quick Open file ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
keybindings.json in the project repo (.vscode/keybindings.json)