Keyboard shortcuts
Every binding in sweetdocs, what scope it applies to, and the conflicts you should know about. Verified against the actual handlers.
Mac shortcuts use ⌘ (Command); Windows / Linux substitute Ctrl. ⇧ = Shift. Bindings are grouped by scope — where the key listener lives — because the same key can mean different things at different levels.
Global
These work from any screen in the app, signed in.
| Keys | Action |
|---|---|
| ⌘K / Ctrl+K | Open the command palette (toggle) |
| ⌘⇧A / Ctrl+Shift+A | Toggle the AI Author panel |
| Esc | Close the topmost open panel, modal, dropdown, or menu |
Document scope (when an editor is open)
| Keys | Action |
|---|---|
| ⌘E / Ctrl+E | Toggle Edit ↔ Preview mode (markdown docs only) |
Editor content (text formatting)
These fire when you’re typing in the editor body in Edit mode. They come from Tiptap’s StarterKit plus our custom toolbar wiring.
| Keys | Action |
|---|---|
| ⌘B / Ctrl+B | Bold |
| ⌘I / Ctrl+I | Italic |
| ⌘⇧X / Ctrl+Shift+X | Strikethrough |
| ⌘Z / Ctrl+Z | Undo |
| ⌘⇧Z / Ctrl+Shift+Z | Redo |
| Enter | New paragraph (or new list item, inside a list) |
| ⇧Enter | Soft line break within the current block |
| Tab | Indent a list item one level (when inside a list) |
| ⇧Tab | Outdent a list item one level |
Block insertion — slash menu, not shortcuts
Headings, lists, tables, code blocks, images, quotes, and dividers don’t have direct keyboard shortcuts. Use the slash menu instead: press / at the start of an empty line, type a few letters to filter, Enter to insert.
This is intentional — direct shortcuts for headings (e.g., ⌘⌥1) would clash with macOS Mission Control and browser tab-switching. The slash menu keeps your fingers on the keyboard and removes the conflict.
Slash menu navigation
When the slash menu is open (after pressing /):
| Keys | Action |
|---|---|
| ↑ / ↓ | Move selection up / down |
| Enter or Tab | Insert the selected item |
| Esc | Close the menu |
AI Author input
When the AI Author panel is open and the input is focused:
| Keys | Action |
|---|---|
| Enter | Send the message |
| ⇧Enter | Newline within the message (no send) |
Comments — @-mentions
When the mention autocomplete is showing inside a comment input:
| Keys | Action |
|---|---|
| ↑ / ↓ | Move through candidate users |
| Enter or Tab | Insert the highlighted mention |
| Esc | Close the autocomplete (keeps the comment input open) |
Sidebar — rename inline
| Interaction | Action |
|---|---|
| Double-click a doc / folder row | Enter inline rename mode |
| Enter (while renaming) | Commit the new name |
| Esc (while renaming) | Cancel — revert to the previous name |
| Right-click a row | Open the context menu (rename, move, pin, duplicate, delete, share) |
Conflicts you should know about
Two key combos have both a global and an editor-level meaning. The global handler runs first, so the global action wins.
⌘K — palette, not link-insertion
Tiptap’s default Link shortcut is ⌘K. Because the command palette listens at the document level, you can’t use ⌘K to insert a link while editing. To insert a link, select text and click Link on the bubble toolbar (or use a Markdown link directly: [text](url)).
⌘E — mode toggle, not inline code
Tiptap’s default Inline Code shortcut is ⌘E. Because the mode toggle listens at the document level, you can’t use ⌘E to toggle inline code while editing. To make inline code, select text and click Code on the bubble toolbar (or wrap in backticks: `inline code`).
What’s not bound
Just so you don’t go looking:
- No shortcut for headings (use the slash menu)
- No shortcut for bulleted / numbered / task lists (use the slash menu)
- No shortcut for blockquote, code block, divider, image, table (use the slash menu)
- No shortcut for the History or Share panels (use the toolbar buttons)
- No shortcut for jumping between docs (use the command palette — ⌘K)
- No shortcut for new document (use the command palette → New document, or the
+ Docbutton in the sidebar)