Zed keyboard shortcuts
Zed's default keymap is built around moving quickly through an editor, workspace, terminal, and agent panel. This reference covers the current built-in defaults across macOS, Linux, and Windows, including the context-sensitive keys that are most useful in daily work.
Windows, macOS, Linux · 186 shortcutsWorkspace and navigation
Open projects, move around the main regions, manage files and panels, and reach Zed's command-driven controls.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Close the current window | CtrlShiftW | CmdShiftW | CtrlShiftW |
| Toggle workspace zoom | ShiftEsc | ShiftEsc | ShiftEsc |
| Open files or a project | CtrlO | CmdO | CtrlO |
| Open a projectTwo-stroke chord. | CtrlKCtrlO | CmdKCmdO | CtrlKCtrlO |
| Increase the buffer font size | Ctrl=orCtrlShift= | Cmd= | Ctrl= |
| Decrease the buffer font size | Ctrl- | Cmd- | Ctrl- |
| Reset the buffer font size | Ctrl0 | Cmd0 | Ctrl0 |
| Open the settings file | CtrlAlt, | CmdAlt, | CtrlAlt, |
| Quit Zed | CtrlQ | CmdQ | CtrlQ |
| Start the debugger | F4 | F4 | F4 |
| Rate edit predictionsThe current Windows default keymap does not assign this action a default key. | Not documented | CtrlCmdZ | CtrlAltZ |
| Open the edit prediction menu | CtrlShiftI | CtrlCmdI | CtrlAltShiftI |
| Open the language-server menu | ShiftAltL | CtrlCmdL | CtrlAltL |
| Display names for multiple cursorsNo Linux default is assigned in the current keymap. | CtrlShiftAltC | CtrlCmdC | Not documented |
| Toggle worktree security | CtrlShiftAltS | CtrlCmdS | CtrlAltShiftS |
| Focus the next major workspace region | F6 | F6 | F6 |
| Focus the previous major workspace region | ShiftF6 | ShiftF6 | ShiftF6 |
| Focus the next region without using plain F6Useful while a debugger has taken over F6. | CtrlF6 | CmdF6 | CtrlF6 |
| Toggle fullscreen | F11 | FnForCtrlCmdF | F11 |
| Open a recent project | CtrlR | CtrlR | CtrlR |
| Open a recent branch | ShiftAltB | CmdCtrlB | CtrlAltShiftB |
| Open the worktree picker | ShiftAltW | CmdCtrlW | CtrlAltShiftW |
| Run the action from a toast | AltShiftEnter | AltShiftEnter | AltShiftEnter |
| Save the current buffer | CtrlS | CmdS | CtrlS |
| Save without formattingTwo-stroke chord. | CtrlKCtrlShiftS | CmdKS | CtrlKS |
| Save as | CtrlShiftS | CmdShiftS | CtrlShiftS |
| Create a new file | CtrlN | CmdN | CtrlN |
| Create a new window | CtrlShiftN | CmdShiftN | CtrlShiftN |
Panels, pickers, and tabs
Reach the command palette, file and symbol pickers, search panels, docks, tabs, and project navigation without leaving the keyboard.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Open the command palette | F1orCtrlShiftP | CmdShiftP | F1orCtrlShiftP |
| Open the file finder | CtrlPorCtrlE | CmdP | CtrlPorCtrlE |
| Search symbols across the project | CtrlT | CmdT | CtrlT |
| Open project-wide search | CtrlShiftF | CmdShiftF | CtrlShiftF |
| Open project search with replace | CtrlShiftH | CmdShiftH | CtrlShiftH |
| Reopen the last closed item | CtrlShiftT | CmdShiftT | CtrlShiftT |
| Open the keymap editorTwo-stroke chord. | CtrlKCtrlS | CmdKCmdS | CtrlKCtrlS |
| Open the theme selectorTwo-stroke chord. | CtrlKCtrlT | CmdKCmdT | CtrlKCtrlT |
| Toggle light or dark modeTwo-stroke chord. | CtrlKCtrlShiftT | CmdKCmdShiftT | CtrlKCtrlShiftT |
| Focus the project panel | CtrlShiftE | CmdShiftE | CtrlShiftE |
| Focus the outline panel | CtrlShiftB | CmdShiftB | CtrlShiftB |
| Open diagnostics | CtrlShiftM | CmdShiftM | CtrlShiftM |
| Focus the Git panel | CtrlShiftG | CtrlShiftG | CtrlShiftG |
| Focus the debugger panel | CtrlShiftD | CmdShiftD | CtrlShiftD |
| Focus the agent panel | CtrlShift/ | Cmd? | Ctrl? |
| Toggle the left dock | CtrlB | CmdB | CtrlB |
| Toggle the right dock | CtrlAltB | CmdAltB | CtrlAltB |
| Toggle the bottom dock | CtrlJ | CmdJ | CtrlJ |
| Toggle the workspace sidebar | CtrlAltJ | CmdAltJ | CtrlAltJ |
| Toggle all docks | CtrlShiftY | CmdAltY | CtrlAltY |
| Open the tab switcher | CtrlTab | CtrlTab | CtrlTab |
| Activate the previous tabThe tab switcher also supports Ctrl+Shift+Tab. | CtrlPageUp | AltCmdLeft | CtrlPageUp |
| Activate the next tab | CtrlPageDown | AltCmdRight | CtrlPageDown |
| Activate an item by number in the focused paneUse the corresponding number through 9; 0 activates the last item. | Alt1 | Ctrl1 | Alt1 |
| Close the active tab or itemCtrl+F4 also closes the active item on Windows and Linux. | CtrlW | CmdW | CtrlW |
| Toggle pin for the active tabTwo-stroke chord. | CtrlKShiftEnter | CmdKShiftEnter | CtrlKShiftEnter |
| Focus a pane in a directionUse Left, Up, or Down for the other directions. | CtrlKCtrlRight | CmdKCmdRight | CtrlKCtrlRight |
| Swap the pane in a directionUse Left, Up, or Down for the other directions. | CtrlKShiftRight | CmdKShiftRight | CtrlKShiftRight |
Editor editing
Move through text, select and change code, format buffers, and use Zed's editor-specific commands in the current file.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Cancel the current editor action | Esc | Esc | Esc |
| Delete the previous character | Backspace | Backspace | Backspace |
| Delete the next character | Delete | Delete | Delete |
| Indent or accept the current completion | Tab | Tab | Tab |
| Outdent or move to the previous completion | ShiftTab | ShiftTab | ShiftTab |
| Rewrap the current paragraphTwo-stroke chord. | CtrlKCtrlQorCtrlKQ | CmdKCmdQorCmdKQ | CtrlKCtrlQorCtrlKQ |
| Delete to the previous wordCtrl+W is an additional macOS default. | CtrlBackspace | AltBackspace | CtrlBackspace |
| Delete to the next word | CtrlDelete | AltDelete | CtrlDelete |
| Delete to the start of the lineThe current macOS editor keymap assigns this binding; Linux and Windows do not assign a default editor binding. | Not documented | CmdBackspace | Not documented |
| Delete to the end of the lineThe current macOS editor keymap assigns this binding; Linux and Windows do not assign a default editor binding. | Not documented | CmdDelete | Not documented |
| Cut | CtrlX | CmdX | CtrlX |
| Copy | CtrlC | CmdC | CtrlC |
| Paste | CtrlV | CmdV | CtrlV |
| Undo | CtrlZ | CmdZ | CtrlZ |
| Redo | CtrlYorCtrlShiftZ | CmdShiftZ | CtrlYorCtrlShiftZ |
| Move one characterRight, Up, and Down perform the corresponding movement. | Left | Left | Left |
| Move one lineDown performs the corresponding movement. | Up | Up | Up |
| Move by wordUse Right for the next word. | CtrlLeft | AltLeft | CtrlLeft |
| Move to the start of the lineCmd+Left is the macOS logical-line variant. | Home | Home | Home |
| Move to the end of the lineCmd+Right is the macOS logical-line variant. | End | End | End |
| Move to the start of the buffer | CtrlHome | CmdUp | CtrlHome |
| Move to the end of the buffer | CtrlEnd | CmdDown | CtrlEnd |
| Select all text | CtrlA | CmdA | CtrlA |
| Select the current line | CtrlL | CmdL | CtrlL |
| Extend the selection upward | ShiftUp | ShiftUp | ShiftUp |
| Extend the selection downward | ShiftDown | ShiftDown | ShiftDown |
| Indent | Ctrl] | Cmd] | Ctrl] |
| Outdent | Ctrl[ | Cmd[ | Ctrl[ |
| Format the current buffer | ShiftAltF | CmdShiftI | CtrlShiftI |
| Organize imports | AltShiftO | AltShiftO | AltShiftO |
| Insert a new line below | CtrlEnter | CmdEnter | CtrlEnter |
| Insert a new line above | CtrlShiftEnter | CmdShiftEnter | CtrlShiftEnter |
| Toggle soft wrappingTwo-stroke chord. | CtrlKCtrlZorCtrlKZ | CmdKZ | CtrlKCtrlZorCtrlKZ |
| Open the character palette | CtrlAltSpace | CtrlCmdSpace | CtrlAltSpace |
| Toggle line numbers | Ctrl; | Cmd; | Ctrl; |
| Show signature help | CtrlI | CmdI | CtrlI |
| Toggle edit prediction | CtrlAltE | CtrlCmdE | CtrlAltShiftE |
| Toggle a breakpoint | F9 | F9 | F9 |
| Edit a log breakpoint | ShiftF9 | ShiftF9 | ShiftF9 |
| Open the editor context menuThe Menu key is also a default on Windows and Linux. | ShiftF10 | ShiftF10 | ShiftF10 |
Search, code navigation, and folds
Find text, navigate language-server results, apply quick fixes, comment code, and control folded regions in an editor.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Find in the current buffer | CtrlF | CmdF | CtrlF |
| Open replace in the current bufferThe current macOS base keymap does not assign Cmd+H because macOS uses it to hide the app; use Cmd+Alt+L to deploy search with selection search there. | CtrlH | Not documented | CtrlH |
| Select the next search match | F3 | F3 | F3 |
| Select the previous search match | ShiftF3 | ShiftF3 | ShiftF3 |
| Go to a line | CtrlG | CtrlG | CtrlG |
| Open the text finder | CtrlAltF | CmdAltF | CtrlAltF |
| Go to definition | F12 | F12 | F12 |
| Open the definition in a split | AltF12 | AltF12 | AltF12 |
| Go to the type definition | CtrlF12 | CmdF12 | CtrlF12 |
| Go to implementation | ShiftF12 | ShiftF12 | ShiftF12 |
| Find all references | AltShiftF12 | AltShiftF12 | AltShiftF12 |
| Rename the symbol | F2 | F2 | F2 |
| Show hover informationTwo-stroke chord. | CtrlKCtrlI | CmdKCmdI | CtrlKCtrlI |
| Open code actions | Ctrl. | Cmd. | Ctrl. |
| Toggle line comments | Ctrl/ | Cmd/ | Ctrl/ |
| Toggle block comments | ShiftAltA | ShiftAltA | ShiftAltA |
| Go to the next diagnostic | F8 | F8 | F8 |
| Go to the previous diagnostic | ShiftF8 | ShiftF8 | ShiftF8 |
| Fold the current regionThe physical key is layout-dependent; use the corresponding closing bracket to unfold. | CtrlShift[ | AltCmd[ | Ctrl{ |
| Unfold the current region | CtrlShift] | AltCmd] | Ctrl} |
| Toggle the current foldTwo-stroke chord. | CtrlKCtrlL | CmdKCmdL | CtrlKCtrlL |
| Fold all regionsTwo-stroke chord. | CtrlKCtrl0 | CmdKCmd0 | CtrlKCtrl0 |
| Unfold all regionsTwo-stroke chord. | CtrlKCtrlJ | CmdKCmdJ | CtrlKCtrlJ |
| Reveal the current file in the file managerTwo-stroke chord. | CtrlKR | CmdKR | CtrlKR |
| Copy the current file pathTwo-stroke chord. | CtrlKP | CmdKP | CtrlKP |
| Go to the next Git hunkThe current macOS default keymap does not assign a default for this action. | Alt. | Not documented | Alt. |
| Go to the previous Git hunkThe current macOS default keymap does not assign a default for this action. | Alt, | Not documented | Alt, |
Agent panel
Start and steer agent threads, change profiles or modes, review edits, manage permissions, and control queued messages in Zed's agent panel.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Start a new agent thread | CtrlN | CmdN | CtrlN |
| Open agent settings | ShiftAltC | CmdAltC | CtrlAltC |
| Open the agent options menu | ShiftAltI | CmdAltM | ShiftAltI |
| Open the new-thread menu | CtrlShiftAltN | CmdAltShiftN | CtrlAltShiftN |
| Open the agent thread switcher | CtrlTab | CtrlTab | CtrlTab |
| Open the thread switcher and select the previous thread | CtrlShiftTab | CtrlShiftTab | CtrlShiftTab |
| Go back within the agent pane | Ctrl- | Ctrl- | Ctrl- |
| Manage agent profiles | ShiftAltP | CmdAltP | CtrlAltP |
| Manage agent skills | ShiftAltL | CmdAltL | CtrlAltL |
| Toggle the active profile selector | CtrlI | CmdI | CtrlI |
| Cycle the agent mode | ShiftTab | ShiftTab | ShiftTab |
| Open the model selector | ShiftAlt/ | CmdAlt/ | CtrlAlt/ |
| Cycle favorite modelsAlt+L is the additional Linux and Windows binding where Alt+Tab is intercepted by the desktop. | AltTaborAltL | AltTab | AltTaborAltL |
| Expand the agent message editor | ShiftAltEsc | ShiftAltEsc | ShiftAltEsc |
| Add the editor selection to the thread | CtrlShift. | Cmd> | Ctrl> |
| Allow a requested action always | ShiftAltQ | CmdAltY | ShiftAltQ |
| Allow a requested action once | ShiftAltA | CmdY | ShiftAltA |
| Open the permission dropdown | CtrlAltA | CmdAltA | CtrlAltA |
| Reject a requested action once | ShiftAltX | CmdAltZ | ShiftAltX |
| Open the agent diff | CtrlShiftR | ShiftCtrlR | ShiftCtrlR |
| Open the Git diff for the agent thread | CtrlShiftD | ShiftCtrlD | CtrlShiftD |
| Keep all agent edits | ShiftAltY | ShiftAltY | ShiftAltY |
| Reject all agent edits | ShiftAltZ | ShiftAltZ | ShiftAltZ |
| Send a message and keep following the agent | CtrlEnter | CmdEnter | CtrlEnter |
| Send the agent message immediately | CtrlShiftEnter | CmdShiftEnter | CtrlShiftEnter |
| Queue the next agent message | CtrlShiftAltEnter | CmdShiftAltEnter | CtrlShiftAltEnter |
| Remove the first queued message | CtrlShiftBackspace | CmdShiftBackspace | CtrlShiftBackspace |
| Edit the first queued message | CtrlAltE | CmdCtrlE | CtrlAltE |
| Steer the first queued message | CtrlAltS | CmdCtrlS | CtrlAltS |
| Clear the agent message queue | CtrlAltBackspace | CmdAltBackspace | CtrlAltBackspace |
| Paste raw text into the agent editor | CtrlShiftV | CmdShiftV | CtrlShiftV |
| Open the add-context menu | Ctrl; | Ctrl; | Ctrl; |
| Toggle agent thinking mode | CtrlAltK | CmdAltK | CtrlAltK |
| Open the thinking-effort menu | CtrlAlt' | CmdAlt' | CtrlAlt' |
| Cycle thinking effort | Ctrl' | Ctrl' | Ctrl' |
| Toggle fast mode | CtrlAlt. | CmdAlt. | CtrlAlt. |
Terminal and Git
Open and control integrated terminals, then stage, restore, commit, and synchronize changes from the Git panel.
| Action | Windows | macOS | Linux |
|---|---|---|---|
| Toggle the terminal panel | Ctrl` | Ctrl` | Ctrl` |
| Open a new terminal | CtrlShift` | Ctrl~ | Ctrl~ |
| Copy terminal selection | CtrlShiftC | CmdC | CtrlShiftC |
| Paste into the terminal | CtrlShiftV | CmdV | CtrlShiftV |
| Clear the terminal | CtrlShiftL | CmdK | CtrlShiftL |
| Search terminal output | CtrlShiftF | CmdF | CtrlShiftF |
| Select all terminal text | CtrlShiftA | CmdA | CtrlShiftA |
| Scroll terminal output up one page | ShiftPageUp | ShiftPageUp | ShiftPageUp |
| Scroll terminal output down one page | ShiftPageDown | ShiftPageDown | ShiftPageDown |
| Scroll terminal output to the top | ShiftHome | ShiftHome | ShiftHome |
| Scroll terminal output to the bottom | ShiftEnd | ShiftEnd | ShiftEnd |
| Toggle vi-style navigation in the terminal | CtrlShiftSpace | CtrlShiftSpace | CtrlShiftSpace |
| Open the Git panel's Changes tab | Ctrl1 | Ctrl1 | Ctrl1 |
| Open the Git panel's History tab | Ctrl2 | Ctrl2 | Ctrl2 |
| Stage all changes | CtrlSpace | CmdCtrlY | CtrlSpace |
| Unstage all changes | CtrlShiftSpace | CmdCtrlShiftY | CtrlShiftSpace |
| Fetch from the remote | CtrlGCtrlG | CtrlGCtrlG | CtrlGCtrlG |
| Push to the remote | CtrlGUp | CtrlGUp | CtrlGUp |
| Pull from the remote | CtrlGDown | CtrlGDown | CtrlGDown |
| Pull with rebase | CtrlGShiftDown | CtrlGShiftDown | CtrlGShiftDown |
| Force-push to the remote | CtrlGShiftUp | CtrlGShiftUp | CtrlGShiftUp |
| Open the Git diff | CtrlGD | CtrlGD | CtrlGD |
| Restore tracked files | CtrlGBackspace | CtrlGBackspace | CtrlGBackspace |
| Trash untracked files | CtrlGShiftBackspace | CtrlGShiftBackspace | CtrlGShiftBackspace |
| Commit from the Git panel | CtrlEnter | CmdEnter | CtrlEnter |
| Amend the current commit | CtrlShiftEnter | CmdShiftEnter | CtrlShiftEnter |
| Generate a commit message in the commit editor | AltL | AltTab | AltL |