Key bindings
Zed can be configured via a simple JSON file located at ~/.config/zed/keymap.json.
Predefined keymaps
We have a growing collection of pre-defined keymaps in zed repository's keymaps folder. Our current keymaps include:
- Atom
- JetBrains
- SublimeText
- TextMate
- VSCode (default)
These keymaps can be set via the base_keymap setting in your settings.json file. Additionally, if you'd like to work from a clean slate, you can provide "None" to the setting.
Custom key bindings
Accessing custom key bindings
You can open keymap.json via ⌘ + K, ⌘ + S, the command palette, or the Zed > Settings > Open Key Bindings application menu item.
Adding a custom key binding
To customize key bindings, specify a context and the list of bindings to set. Re-mapping an existing binding will clobber the existing binding in favor of the custom one.
An example of adding a set of custom key bindings:
[
{
"context": "Editor",
"bindings": {
"ctrl-w": "editor::SelectLargerSyntaxNode",
"ctrl-shift-W": "editor::SelectSmallerSyntaxNode",
"ctrl-c": "editor::Cancel"
}
}
]
You can see more examples in Zed's default.json
There are some key bindings that can't be overridden; we are working on an issue surrounding this.
Keybinding syntax
Zed has the ability to match against not just a single keypress, but a sequence of keys typed in order. Each key in the "bindings" map is a sequence of keypresses separated with a space.
Each key press is a sequence of modifiers followed by a key. The modifiers are:
ctrl-The control keycmd-On macOS, this is the command keyalt-On macOS, this is the option keyshift-The shift keyfn-The function key
The keys can be any single unicode codepoint that your keyboard generates (for example a, 0, £ or ç).
A few examples:
"bindings": {
"cmd-k cmd-s": "zed::OpenKeymap", // matches ⌘-k then ⌘-s
"space e": "editor::Complete", // type space then e
"ç": "editor::Complete", // matches ⌥-c
}
NOTE: Keys on a keyboard are not always the same as the character they generate. For example shift-e actually types E (or alt-c types ç). Zed allows you to match against either the key and its modifiers or the character it generates. This means you can specify alt-c or ç, but not alt-ç. It is usually better to specify the key and its modifiers, as this will work better on different keyboard layouts.
Remapping keys
A common request is to be able to map from one sequence of keys to another. As of Zed 0.124.0 you can do this with the workspace::SendKeystrokes action.
[
{
"bindings": {
"alt-down": ["workspace::SendKeystrokes", "down down down down"],
"cmd-alt-c": [
"workspace::SendKeystrokes",
"cmd-shift-p copy relative path enter"
],
"cmd-alt-r": ["workspace::SendKeystrokes", "cmd-p README enter"]
}
},
{
"context": "Editor && vim_mode == insert",
"bindings": {
"j k": ["workspace::SendKeystrokes", "escape"],
}
}
]
There are some limitations to this, notably:
- Any asynchronous operation will not happen until after all your key bindings have been dispatched. For example this means that while you can use a binding to open a file (as in the
cmd-alt-rexample) you cannot send further keystrokes and hope to have them interpreted by the new view. -
- Other examples of asynchronous things are: communicating with a language server, changing the language of a buffer, anything that hits the network.
- There is a limit of 100 simulated keys at a time, this is to avoid accidental infinite recursion if you trigger SendKeystrokes again inside your bindings.
The argument to SendKeystrokes is a space-separated list of keystrokes (using the same syntax as above). Due to the way that keystrokes are parsed, any segment that is not recognized as a keypress will be sent verbatim to the currently focused input field.
All key bindings
Global
| Command | Target | Default Shortcut |
|---|---|---|
| Toggle focus | Collab Panel | ⌘ + Shift + C |
| Toggle inlay hints | Editor | Control + : |
| Cancel | Menu | Control + C |
| Cancel | Menu | Control + Escape |
| Cancel | Menu | Escape |
| Cancel | Menu | ⌘ + Escape |
| Confirm | Menu | Enter |
| Secondary confirm | Menu | Control + Enter |
| Secondary confirm | Menu | ⌘ + Enter |
| Select first | Menu | Page Up |
| Select first | Menu | Shift + Page Down |
| Select first | Menu | Shift + Page Up |
| Select first | Menu | ⌘ + Up |
| Select last | Menu | Page Down |
| Select last | Menu | ⌘ + Down |
| Select next | Menu | Control + N |
| Select next | Menu | Down |
| Select prev | Menu | Control + P |
| Select prev | Menu | Up |
| Confirm input | Picker | Alt + Enter |
| Confirm input | Picker | ⌘ + Alt + Enter |
| Use selected query | Picker | Shift + Enter |
| Close window | Workspace | ⌘ + Shift + W |
| Follow next collaborator | Workspace | Control + Alt + ⌘ + F |
| Open | Workspace | ⌘ + O |
| Toggle zoom | Workspace | Shift + Escape |
| Debug elements | Zed | ⌘ + Alt + I |
| Decrease buffer font size | Zed | ⌘ + |
| Hide | Zed | ⌘ + H |
| Hide others | Zed | Alt + ⌘ + H |
| Increase buffer font size | Zed | ⌘ + + |
| Increase buffer font size | Zed | ⌘ + = |
| Minimize | Zed | ⌘ + M |
| Open settings | Zed | ⌘ + , |
| Quit | Zed | ⌘ + Q |
| Reset buffer font size | Zed | ⌘ + 0 |
| Toggle full screen | Zed | Control + ⌘ + F |
Editor
| Command | Target | Default Shortcut |
|---|---|---|
| Add selection above | Editor | ⌘ + Alt + Up |
| Add selection above | Editor | ⌘ + Control + P |
| Add selection below | Editor | ⌘ + Alt + Down |
| Add selection below | Editor | ⌘ + Control + N |
| Backspace | Editor | Backspace |
| Backspace | Editor | Control + H |
| Backspace | Editor | Shift + Backspace |
| Cancel | Editor | Escape |
| Confirm code action | Editor | Enter |
| Confirm completion | Editor | Enter |
| Confirm completion | Editor | Tab |
| Confirm rename | Editor | Enter |
| Context menu first | Editor | Page Up |
| Context menu last | Editor | Page Down |
| Context menu next | Editor | Control + N |
| Context menu next | Editor | Down |
| Context menu prev | Editor | Control + P |
| Context menu prev | Editor | Up |
| Copy | Editor | ⌘ + C |
| Cut | Editor | ⌘ + X |
| Cut to end of line | Editor | Control + K |
| Delete | Editor | Control + D |
| Delete | Editor | Delete |
| Delete line | Editor | ⌘ + Shift + K |
| Delete to beginning of line | Editor | ⌘ + Backspace |
| Delete to end of line | Editor | ⌘ + Delete |
| Delete to next subword end | Editor | Control + Alt + D |
| Delete to next subword end | Editor | Control + Alt + Delete |
| Delete to next word end | Editor | Alt + D |
| Delete to next word end | Editor | Alt + Delete |
| Delete to previous subword start | Editor | Control + Alt + Backspace |
| Delete to previous subword start | Editor | Control + Alt + H |
| Delete to previous word start | Editor | Alt + Backspace |
| Delete to previous word start | Editor | Alt + H |
| Delete to previous word start | Editor | Control + W |
| Display cursor names | Editor | Control + ⌘ + C |
| Duplicate line down | Editor | Alt + Shift + Down |
| Duplicate line up | Editor | Alt + Shift + Up |
| Find all references | Editor | Alt + Shift + F12 |
| Fold | Editor | Alt + ⌘ + [ |
| Format | Editor | ⌘ + Shift + I |
| Go to definition | Editor | F12 |
| Go to definition split | Editor | Alt + F12 |
| Go to diagnostic | Editor | F8 |
| Go to implementation | Editor | Shift + F12 |
| Go to prev diagnostic | Editor | Shift + F8 |
| Go to type definition | Editor | ⌘ + F12 |
| Go to type definition split | Editor | Alt + ⌘ + F12 |
| Hover | Editor | ⌘ + K, ⌘ + I |
| Indent | Editor | ⌘ + ] |
| Join lines | Editor | Control + J |
| Move down | Editor | Control + N |
| Move down | Editor | Down |
| Move left | Editor | Control + B |
| Move left | Editor | Left |
| Move line down | Editor | Alt + Down |
| Move line up | Editor | Alt + Up |
| Move page down | Editor | Control + V |
| Move page down | Editor | Shift + Page Down |
| Move page up | Editor | Alt + V |
| Move page up | Editor | Shift + Page Up |
| Move right | Editor | Control + F |
| Move right | Editor | Right |
| Move to beginning | Editor | ⌘ + Up |
| Move to beginning of line | Editor | Control + A |
| Move to beginning of line | Editor | Home |
| Move to beginning of line | Editor | ⌘ + Left |
| Move to enclosing bracket | Editor | Control + M |
| Move to end | Editor | ⌘ + Down |
| Move to end of line | Editor | Control + E |
| Move to end of line | Editor | End |
| Move to end of line | Editor | ⌘ + Right |
| Move to end of paragraph | Editor | Control + Down |
| Move to next subword end | Editor | Control + Alt + F |
| Move to next subword end | Editor | Control + Alt + Right |
| Move to next word end | Editor | Alt + F |
| Move to next word end | Editor | Alt + Right |
| Move to previous subword start | Editor | Control + Alt + B |
| Move to previous subword start | Editor | Control + Alt + Left |
| Move to previous word start | Editor | Alt + B |
| Move to previous word start | Editor | Alt + Left |
| Move to start of paragraph | Editor | Control + Up |
| Move up | Editor | Control + P |
| Move up | Editor | Up |
| Next screen | Editor | Control + L |
| Outdent | Editor | ⌘ + [ |
| Page down | Editor | Page Down |
| Page up | Editor | Page Up |
| Paste | Editor | ⌘ + V |
| Redo | Editor | ⌘ + Shift + Z |
| Redo selection | Editor | ⌘ + Shift + U |
| Rename | Editor | F2 |
| Reveal in finder | Editor | Alt + ⌘ + R |
| Revert selected hunks | Editor | ⌘ + Alt + Z |
| Select all | Editor | ⌘ + A |
| Select all matches | Editor | ⌘ + Shift + L |
| Select down | Editor | Control + Shift + N |
| Select down | Editor | Shift + Down |
| Select larger syntax node | Editor | Control + Shift + Right |
| Select left | Editor | Control + Shift + B |
| Select left | Editor | Shift + Left |
| Select line | Editor | ⌘ + L |
| Select next | Editor | ⌘ + D |
| Select next | Editor | ⌘ + K, ⌘ + D |
| Select previous | Editor | Control + ⌘ + D |
| Select previous | Editor | ⌘ + K, Control + ⌘ + D |
| Select right | Editor | Control + Shift + F |
| Select right | Editor | Shift + Right |
| Select smaller syntax node | Editor | Control + Shift + Left |
| Select to beginning | Editor | ⌘ + Shift + Up |
| Select to beginning of line | Editor | Control + Shift + A |
| Select to beginning of line | Editor | Shift + Home |
| Select to beginning of line | Editor | ⌘ + Shift + Left |
| Select to end | Editor | ⌘ + Shift + Down |
| Select to end of line | Editor | Control + Shift + E |
| Select to end of line | Editor | Shift + End |
| Select to end of line | Editor | ⌘ + Shift + Right |
| Select to end of paragraph | Editor | Control + Shift + Down |
| Select to next subword end | Editor | Control + Alt + Shift + F |
| Select to next subword end | Editor | Control + Alt + Shift + Right |
| Select to next word end | Editor | Alt + Shift + F |
| Select to next word end | Editor | Alt + Shift + Right |
| Select to previous subword start | Editor | Control + Alt + Shift + B |
| Select to previous subword start | Editor | Control + Alt + Shift + Left |
| Select to previous word start | Editor | Alt + Shift + B |
| Select to previous word start | Editor | Alt + Shift + Left |
| Select to start of paragraph | Editor | Control + Shift + Up |
| Select up | Editor | Control + Shift + P |
| Select up | Editor | Shift + Up |
| Show character palette | Editor | Control + ⌘ + Space |
| Show completions | Editor | Control + Space |
| Show inline completion | Editor | Alt + \ |
| Tab | Editor | Tab |
| Tab prev | Editor | Shift + Tab |
| Toggle code actions | Editor | ⌘ + . |
| Toggle comments | Editor | ⌘ + / |
| Toggle git blame | Editor | ⌘ + Alt + G, B |
| Toggle line numbers | Editor | ⌘ + ; |
| Transpose | Editor | Control + T |
| Undo | Editor | ⌘ + Z |
| Undo selection | Editor | ⌘ + U |
| Unfold lines | Editor | Alt + ⌘ + ] |
Editor (Full Only)
| Command | Target | Default Shortcut |
|---|---|---|
| Inline assist | Assistant | Control + Enter |
| Quote selection | Assistant | ⌘ + > |
| Deploy | Buffer Search | ⌘ + Alt + F |
| Deploy | Buffer Search | ⌘ + E |
| Deploy | Buffer Search | ⌘ + F |
| Accept partial inline completion | Editor | Alt + Right |
| Go to hunk | Editor | ⌘ + F8 |
| Go to prev hunk | Editor | ⌘ + Shift + F8 |
| Newline | Editor | Enter |
| Newline | Editor | Shift + Enter |
| Newline above | Editor | ⌘ + Shift + Enter |
| Newline below | Editor | ⌘ + Enter |
| Next inline completion | Editor | Alt + ] |
| Open excerpts | Editor | Alt + Enter |
| Open excerpts split | Editor | ⌘ + K, Enter |
| Previous inline completion | Editor | Alt + [ |
| Toggle soft wrap | Editor | Alt + Z |
| Toggle | Go To Line | Control + G |
| Toggle | Outline | ⌘ + Shift + O |
Editor (Auto Height Only)
| Command | Target | Default Shortcut |
|---|---|---|
| Newline | Editor | Control + Enter |
| Newline | Editor | Shift + Enter |
| Newline below | Editor | Control + Shift + Enter |
Pane
| Command | Target | Default Shortcut |
|---|---|---|
| Activate item 1 | Pane | Control + 1 |
| Activate item 2 | Pane | Control + 2 |
| Activate item 3 | Pane | Control + 3 |
| Activate item 4 | Pane | Control + 4 |
| Activate item 5 | Pane | Control + 5 |
| Activate item 6 | Pane | Control + 6 |
| Activate item 7 | Pane | Control + 7 |
| Activate item 8 | Pane | Control + 8 |
| Activate item 9 | Pane | Control + 9 |
| Activate last item | Pane | Control + 0 |
| Activate next item | Pane | Alt + ⌘ + Right |
| Activate next item | Pane | ⌘ + } |
| Activate prev item | Pane | Alt + ⌘ + Left |
| Activate prev item | Pane | ⌘ + { |
| Close active item | Pane | ⌘ + W |
| Close all items | Pane | ⌘ + K, ⌘ + W |
| Close clean items | Pane | ⌘ + K, U |
| Close inactive items | Pane | Alt + ⌘ + T |
| Go back | Pane | Control + |
| Go forward | Pane | Control + _ |
| Reopen closed item | Pane | ⌘ + Shift + T |
| Split down | Pane | ⌘ + K, Down |
| Split left | Pane | ⌘ + K, Left |
| Split right | Pane | ⌘ + K, Right |
| Split up | Pane | ⌘ + K, Up |
| Toggle filters | Project Search | Alt + ⌘ + F |
| Toggle focus | Project Search | ⌘ + F |
| Toggle focus | Project Search | ⌘ + Shift + F |
| Activate regex mode | Search | Alt + ⌘ + G |
| Activate text mode | Search | Alt + ⌘ + X |
| Cycle mode | Search | Alt + Tab |
| Select all matches | Search | Alt + Enter |
| Select next match | Search | ⌘ + G |
| Select prev match | Search | ⌘ + Shift + G |
| Toggle case sensitive | Search | Alt + ⌘ + C |
| Toggle replace | Search | ⌘ + Shift + H |
| Toggle whole word | Search | Alt + ⌘ + W |
| Close inactive tabs and panes | Workspace | Control + Alt + ⌘ + W |
Buffer Search Bar
| Command | Target | Default Shortcut |
|---|---|---|
| Dismiss | Buffer Search | Escape |
| Focus editor | Buffer Search | Tab |
| Cycle mode | Search | Alt + Tab |
| Focus search | Search | ⌘ + F |
| Next history query | Search | Down |
| Previous history query | Search | Up |
| Replace all | Search | ⌘ + Enter |
| Replace next | Search | Enter |
| Select all matches | Search | Alt + Enter |
| Select next match | Search | Enter |
| Select prev match | Search | Shift + Enter |
| Toggle replace | Search | ⌘ + Alt + F |
Workspace
| Command | Target | Default Shortcut |
|---|---|---|
| Toggle focus | Assistant | ⌘ + ? |
| Open recent | Branches | Alt + ⌘ + B |
| Toggle | Command Palette | ⌘ + Shift + P |
| Deploy | Diagnostics | ⌘ + Shift + M |
| Toggle | File Finder | ⌘ + P |
| Toggle | Language Selector | ⌘ + K, M |
| Deploy search | Pane | ⌘ + Shift + F |
| Deploy search | Pane | ⌘ + Shift + H |
| Toggle focus | Project Panel | ⌘ + Shift + E |
| Toggle | Project Symbols | ⌘ + T |
| Open recent | Projects | Alt + ⌘ + O |
| Toggle | Tab Switcher | Control + Shift + Tab |
| Toggle | Tab Switcher | Control + Tab |
| Rerun | Task | Alt + T |
| Spawn | Task | Alt + Shift + T |
| Toggle focus | Terminal Panel | Control + ` |
| Toggle | Theme Selector | ⌘ + K, ⌘ + T |
| Activate pane 1 | Workspace | ⌘ + 1 |
| Activate pane 2 | Workspace | ⌘ + 2 |
| Activate pane 3 | Workspace | ⌘ + 3 |
| Activate pane 4 | Workspace | ⌘ + 4 |
| Activate pane 5 | Workspace | ⌘ + 5 |
| Activate pane 6 | Workspace | ⌘ + 6 |
| Activate pane 7 | Workspace | ⌘ + 7 |
| Activate pane 8 | Workspace | ⌘ + 8 |
| Activate pane 9 | Workspace | ⌘ + 9 |
| Activate pane in direction down | Workspace | ⌘ + K, ⌘ + Down |
| Activate pane in direction left | Workspace | ⌘ + K, ⌘ + Left |
| Activate pane in direction right | Workspace | ⌘ + K, ⌘ + Right |
| Activate pane in direction up | Workspace | ⌘ + K, ⌘ + Up |
| Close all docks | Workspace | Alt + ⌘ + Y |
| New file | Workspace | ⌘ + N |
| New terminal | Workspace | Control + ~ |
| New window | Workspace | ⌘ + Shift + N |
| Save | Workspace | ⌘ + S |
| Save all | Workspace | ⌘ + Alt + S |
| Save as | Workspace | ⌘ + Shift + S |
| Save without format | Workspace | ⌘ + K, S |
| Swap pane in direction | Workspace | ⌘ + K, Shift + Down |
| Swap pane in direction | Workspace | ⌘ + K, Shift + Left |
| Swap pane in direction | Workspace | ⌘ + K, Shift + Right |
| Swap pane in direction | Workspace | ⌘ + K, Shift + Up |
| Toggle bottom dock | Workspace | ⌘ + J |
| Toggle left dock | Workspace | ⌘ + B |
| Toggle right dock | Workspace | ⌘ + R |
| Unfollow | Workspace | Escape |
| Open keymap | Zed | ⌘ + K, ⌘ + S |
Project Panel
| Command | Target | Default Shortcut |
|---|---|---|
| Collapse selected entry | Project Panel | Left |
| Copy | Project Panel | ⌘ + C |
| Copy path | Project Panel | ⌘ + Alt + C |
| Copy relative path | Project Panel | Alt + ⌘ + Shift + C |
| Cut | Project Panel | ⌘ + X |
| Delete | Project Panel | Backspace |
| Delete | Project Panel | Delete |
| Delete | Project Panel | ⌘ + Backspace |
| Delete | Project Panel | ⌘ + Delete |
| Expand selected entry | Project Panel | Right |
| New directory | Project Panel | Alt + ⌘ + N |
| New file | Project Panel | ⌘ + N |
| New search in directory | Project Panel | Alt + Shift + F |
| Open | Project Panel | Space |
| Paste | Project Panel | ⌘ + V |
| Rename | Project Panel | Enter |
| Rename | Project Panel | F2 |
| Reveal in finder | Project Panel | Alt + ⌘ + R |
Project Search Bar
| Command | Target | Default Shortcut |
|---|---|---|
| Search in new | Project Search | ⌘ + Enter |
| Toggle focus | Project Search | Escape |
| Activate regex mode | Search | Alt + ⌘ + G |
| Activate text mode | Search | Alt + ⌘ + X |
| Cycle mode | Search | Alt + Tab |
| Focus search | Search | ⌘ + Shift + F |
| Next history query | Search | Down |
| Previous history query | Search | Up |
| Replace all | Search | ⌘ + Enter |
| Replace next | Search | Enter |
| Toggle replace | Search | ⌘ + Shift + H |
Terminal
| Command | Target | Default Shortcut |
|---|---|---|
| Clear | Terminal | ⌘ + K |
| Copy | Terminal | ⌘ + C |
| Delete line | Terminal | ⌘ + Backspace |
| Move to beginning of line | Terminal | ⌘ + Left |
| Move to end of line | Terminal | ⌘ + Right |
| Move to next word end | Terminal | Alt + Right |
| Move to previous word start | Terminal | Alt + Left |
| Paste | Terminal | ⌘ + V |
| Show character palette | Terminal | Control + ⌘ + Space |
Assistant Editor
| Command | Target | Default Shortcut |
|---|---|---|
| Assist | Assistant | ⌘ + Enter |
| Cycle message role | Assistant | Control + R |
| Quote selection | Assistant | ⌘ + > |
| Split | Assistant | Shift + Enter |
Lines 1–500 of 501. Load more
# Key bindings Zed can be configured via a simple JSON file located at `~/.config/zed/keymap.json`. ## Predefined keymaps We have a growing collection of pre-defined keymaps in [zed repository's keymaps folder](https://github.com/zed-industries/zed/tree/main/assets/keymaps). Our current keymaps include: - Atom - JetBrains - SublimeText - TextMate - VSCode (default) These keymaps can be set via the `base_keymap` setting in your `settings.json` file. Additionally, if you'd like to work from a clean slate, you can provide `"None"` to the setting. ## Custom key bindings ### Accessing custom key bindings You can open `keymap.json` via `⌘` + `K`, `⌘` + `S`, the command palette, or the `Zed > Settings > Open Key Bindings` application menu item. ### Adding a custom key binding To customize key bindings, specify a context and the list of bindings to set. Re-mapping an existing binding will clobber the existing binding in favor of the custom one. An example of adding a set of custom key bindings: ```json [ { "context": "Editor", "bindings": { "ctrl-w": "editor::SelectLargerSyntaxNode", "ctrl-shift-W": "editor::SelectSmallerSyntaxNode", "ctrl-c": "editor::Cancel" } } ] ``` You can see more examples in Zed's [`default.json`](https://github.com/zed-industries/zed/blob/main/assets/keymaps/default-macos.json) _There are some key bindings that can't be overridden; we are working on an issue surrounding this._ ### Keybinding syntax Zed has the ability to match against not just a single keypress, but a sequence of keys typed in order. Each key in the `"bindings"` map is a sequence of keypresses separated with a space. Each key press is a sequence of modifiers followed by a key. The modifiers are: - `ctrl-` The control key - `cmd-` On macOS, this is the command key - `alt-` On macOS, this is the option key - `shift-` The shift key - `fn-` The function key The keys can be any single unicode codepoint that your keyboard generates (for example `a`, `0`, `£` or `ç`). A few examples: ``` "bindings": { "cmd-k cmd-s": "zed::OpenKeymap", // matches ⌘-k then ⌘-s "space e": "editor::Complete", // type space then e "ç": "editor::Complete", // matches ⌥-c } ``` NOTE: Keys on a keyboard are not always the same as the character they generate. For example `shift-e` actually types `E` (or `alt-c` types `ç`). Zed allows you to match against either the key and its modifiers or the character it generates. This means you can specify `alt-c` or `ç`, but not `alt-ç`. It is usually better to specify the key and its modifiers, as this will work better on different keyboard layouts. ### Remapping keys A common request is to be able to map from one sequence of keys to another. As of Zed 0.124.0 you can do this with the `workspace::SendKeystrokes` action. ```json [ { "bindings": { "alt-down": ["workspace::SendKeystrokes", "down down down down"], "cmd-alt-c": [ "workspace::SendKeystrokes", "cmd-shift-p copy relative path enter" ], "cmd-alt-r": ["workspace::SendKeystrokes", "cmd-p README enter"] } }, { "context": "Editor && vim_mode == insert", "bindings": { "j k": ["workspace::SendKeystrokes", "escape"], } } ] ``` There are some limitations to this, notably: - Any asynchronous operation will not happen until after all your key bindings have been dispatched. For example this means that while you can use a binding to open a file (as in the `cmd-alt-r` example) you cannot send further keystrokes and hope to have them interpreted by the new view. - - Other examples of asynchronous things are: communicating with a language server, changing the language of a buffer, anything that hits the network. - There is a limit of 100 simulated keys at a time, this is to avoid accidental infinite recursion if you trigger SendKeystrokes again inside your bindings. The argument to `SendKeystrokes` is a space-separated list of keystrokes (using the same syntax as above). Due to the way that keystrokes are parsed, any segment that is not recognized as a keypress will be sent verbatim to the currently focused input field. ### All key bindings #### Global | **Command** | **Target** | **Default Shortcut** | | ------------------------- | ------------ | ----------------------- | | Toggle focus | Collab Panel | `⌘ + Shift + C` | | Toggle inlay hints | Editor | `Control + :` | | Cancel | Menu | `Control + C` | | Cancel | Menu | `Control + Escape` | | Cancel | Menu | `Escape` | | Cancel | Menu | `⌘ + Escape` | | Confirm | Menu | `Enter` | | Secondary confirm | Menu | `Control + Enter` | | Secondary confirm | Menu | `⌘ + Enter` | | Select first | Menu | `Page Up` | | Select first | Menu | `Shift + Page Down` | | Select first | Menu | `Shift + Page Up` | | Select first | Menu | `⌘ + Up` | | Select last | Menu | `Page Down` | | Select last | Menu | `⌘ + Down` | | Select next | Menu | `Control + N` | | Select next | Menu | `Down` | | Select prev | Menu | `Control + P` | | Select prev | Menu | `Up` | | Confirm input | Picker | `Alt + Enter` | | Confirm input | Picker | `⌘ + Alt + Enter` | | Use selected query | Picker | `Shift + Enter` | | Close window | Workspace | `⌘ + Shift + W` | | Follow next collaborator | Workspace | `Control + Alt + ⌘ + F` | | Open | Workspace | `⌘ + O` | | Toggle zoom | Workspace | `Shift + Escape` | | Debug elements | Zed | `⌘ + Alt + I` | | Decrease buffer font size | Zed | `⌘ + ` | | Hide | Zed | `⌘ + H` | | Hide others | Zed | `Alt + ⌘ + H` | | Increase buffer font size | Zed | `⌘ + +` | | Increase buffer font size | Zed | `⌘ + =` | | Minimize | Zed | `⌘ + M` | | Open settings | Zed | `⌘ + ,` | | Quit | Zed | `⌘ + Q` | | Reset buffer font size | Zed | `⌘ + 0` | | Toggle full screen | Zed | `Control + ⌘ + F` | #### Editor | **Command** | **Target** | **Default Shortcut** | | -------------------------------- | ---------- | ------------------------------- | | Add selection above | Editor | `⌘ + Alt + Up` | | Add selection above | Editor | `⌘ + Control + P` | | Add selection below | Editor | `⌘ + Alt + Down` | | Add selection below | Editor | `⌘ + Control + N` | | Backspace | Editor | `Backspace` | | Backspace | Editor | `Control + H` | | Backspace | Editor | `Shift + Backspace` | | Cancel | Editor | `Escape` | | Confirm code action | Editor | `Enter` | | Confirm completion | Editor | `Enter` | | Confirm completion | Editor | `Tab` | | Confirm rename | Editor | `Enter` | | Context menu first | Editor | `Page Up` | | Context menu last | Editor | `Page Down` | | Context menu next | Editor | `Control + N` | | Context menu next | Editor | `Down` | | Context menu prev | Editor | `Control + P` | | Context menu prev | Editor | `Up` | | Copy | Editor | `⌘ + C` | | Cut | Editor | `⌘ + X` | | Cut to end of line | Editor | `Control + K` | | Delete | Editor | `Control + D` | | Delete | Editor | `Delete` | | Delete line | Editor | `⌘ + Shift + K` | | Delete to beginning of line | Editor | `⌘ + Backspace` | | Delete to end of line | Editor | `⌘ + Delete` | | Delete to next subword end | Editor | `Control + Alt + D` | | Delete to next subword end | Editor | `Control + Alt + Delete` | | Delete to next word end | Editor | `Alt + D` | | Delete to next word end | Editor | `Alt + Delete` | | Delete to previous subword start | Editor | `Control + Alt + Backspace` | | Delete to previous subword start | Editor | `Control + Alt + H` | | Delete to previous word start | Editor | `Alt + Backspace` | | Delete to previous word start | Editor | `Alt + H` | | Delete to previous word start | Editor | `Control + W` | | Display cursor names | Editor | `Control + ⌘ + C` | | Duplicate line down | Editor | `Alt + Shift + Down` | | Duplicate line up | Editor | `Alt + Shift + Up` | | Find all references | Editor | `Alt + Shift + F12` | | Fold | Editor | `Alt + ⌘ + [` | | Format | Editor | `⌘ + Shift + I` | | Go to definition | Editor | `F12` | | Go to definition split | Editor | `Alt + F12` | | Go to diagnostic | Editor | `F8` | | Go to implementation | Editor | `Shift + F12` | | Go to prev diagnostic | Editor | `Shift + F8` | | Go to type definition | Editor | `⌘ + F12` | | Go to type definition split | Editor | `Alt + ⌘ + F12` | | Hover | Editor | `⌘ + K, ⌘ + I` | | Indent | Editor | `⌘ + ]` | | Join lines | Editor | `Control + J` | | Move down | Editor | `Control + N` | | Move down | Editor | `Down` | | Move left | Editor | `Control + B` | | Move left | Editor | `Left` | | Move line down | Editor | `Alt + Down` | | Move line up | Editor | `Alt + Up` | | Move page down | Editor | `Control + V` | | Move page down | Editor | `Shift + Page Down` | | Move page up | Editor | `Alt + V` | | Move page up | Editor | `Shift + Page Up` | | Move right | Editor | `Control + F` | | Move right | Editor | `Right` | | Move to beginning | Editor | `⌘ + Up` | | Move to beginning of line | Editor | `Control + A` | | Move to beginning of line | Editor | `Home` | | Move to beginning of line | Editor | `⌘ + Left` | | Move to enclosing bracket | Editor | `Control + M` | | Move to end | Editor | `⌘ + Down` | | Move to end of line | Editor | `Control + E` | | Move to end of line | Editor | `End` | | Move to end of line | Editor | `⌘ + Right` | | Move to end of paragraph | Editor | `Control + Down` | | Move to next subword end | Editor | `Control + Alt + F` | | Move to next subword end | Editor | `Control + Alt + Right` | | Move to next word end | Editor | `Alt + F` | | Move to next word end | Editor | `Alt + Right` | | Move to previous subword start | Editor | `Control + Alt + B` | | Move to previous subword start | Editor | `Control + Alt + Left` | | Move to previous word start | Editor | `Alt + B` | | Move to previous word start | Editor | `Alt + Left` | | Move to start of paragraph | Editor | `Control + Up` | | Move up | Editor | `Control + P` | | Move up | Editor | `Up` | | Next screen | Editor | `Control + L` | | Outdent | Editor | `⌘ + [` | | Page down | Editor | `Page Down` | | Page up | Editor | `Page Up` | | Paste | Editor | `⌘ + V` | | Redo | Editor | `⌘ + Shift + Z` | | Redo selection | Editor | `⌘ + Shift + U` | | Rename | Editor | `F2` | | Reveal in finder | Editor | `Alt + ⌘ + R` | | Revert selected hunks | Editor | `⌘ + Alt + Z` | | Select all | Editor | `⌘ + A` | | Select all matches | Editor | `⌘ + Shift + L` | | Select down | Editor | `Control + Shift + N` | | Select down | Editor | `Shift + Down` | | Select larger syntax node | Editor | `Control + Shift + Right` | | Select left | Editor | `Control + Shift + B` | | Select left | Editor | `Shift + Left` | | Select line | Editor | `⌘ + L` | | Select next | Editor | `⌘ + D` | | Select next | Editor | `⌘ + K, ⌘ + D` | | Select previous | Editor | `Control + ⌘ + D` | | Select previous | Editor | `⌘ + K, Control + ⌘ + D` | | Select right | Editor | `Control + Shift + F` | | Select right | Editor | `Shift + Right` | | Select smaller syntax node | Editor | `Control + Shift + Left` | | Select to beginning | Editor | `⌘ + Shift + Up` | | Select to beginning of line | Editor | `Control + Shift + A` | | Select to beginning of line | Editor | `Shift + Home` | | Select to beginning of line | Editor | `⌘ + Shift + Left` | | Select to end | Editor | `⌘ + Shift + Down` | | Select to end of line | Editor | `Control + Shift + E` | | Select to end of line | Editor | `Shift + End` | | Select to end of line | Editor | `⌘ + Shift + Right` | | Select to end of paragraph | Editor | `Control + Shift + Down` | | Select to next subword end | Editor | `Control + Alt + Shift + F` | | Select to next subword end | Editor | `Control + Alt + Shift + Right` | | Select to next word end | Editor | `Alt + Shift + F` | | Select to next word end | Editor | `Alt + Shift + Right` | | Select to previous subword start | Editor | `Control + Alt + Shift + B` | | Select to previous subword start | Editor | `Control + Alt + Shift + Left` | | Select to previous word start | Editor | `Alt + Shift + B` | | Select to previous word start | Editor | `Alt + Shift + Left` | | Select to start of paragraph | Editor | `Control + Shift + Up` | | Select up | Editor | `Control + Shift + P` | | Select up | Editor | `Shift + Up` | | Show character palette | Editor | `Control + ⌘ + Space` | | Show completions | Editor | `Control + Space` | | Show inline completion | Editor | `Alt + \` | | Tab | Editor | `Tab` | | Tab prev | Editor | `Shift + Tab` | | Toggle code actions | Editor | `⌘ + .` | | Toggle comments | Editor | `⌘ + /` | | Toggle git blame | Editor | `⌘ + Alt + G, B` | | Toggle line numbers | Editor | `⌘ + ;` | | Transpose | Editor | `Control + T` | | Undo | Editor | `⌘ + Z` | | Undo selection | Editor | `⌘ + U` | | Unfold lines | Editor | `Alt + ⌘ + ]` | #### Editor (Full Only) | **Command** | **Target** | **Default Shortcut** | | -------------------------------- | ------------- | -------------------- | | Inline assist | Assistant | `Control + Enter` | | Quote selection | Assistant | `⌘ + >` | | Deploy | Buffer Search | `⌘ + Alt + F` | | Deploy | Buffer Search | `⌘ + E` | | Deploy | Buffer Search | `⌘ + F` | | Accept partial inline completion | Editor | `Alt + Right` | | Go to hunk | Editor | `⌘ + F8` | | Go to prev hunk | Editor | `⌘ + Shift + F8` | | Newline | Editor | `Enter` | | Newline | Editor | `Shift + Enter` | | Newline above | Editor | `⌘ + Shift + Enter` | | Newline below | Editor | `⌘ + Enter` | | Next inline completion | Editor | `Alt + ]` | | Open excerpts | Editor | `Alt + Enter` | | Open excerpts split | Editor | `⌘ + K, Enter` | | Previous inline completion | Editor | `Alt + [` | | Toggle soft wrap | Editor | `Alt + Z` | | Toggle | Go To Line | `Control + G` | | Toggle | Outline | `⌘ + Shift + O` | #### Editor (Auto Height Only) | **Command** | **Target** | **Default Shortcut** | | ------------- | ---------- | ------------------------- | | Newline | Editor | `Control + Enter` | | Newline | Editor | `Shift + Enter` | | Newline below | Editor | `Control + Shift + Enter` | #### Pane | **Command** | **Target** | **Default Shortcut** | | ----------------------------- | -------------- | ----------------------- | | Activate item 1 | Pane | `Control + 1` | | Activate item 2 | Pane | `Control + 2` | | Activate item 3 | Pane | `Control + 3` | | Activate item 4 | Pane | `Control + 4` | | Activate item 5 | Pane | `Control + 5` | | Activate item 6 | Pane | `Control + 6` | | Activate item 7 | Pane | `Control + 7` | | Activate item 8 | Pane | `Control + 8` | | Activate item 9 | Pane | `Control + 9` | | Activate last item | Pane | `Control + 0` | | Activate next item | Pane | `Alt + ⌘ + Right` | | Activate next item | Pane | `⌘ + }` | | Activate prev item | Pane | `Alt + ⌘ + Left` | | Activate prev item | Pane | `⌘ + {` | | Close active item | Pane | `⌘ + W` | | Close all items | Pane | `⌘ + K, ⌘ + W` | | Close clean items | Pane | `⌘ + K, U` | | Close inactive items | Pane | `Alt + ⌘ + T` | | Go back | Pane | `Control + ` | | Go forward | Pane | `Control + _` | | Reopen closed item | Pane | `⌘ + Shift + T` | | Split down | Pane | `⌘ + K, Down` | | Split left | Pane | `⌘ + K, Left` | | Split right | Pane | `⌘ + K, Right` | | Split up | Pane | `⌘ + K, Up` | | Toggle filters | Project Search | `Alt + ⌘ + F` | | Toggle focus | Project Search | `⌘ + F` | | Toggle focus | Project Search | `⌘ + Shift + F` | | Activate regex mode | Search | `Alt + ⌘ + G` | | Activate text mode | Search | `Alt + ⌘ + X` | | Cycle mode | Search | `Alt + Tab` | | Select all matches | Search | `Alt + Enter` | | Select next match | Search | `⌘ + G` | | Select prev match | Search | `⌘ + Shift + G` | | Toggle case sensitive | Search | `Alt + ⌘ + C` | | Toggle replace | Search | `⌘ + Shift + H` | | Toggle whole word | Search | `Alt + ⌘ + W` | | Close inactive tabs and panes | Workspace | `Control + Alt + ⌘ + W` | #### Buffer Search Bar | **Command** | **Target** | **Default Shortcut** | | ---------------------- | ------------- | -------------------- | | Dismiss | Buffer Search | `Escape` | | Focus editor | Buffer Search | `Tab` | | Cycle mode | Search | `Alt + Tab` | | Focus search | Search | `⌘ + F` | | Next history query | Search | `Down` | | Previous history query | Search | `Up` | | Replace all | Search | `⌘ + Enter` | | Replace next | Search | `Enter` | | Select all matches | Search | `Alt + Enter` | | Select next match | Search | `Enter` | | Select prev match | Search | `Shift + Enter` | | Toggle replace | Search | `⌘ + Alt + F` | #### Workspace | **Command** | **Target** | **Default Shortcut** | | -------------------------------- | ----------------- | ----------------------- | | Toggle focus | Assistant | `⌘ + ?` | | Open recent | Branches | `Alt + ⌘ + B` | | Toggle | Command Palette | `⌘ + Shift + P` | | Deploy | Diagnostics | `⌘ + Shift + M` | | Toggle | File Finder | `⌘ + P` | | Toggle | Language Selector | `⌘ + K, M` | | Deploy search | Pane | `⌘ + Shift + F` | | Deploy search | Pane | `⌘ + Shift + H` | | Toggle focus | Project Panel | `⌘ + Shift + E` | | Toggle | Project Symbols | `⌘ + T` | | Open recent | Projects | `Alt + ⌘ + O` | | Toggle | Tab Switcher | `Control + Shift + Tab` | | Toggle | Tab Switcher | `Control + Tab` | | Rerun | Task | `Alt + T` | | Spawn | Task | `Alt + Shift + T` | | Toggle focus | Terminal Panel | ``Control + ` `` | | Toggle | Theme Selector | `⌘ + K, ⌘ + T` | | Activate pane 1 | Workspace | `⌘ + 1` | | Activate pane 2 | Workspace | `⌘ + 2` | | Activate pane 3 | Workspace | `⌘ + 3` | | Activate pane 4 | Workspace | `⌘ + 4` | | Activate pane 5 | Workspace | `⌘ + 5` | | Activate pane 6 | Workspace | `⌘ + 6` | | Activate pane 7 | Workspace | `⌘ + 7` | | Activate pane 8 | Workspace | `⌘ + 8` | | Activate pane 9 | Workspace | `⌘ + 9` | | Activate pane in direction down | Workspace | `⌘ + K, ⌘ + Down` | | Activate pane in direction left | Workspace | `⌘ + K, ⌘ + Left` | | Activate pane in direction right | Workspace | `⌘ + K, ⌘ + Right` | | Activate pane in direction up | Workspace | `⌘ + K, ⌘ + Up` | | Close all docks | Workspace | `Alt + ⌘ + Y` | | New file | Workspace | `⌘ + N` | | New terminal | Workspace | `Control + ~` | | New window | Workspace | `⌘ + Shift + N` | | Save | Workspace | `⌘ + S` | | Save all | Workspace | `⌘ + Alt + S` | | Save as | Workspace | `⌘ + Shift + S` | | Save without format | Workspace | `⌘ + K, S` | | Swap pane in direction | Workspace | `⌘ + K, Shift + Down` | | Swap pane in direction | Workspace | `⌘ + K, Shift + Left` | | Swap pane in direction | Workspace | `⌘ + K, Shift + Right` | | Swap pane in direction | Workspace | `⌘ + K, Shift + Up` | | Toggle bottom dock | Workspace | `⌘ + J` | | Toggle left dock | Workspace | `⌘ + B` | | Toggle right dock | Workspace | `⌘ + R` | | Unfollow | Workspace | `Escape` | | Open keymap | Zed | `⌘ + K, ⌘ + S` | #### Project Panel | **Command** | **Target** | **Default Shortcut** | | ----------------------- | ------------- | --------------------- | | Collapse selected entry | Project Panel | `Left` | | Copy | Project Panel | `⌘ + C` | | Copy path | Project Panel | `⌘ + Alt + C` | | Copy relative path | Project Panel | `Alt + ⌘ + Shift + C` | | Cut | Project Panel | `⌘ + X` | | Delete | Project Panel | `Backspace` | | Delete | Project Panel | `Delete` | | Delete | Project Panel | `⌘ + Backspace` | | Delete | Project Panel | `⌘ + Delete` | | Expand selected entry | Project Panel | `Right` | | New directory | Project Panel | `Alt + ⌘ + N` | | New file | Project Panel | `⌘ + N` | | New search in directory | Project Panel | `Alt + Shift + F` | | Open | Project Panel | `Space` | | Paste | Project Panel | `⌘ + V` | | Rename | Project Panel | `Enter` | | Rename | Project Panel | `F2` | | Reveal in finder | Project Panel | `Alt + ⌘ + R` | #### Project Search Bar | **Command** | **Target** | **Default Shortcut** | | ---------------------- | -------------- | -------------------- | | Search in new | Project Search | `⌘ + Enter` | | Toggle focus | Project Search | `Escape` | | Activate regex mode | Search | `Alt + ⌘ + G` | | Activate text mode | Search | `Alt + ⌘ + X` | | Cycle mode | Search | `Alt + Tab` | | Focus search | Search | `⌘ + Shift + F` | | Next history query | Search | `Down` | | Previous history query | Search | `Up` | | Replace all | Search | `⌘ + Enter` | | Replace next | Search | `Enter` | | Toggle replace | Search | `⌘ + Shift + H` | #### Terminal | **Command** | **Target** | **Default Shortcut** | | --------------------------- | ---------- | --------------------- | | Clear | Terminal | `⌘ + K` | | Copy | Terminal | `⌘ + C` | | Delete line | Terminal | `⌘ + Backspace` | | Move to beginning of line | Terminal | `⌘ + Left` | | Move to end of line | Terminal | `⌘ + Right` | | Move to next word end | Terminal | `Alt + Right` | | Move to previous word start | Terminal | `Alt + Left` | | Paste | Terminal | `⌘ + V` | | Show character palette | Terminal | `Control + ⌘ + Space` | #### Assistant Editor | **Command** | **Target** | **Default Shortcut** | | ------------------ | ---------- | -------------------- | | Assist | Assistant | `⌘ + Enter` | | Cycle message role | Assistant | `Control + R` | | Quote selection | Assistant | `⌘ + >` | | Split | Assistant | `Shift + Enter` |