1# Key bindings
2
3Zed can be configured via a simple JSON file located at `~/.config/zed/keymap.json`.
4
5## Predefined keymaps
6
7We 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:
8
9- Atom
10- JetBrains
11- SublimeText
12- TextMate
13- VSCode (default)
14
15These 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.
16
17## Custom key bindings
18
19### Accessing custom key bindings
20
21You can open `keymap.json` via `โ` + `K`, `โ` + `S`, the command palette, or the `Zed > Settings > Open Key Bindings` application menu item.
22
23### Adding a custom key binding
24
25To 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.
26
27An example of adding a set of custom key bindings:
28
29```json
30[
31 {
32 "context": "Editor",
33 "bindings": {
34 "ctrl-w": "editor::SelectLargerSyntaxNode",
35 "ctrl-shift-W": "editor::SelectSmallerSyntaxNode",
36 "ctrl-c": "editor::Cancel"
37 }
38 }
39]
40```
41
42You can see more examples in Zed's [`default.json`](https://github.com/zed-industries/zed/blob/main/assets/keymaps/default-macos.json)
43
44_There are some key bindings that can't be overridden; we are working on an issue surrounding this._
45
46### Keybinding syntax
47
48Zed 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.
49
50Each key press is a sequence of modifiers followed by a key. The modifiers are:
51
52- `ctrl-` The control key
53- `cmd-` On macOS, this is the command key
54- `alt-` On macOS, this is the option key
55- `shift-` The shift key
56- `fn-` The function key
57
58The keys can be any single unicode codepoint that your keyboard generates (for example `a`, `0`, `ยฃ` or `รง`).
59
60A few examples:
61
62```
63 "bindings": {
64 "cmd-k cmd-s": "zed::OpenKeymap", // matches โ-k then โ-s
65 "space e": "editor::Complete", // type space then e
66 "รง": "editor::Complete", // matches โฅ-c
67 }
68```
69
70NOTE: 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.
71
72### Remapping keys
73
74A 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.
75
76```json
77[
78 {
79 "bindings": {
80 "alt-down": ["workspace::SendKeystrokes", "down down down down"],
81 "cmd-alt-c": [
82 "workspace::SendKeystrokes",
83 "cmd-shift-p copy relative path enter"
84 ],
85 "cmd-alt-r": ["workspace::SendKeystrokes", "cmd-p README enter"]
86 }
87 },
88 {
89 "context": "Editor && vim_mode == insert",
90 "bindings": {
91 "j k": ["workspace::SendKeystrokes", "escape"],
92 }
93 }
94]
95```
96
97There are some limitations to this, notably:
98
99- 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.
100- - Other examples of asynchronous things are: communicating with a language server, changing the language of a buffer, anything that hits the network.
101- 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.
102
103The 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.
104
105### Forward keys to terminal
106
107If you're on Linux or Windows, you might find yourself wanting to forward key combinations to the built-in terminal instead of them being handled by Zed.
108
109For example, `ctrl-n` creates a new tab in Zed on Linux. If you want to send `ctrl-n` to the built-in terminal when it's focused, add the following to your keymap:
110
111```json
112{
113 "context": "Terminal",
114 "bindings": {
115 "ctrl-n": ["terminal::SendKeystroke", "ctrl-n"]
116 }
117}
118```
119
120### All key bindings
121
122#### Global
123
124| **Command** | **Target** | **Default Shortcut** |
125| ------------------------- | ------------ | ----------------------- |
126| Toggle focus | Collab Panel | `โ + Shift + C` |
127| Toggle inlay hints | Editor | `Control + :` |
128| Cancel | Menu | `Control + C` |
129| Cancel | Menu | `Control + Escape` |
130| Cancel | Menu | `Escape` |
131| Cancel | Menu | `โ + Escape` |
132| Confirm | Menu | `Enter` |
133| Secondary confirm | Menu | `Control + Enter` |
134| Secondary confirm | Menu | `โ + Enter` |
135| Select first | Menu | `Page Up` |
136| Select first | Menu | `Shift + Page Down` |
137| Select first | Menu | `Shift + Page Up` |
138| Select first | Menu | `โ + Up` |
139| Select last | Menu | `Page Down` |
140| Select last | Menu | `โ + Down` |
141| Select next | Menu | `Control + N` |
142| Select next | Menu | `Down` |
143| Select prev | Menu | `Control + P` |
144| Select prev | Menu | `Up` |
145| Confirm input | Picker | `Alt + Enter` |
146| Confirm input | Picker | `โ + Alt + Enter` |
147| Use selected query | Picker | `Shift + Enter` |
148| Close window | Workspace | `โ + Shift + W` |
149| Follow next collaborator | Workspace | `Control + Alt + โ + F` |
150| Open | Workspace | `โ + O` |
151| Toggle zoom | Workspace | `Shift + Escape` |
152| Debug elements | Zed | `โ + Alt + I` |
153| Decrease buffer font size | Zed | `โ + ` |
154| Hide | Zed | `โ + H` |
155| Hide others | Zed | `Alt + โ + H` |
156| Increase buffer font size | Zed | `โ + +` |
157| Increase buffer font size | Zed | `โ + =` |
158| Minimize | Zed | `โ + M` |
159| Open settings | Zed | `โ + ,` |
160| Quit | Zed | `โ + Q` |
161| Reset buffer font size | Zed | `โ + 0` |
162| Toggle full screen | Zed | `Control + โ + F` |
163
164#### Editor
165
166| **Command** | **Target** | **Default Shortcut** |
167| -------------------------------- | ---------- | ------------------------------- |
168| Add selection above | Editor | `โ + Alt + Up` |
169| Add selection above | Editor | `โ + Control + P` |
170| Add selection below | Editor | `โ + Alt + Down` |
171| Add selection below | Editor | `โ + Control + N` |
172| Backspace | Editor | `Backspace` |
173| Backspace | Editor | `Control + H` |
174| Backspace | Editor | `Shift + Backspace` |
175| Cancel | Editor | `Escape` |
176| Confirm code action | Editor | `Enter` |
177| Confirm completion | Editor | `Enter` |
178| Confirm completion | Editor | `Tab` |
179| Confirm rename | Editor | `Enter` |
180| Context menu first | Editor | `Page Up` |
181| Context menu last | Editor | `Page Down` |
182| Context menu next | Editor | `Control + N` |
183| Context menu next | Editor | `Down` |
184| Context menu prev | Editor | `Control + P` |
185| Context menu prev | Editor | `Up` |
186| Copy | Editor | `โ + C` |
187| Cut | Editor | `โ + X` |
188| Cut to end of line | Editor | `Control + K` |
189| Delete | Editor | `Control + D` |
190| Delete | Editor | `Delete` |
191| Delete line | Editor | `โ + Shift + K` |
192| Delete to beginning of line | Editor | `โ + Backspace` |
193| Delete to end of line | Editor | `โ + Delete` |
194| Delete to next subword end | Editor | `Control + Alt + D` |
195| Delete to next subword end | Editor | `Control + Alt + Delete` |
196| Delete to next word end | Editor | `Alt + D` |
197| Delete to next word end | Editor | `Alt + Delete` |
198| Delete to previous subword start | Editor | `Control + Alt + Backspace` |
199| Delete to previous subword start | Editor | `Control + Alt + H` |
200| Delete to previous word start | Editor | `Alt + Backspace` |
201| Delete to previous word start | Editor | `Alt + H` |
202| Delete to previous word start | Editor | `Control + W` |
203| Display cursor names | Editor | `Control + โ + C` |
204| Duplicate line down | Editor | `Alt + Shift + Down` |
205| Duplicate line up | Editor | `Alt + Shift + Up` |
206| Find all references | Editor | `Alt + Shift + F12` |
207| Fold | Editor | `Alt + โ + [` |
208| Format | Editor | `โ + Shift + I` |
209| Go to definition | Editor | `F12` |
210| Go to definition split | Editor | `Alt + F12` |
211| Go to diagnostic | Editor | `F8` |
212| Go to implementation | Editor | `Shift + F12` |
213| Go to prev diagnostic | Editor | `Shift + F8` |
214| Go to type definition | Editor | `โ + F12` |
215| Go to type definition split | Editor | `Alt + โ + F12` |
216| Hover | Editor | `โ + K, โ + I` |
217| Indent | Editor | `โ + ]` |
218| Join lines | Editor | `Control + J` |
219| Move down | Editor | `Control + N` |
220| Move down | Editor | `Down` |
221| Move left | Editor | `Control + B` |
222| Move left | Editor | `Left` |
223| Move line down | Editor | `Alt + Down` |
224| Move line up | Editor | `Alt + Up` |
225| Move page down | Editor | `Control + V` |
226| Move page down | Editor | `Shift + Page Down` |
227| Move page up | Editor | `Alt + V` |
228| Move page up | Editor | `Shift + Page Up` |
229| Move right | Editor | `Control + F` |
230| Move right | Editor | `Right` |
231| Move to beginning | Editor | `โ + Up` |
232| Move to beginning of line | Editor | `Control + A` |
233| Move to beginning of line | Editor | `Home` |
234| Move to beginning of line | Editor | `โ + Left` |
235| Move to enclosing bracket | Editor | `Control + M` |
236| Move to end | Editor | `โ + Down` |
237| Move to end of line | Editor | `Control + E` |
238| Move to end of line | Editor | `End` |
239| Move to end of line | Editor | `โ + Right` |
240| Move to end of paragraph | Editor | `Control + Down` |
241| Move to next subword end | Editor | `Control + Alt + F` |
242| Move to next subword end | Editor | `Control + Alt + Right` |
243| Move to next word end | Editor | `Alt + F` |
244| Move to next word end | Editor | `Alt + Right` |
245| Move to previous subword start | Editor | `Control + Alt + B` |
246| Move to previous subword start | Editor | `Control + Alt + Left` |
247| Move to previous word start | Editor | `Alt + B` |
248| Move to previous word start | Editor | `Alt + Left` |
249| Move to start of paragraph | Editor | `Control + Up` |
250| Move up | Editor | `Control + P` |
251| Move up | Editor | `Up` |
252| Next screen | Editor | `Control + L` |
253| Outdent | Editor | `โ + [` |
254| Page down | Editor | `Page Down` |
255| Page up | Editor | `Page Up` |
256| Paste | Editor | `โ + V` |
257| Redo | Editor | `โ + Shift + Z` |
258| Redo selection | Editor | `โ + Shift + U` |
259| Rename | Editor | `F2` |
260| Reveal in finder | Editor | `Alt + โ + R` |
261| Revert selected hunks | Editor | `โ + Alt + Z` |
262| Select all | Editor | `โ + A` |
263| Select all matches | Editor | `โ + Shift + L` |
264| Select down | Editor | `Control + Shift + N` |
265| Select down | Editor | `Shift + Down` |
266| Select larger syntax node | Editor | `Control + Shift + Right` |
267| Select left | Editor | `Control + Shift + B` |
268| Select left | Editor | `Shift + Left` |
269| Select line | Editor | `โ + L` |
270| Select next | Editor | `โ + D` |
271| Select next | Editor | `โ + K, โ + D` |
272| Select previous | Editor | `Control + โ + D` |
273| Select previous | Editor | `โ + K, Control + โ + D` |
274| Select right | Editor | `Control + Shift + F` |
275| Select right | Editor | `Shift + Right` |
276| Select smaller syntax node | Editor | `Control + Shift + Left` |
277| Select to beginning | Editor | `โ + Shift + Up` |
278| Select to beginning of line | Editor | `Control + Shift + A` |
279| Select to beginning of line | Editor | `Shift + Home` |
280| Select to beginning of line | Editor | `โ + Shift + Left` |
281| Select to end | Editor | `โ + Shift + Down` |
282| Select to end of line | Editor | `Control + Shift + E` |
283| Select to end of line | Editor | `Shift + End` |
284| Select to end of line | Editor | `โ + Shift + Right` |
285| Select to end of paragraph | Editor | `Control + Shift + Down` |
286| Select to next subword end | Editor | `Control + Alt + Shift + F` |
287| Select to next subword end | Editor | `Control + Alt + Shift + Right` |
288| Select to next word end | Editor | `Alt + Shift + F` |
289| Select to next word end | Editor | `Alt + Shift + Right` |
290| Select to previous subword start | Editor | `Control + Alt + Shift + B` |
291| Select to previous subword start | Editor | `Control + Alt + Shift + Left` |
292| Select to previous word start | Editor | `Alt + Shift + B` |
293| Select to previous word start | Editor | `Alt + Shift + Left` |
294| Select to start of paragraph | Editor | `Control + Shift + Up` |
295| Select up | Editor | `Control + Shift + P` |
296| Select up | Editor | `Shift + Up` |
297| Show character palette | Editor | `Control + โ + Space` |
298| Show completions | Editor | `Control + Space` |
299| Show inline completion | Editor | `Alt + \` |
300| Tab | Editor | `Tab` |
301| Tab prev | Editor | `Shift + Tab` |
302| Toggle code actions | Editor | `โ + .` |
303| Toggle comments | Editor | `โ + /` |
304| Toggle git blame | Editor | `โ + Alt + G, B` |
305| Toggle line numbers | Editor | `โ + ;` |
306| Transpose | Editor | `Control + T` |
307| Undo | Editor | `โ + Z` |
308| Undo selection | Editor | `โ + U` |
309| Unfold lines | Editor | `Alt + โ + ]` |
310
311#### Editor (Full Only)
312
313| **Command** | **Target** | **Default Shortcut** |
314| -------------------------------- | ------------- | -------------------- |
315| Inline assist | Assistant | `Control + Enter` |
316| Quote selection | Assistant | `โ + >` |
317| Deploy | Buffer Search | `โ + Alt + F` |
318| Deploy | Buffer Search | `โ + E` |
319| Deploy | Buffer Search | `โ + F` |
320| Accept partial inline completion | Editor | `Alt + Right` |
321| Go to hunk | Editor | `โ + F8` |
322| Go to prev hunk | Editor | `โ + Shift + F8` |
323| Newline | Editor | `Enter` |
324| Newline | Editor | `Shift + Enter` |
325| Newline above | Editor | `โ + Shift + Enter` |
326| Newline below | Editor | `โ + Enter` |
327| Next inline completion | Editor | `Alt + ]` |
328| Open excerpts | Editor | `Alt + Enter` |
329| Open excerpts split | Editor | `โ + K, Enter` |
330| Previous inline completion | Editor | `Alt + [` |
331| Toggle soft wrap | Editor | `Alt + Z` |
332| Toggle | Go To Line | `Control + G` |
333| Toggle | Outline | `โ + Shift + O` |
334
335#### Editor (Auto Height Only)
336
337| **Command** | **Target** | **Default Shortcut** |
338| ------------- | ---------- | ------------------------- |
339| Newline | Editor | `Control + Enter` |
340| Newline | Editor | `Shift + Enter` |
341| Newline below | Editor | `Control + Shift + Enter` |
342
343#### Pane
344
345| **Command** | **Target** | **Default Shortcut** |
346| ----------------------------- | -------------- | ----------------------- |
347| Activate item 1 | Pane | `Control + 1` |
348| Activate item 2 | Pane | `Control + 2` |
349| Activate item 3 | Pane | `Control + 3` |
350| Activate item 4 | Pane | `Control + 4` |
351| Activate item 5 | Pane | `Control + 5` |
352| Activate item 6 | Pane | `Control + 6` |
353| Activate item 7 | Pane | `Control + 7` |
354| Activate item 8 | Pane | `Control + 8` |
355| Activate item 9 | Pane | `Control + 9` |
356| Activate last item | Pane | `Control + 0` |
357| Activate next item | Pane | `Alt + โ + Right` |
358| Activate next item | Pane | `โ + }` |
359| Activate prev item | Pane | `Alt + โ + Left` |
360| Activate prev item | Pane | `โ + {` |
361| Close active item | Pane | `โ + W` |
362| Close all items | Pane | `โ + K, โ + W` |
363| Close clean items | Pane | `โ + K, U` |
364| Close inactive items | Pane | `Alt + โ + T` |
365| Go back | Pane | `Control + -` |
366| Go forward | Pane | `Control + _` |
367| Reopen closed item | Pane | `โ + Shift + T` |
368| Split down | Pane | `โ + K, Down` |
369| Split left | Pane | `โ + K, Left` |
370| Split right | Pane | `โ + K, Right` |
371| Split up | Pane | `โ + K, Up` |
372| Toggle filters | Project Search | `Alt + โ + F` |
373| Toggle focus | Project Search | `โ + F` |
374| Toggle focus | Project Search | `โ + Shift + F` |
375| Activate regex mode | Search | `Alt + โ + G` |
376| Activate text mode | Search | `Alt + โ + X` |
377| Cycle mode | Search | `Alt + Tab` |
378| Select all matches | Search | `Alt + Enter` |
379| Select next match | Search | `โ + G` |
380| Select prev match | Search | `โ + Shift + G` |
381| Toggle case sensitive | Search | `Alt + โ + C` |
382| Toggle replace | Search | `โ + Shift + H` |
383| Toggle whole word | Search | `Alt + โ + W` |
384| Close inactive tabs and panes | Workspace | `Control + Alt + โ + W` |
385
386#### Buffer Search Bar
387
388| **Command** | **Target** | **Default Shortcut** |
389| ---------------------- | ------------- | -------------------- |
390| Dismiss | Buffer Search | `Escape` |
391| Focus editor | Buffer Search | `Tab` |
392| Cycle mode | Search | `Alt + Tab` |
393| Focus search | Search | `โ + F` |
394| Next history query | Search | `Down` |
395| Previous history query | Search | `Up` |
396| Replace all | Search | `โ + Enter` |
397| Replace next | Search | `Enter` |
398| Select all matches | Search | `Alt + Enter` |
399| Select next match | Search | `Enter` |
400| Select prev match | Search | `Shift + Enter` |
401| Toggle replace | Search | `โ + Alt + F` |
402
403#### Workspace
404
405| **Command** | **Target** | **Default Shortcut** |
406| -------------------------------- | ----------------- | ----------------------- |
407| Toggle focus | Assistant | `โ + ?` |
408| Open recent | Branches | `Alt + โ + B` |
409| Toggle | Command Palette | `โ + Shift + P` |
410| Deploy | Diagnostics | `โ + Shift + M` |
411| Toggle | File Finder | `โ + P` |
412| Toggle | Language Selector | `โ + K, M` |
413| Deploy search | Pane | `โ + Shift + F` |
414| Deploy search | Pane | `โ + Shift + H` |
415| Toggle focus | Project Panel | `โ + Shift + E` |
416| Toggle | Project Symbols | `โ + T` |
417| Open recent | Projects | `Alt + โ + O` |
418| Toggle | Tab Switcher | `Control + Shift + Tab` |
419| Toggle | Tab Switcher | `Control + Tab` |
420| Rerun | Task | `Alt + T` |
421| Spawn | Task | `Alt + Shift + T` |
422| Toggle focus | Terminal Panel | ``Control + ` `` |
423| Toggle | Theme Selector | `โ + K, โ + T` |
424| Activate pane 1 | Workspace | `โ + 1` |
425| Activate pane 2 | Workspace | `โ + 2` |
426| Activate pane 3 | Workspace | `โ + 3` |
427| Activate pane 4 | Workspace | `โ + 4` |
428| Activate pane 5 | Workspace | `โ + 5` |
429| Activate pane 6 | Workspace | `โ + 6` |
430| Activate pane 7 | Workspace | `โ + 7` |
431| Activate pane 8 | Workspace | `โ + 8` |
432| Activate pane 9 | Workspace | `โ + 9` |
433| Activate pane in direction down | Workspace | `โ + K, โ + Down` |
434| Activate pane in direction left | Workspace | `โ + K, โ + Left` |
435| Activate pane in direction right | Workspace | `โ + K, โ + Right` |
436| Activate pane in direction up | Workspace | `โ + K, โ + Up` |
437| Close all docks | Workspace | `Alt + โ + Y` |
438| New file | Workspace | `โ + N` |
439| New terminal | Workspace | `Control + ~` |
440| New window | Workspace | `โ + Shift + N` |
441| Save | Workspace | `โ + S` |
442| Save all | Workspace | `โ + Alt + S` |
443| Save as | Workspace | `โ + Shift + S` |
444| Save without format | Workspace | `โ + K, S` |
445| Swap pane in direction | Workspace | `โ + K, Shift + Down` |
446| Swap pane in direction | Workspace | `โ + K, Shift + Left` |
447| Swap pane in direction | Workspace | `โ + K, Shift + Right` |
448| Swap pane in direction | Workspace | `โ + K, Shift + Up` |
449| Toggle bottom dock | Workspace | `โ + J` |
450| Toggle left dock | Workspace | `โ + B` |
451| Toggle right dock | Workspace | `โ + R` |
452| Unfollow | Workspace | `Escape` |
453| Open keymap | Zed | `โ + K, โ + S` |
454
455#### Project Panel
456
457| **Command** | **Target** | **Default Shortcut** |
458| ----------------------- | ------------- | --------------------- |
459| Collapse selected entry | Project Panel | `Left` |
460| Copy | Project Panel | `โ + C` |
461| Copy path | Project Panel | `โ + Alt + C` |
462| Copy relative path | Project Panel | `Alt + โ + Shift + C` |
463| Cut | Project Panel | `โ + X` |
464| Delete | Project Panel | `Backspace` |
465| Delete | Project Panel | `Delete` |
466| Delete | Project Panel | `โ + Backspace` |
467| Delete | Project Panel | `โ + Delete` |
468| Expand selected entry | Project Panel | `Right` |
469| New directory | Project Panel | `Alt + โ + N` |
470| New file | Project Panel | `โ + N` |
471| New search in directory | Project Panel | `Alt + Shift + F` |
472| Open | Project Panel | `Space` |
473| Paste | Project Panel | `โ + V` |
474| Rename | Project Panel | `Enter` |
475| Rename | Project Panel | `F2` |
476| Reveal in finder | Project Panel | `Alt + โ + R` |
477
478#### Project Search Bar
479
480| **Command** | **Target** | **Default Shortcut** |
481| ---------------------- | -------------- | -------------------- |
482| Search in new | Project Search | `โ + Enter` |
483| Toggle focus | Project Search | `Escape` |
484| Activate regex mode | Search | `Alt + โ + G` |
485| Activate text mode | Search | `Alt + โ + X` |
486| Cycle mode | Search | `Alt + Tab` |
487| Focus search | Search | `โ + Shift + F` |
488| Next history query | Search | `Down` |
489| Previous history query | Search | `Up` |
490| Replace all | Search | `โ + Enter` |
491| Replace next | Search | `Enter` |
492| Toggle replace | Search | `โ + Shift + H` |
493
494#### Terminal
495
496| **Command** | **Target** | **Default Shortcut** |
497| --------------------------- | ---------- | --------------------- |
498| Clear | Terminal | `โ + K` |
499| Copy | Terminal | `โ + C` |
500| Delete line | Terminal | `โ + Backspace` |
501| Move to beginning of line | Terminal | `โ + Left` |
502| Move to end of line | Terminal | `โ + Right` |
503| Move to next word end | Terminal | `Alt + Right` |
504| Move to previous word start | Terminal | `Alt + Left` |
505| Paste | Terminal | `โ + V` |
506| Show character palette | Terminal | `Control + โ + Space` |
507
508#### Assistant Editor
509
510| **Command** | **Target** | **Default Shortcut** |
511| ------------------ | ---------- | -------------------- |
512| Assist | Assistant | `โ + Enter` |
513| Cycle message role | Assistant | `Control + R` |
514| Quote selection | Assistant | `โ + >` |
515| Split | Assistant | `Shift + Enter` |
516| Save | Workspace | `โ + S` |