Appearance
Keyboard shortcuts
Keys show as the app draws them: P is Command+Shift+P, and KS means Command+K, then Command+S. In keymap.json the same keys are written cmd-shift-p and cmd-k cmd-s (hover a key here to see how). The same list, with what each key is bound to right now, is in Settings > Keymap.
Pomelo runs on macOS today. Windows and Linux are coming soon; their column shows the keys they will use, with ctrl in place of cmd.
Window
| Action | macOS | Windows / Linux (coming soon) |
|---|---|---|
| Command Palette | P | Ctrl+Shift+P |
| Go to File | P | Ctrl+P |
| Find in Project | F | Ctrl+Shift+F |
| Project Diagnostics | M | Ctrl+Shift+M |
| Open Settings | , | Ctrl+, |
| Open Keymap (Settings > Keymap) | KS | Ctrl+KCtrl+S |
| Open Project | O | Ctrl+O |
| New Project | N | Ctrl+Shift+N |
| New Workspace | N | Ctrl+N |
| Switch Workspace | O | Ctrl+Alt+O |
| Next Theme | KT | Ctrl+KCtrl+T |
| Toggle Left Dock | B | Ctrl+B |
| Toggle Right Dock | R | Ctrl+R |
| Toggle Bottom Dock | J | Ctrl+J |
| Files | E | Ctrl+Shift+E |
| Git | C | Ctrl+Shift+C |
| Services | S | Ctrl+Shift+S |
| Database | D | Ctrl+Shift+D |
| Pull Requests (the Git panel's pull requests) | R | Ctrl+Shift+R |
| Agent | ? | Ctrl+? |
| Agent Usage | U | Ctrl+Shift+U |
| Terminal | ` | Ctrl+` |
| New Terminal | T | Ctrl+T |
| Close Tab | W | Ctrl+W |
| Close All Tabs | W | Ctrl+Alt+W |
| Markdown Preview | V | Ctrl+Shift+V |
| Markdown Preview to the Side | KV | Ctrl+KV |
These have no default key; run them from the command palette or bind them yourself: Open in External Editor, Open Project Config, Set Up Project with AI, Add Repository, Clone Missing Repos into Main, Export Config, Import Config, Open Jira Ticket.
Tabs and splits
| Action | macOS | Windows / Linux (coming soon) |
|---|---|---|
| Split the editor to the right | \ | Ctrl+\ |
| Split the editor in that direction | K then an arrow | Ctrl+K then an arrow |
| Move focus to the pane in that direction | K then | Ctrl+K then Ctrl+Left |
| Swap with the pane in that direction | K then | Ctrl+K then Shift+Left |
| Pin or unpin the tab | K | Ctrl+KShift+Return |
| Zoom the pane | Escape | Shift+Escape |
| Previous / next tab | / | Ctrl+PageUp / Ctrl+PageDown |
| Previous / next tab | [ / ] | Ctrl+Shift+[ / Ctrl+Shift+] |
| Go to tab 1 to 9 | 1 to 9 | Ctrl+1 to Ctrl+9 |
| Go to the last tab | 0 | Ctrl+0 |
In a terminal, cmd-d or ctrl-alt-arrow splits the terminal pane.
| Action | macOS | Windows / Linux (coming soon) |
|---|---|---|
Switch to a recent tab (hold ctrl, press again to go further back) | / | Ctrl+Tab / Ctrl+Shift+Tab |
| Close the tab picked in the switcher | Ctrl+Backspace | |
| Close the other tabs | T | Ctrl+Alt+T |
| Close the tabs to the left / right | KE / KT | Ctrl+KE / Ctrl+KT |
| Close the saved tabs | KU | Ctrl+KU |
Pinned tabs stay when a set of tabs closes.
Moving around
| Action | macOS | Windows / Linux (coming soon) |
|---|---|---|
| Previous / next workspace in the sidebar | / | Ctrl+Alt+Up / Ctrl+Alt+Down |
| Next workspace waiting for you | A | Ctrl+Alt+A |
| Back to the editor (from a panel, terminal or agent) | Escape | Ctrl+Escape |
| Next / previous region (editor, panels, terminal, agent) | K / K | Ctrl+KTab / Ctrl+KShift+Tab |
A panel's own key (Files, Git, Services, Database in the Window table) moves the keyboard into its list; pressed again, or with Escape, it goes back to the editor. Clicking a list does the same. In any list or context menu, / , Home / End move, picks and Escape closes. Tooltips of buttons that have a key show it.
Panel lists
These work only while the list has the keyboard, never in a terminal or an agent, so single letters are safe there.
Files
| Keys | Action |
|---|---|
| Space | Open |
| or F2 | Rename |
| N / N | New file / folder |
| X / C / V | Cut / copy / paste |
| D | Duplicate |
| C / C | Copy path / relative path |
| or | Move to Trash |
| Delete | |
| R | Reveal in Finder |
| / | Collapse / expand |
| / | Collapse / expand all |
Git
| Keys | Action |
|---|---|
| Open the diff, commit or pull request | |
| Space | Stage or unstage |
| Y / Y | Stage / unstage the file |
| Y / Y | Stage / unstage everything |
| Discard the file's changes (asks first) | |
| C / C | Copy path / relative path |
| To the commit message and back | |
| / | Fold / unfold |
| GG | Fetch |
| G / G | Push / pull |
| 1 / 2 / 3 | Changes / Remote / History |
Services
| Keys | Action |
|---|---|
| Open the service's tab | |
| S | Start or stop (the whole repo on a repo row) |
| R | Restart |
| O | Open in the browser |
| L | Logs |
| / | Fold / unfold |
Database
| Keys | Action |
|---|---|
| Open the table, console or bucket | |
| / | Fold / unfold |
| C | Copy the connection URL |
| N | New console |
Agents and notices
| Action | macOS | Windows / Linux (coming soon) |
|---|---|---|
| Start a side agent (pick Ask, Review, Second opinion or Fix) | KA | Ctrl+KA |
| Take the agent's session over | KO | Ctrl+KO |
| Allow / deny the tool call waiting on you | KY / KN | Ctrl+KY / Ctrl+KN |
| Stop the agent | K. | Ctrl+K. |
| Run the notice's action (for example Restart to Update) | K | Ctrl+KReturn |
| Close the notice | KEscape | Ctrl+KEscape |
The agent keys act on the front tab of the focused group, then the agent dock's.
Settings window
/ open the previous / next page,Home / End the first / last. (or) steps into the page's controls, goesback, or Space presses the control, and
or Escape returns to the pages. In an opendropdown, / and pick an item.
Vim mode
Turn it on in Settings > Keymap > Vim Mode or with Toggle Vim Mode in the command palette. The editor then starts in Normal mode and the status bar shows the mode.
| Keys | Action |
|---|---|
h j k l, w b e (W B E), 0 ^ $, gg G, f t F T ; , | Motions, with counts |
i a I A o O | Insert mode; Escape back to Normal |
d c y > < + a motion, or doubled for lines | Delete, change, yank, indent, outdent |
x X s S D C Y r J | Small edits |
p P | Paste the last delete or yank |
u / R | Undo / redo |
. | Repeat the last change |
v / V | Visual mode by character / line |
/ ? n N * # | Search with the find bar |
| D / U | Scroll a page |
In the panel lists, vim mode adds j / k, gg / G and h / l (the Services list keeps l for logs); the Git list also takes x to stage or unstage, X / U for everything and i for the commit message.
Editor
| Keys | Action |
|---|---|
| S | Save |
| Z / Z | Undo / redo |
| F | Find |
| H | Find and replace |
| G / G | Next / previous match |
| E | Use the selection for find |
| C / W / X | Toggle case sensitive / whole word / regex |
| Select all matches of the search | |
| Replace all | |
| D | Add the next occurrence to the selection |
| L | Select all occurrences |
| / | Add a cursor above / below |
| / | Toggle comment |
| [ / ] | Outdent / indent |
| K | Delete the line |
| / | Move the line up / down |
| / | Duplicate the line up / down |
| / | Expand / shrink the selection by syntax node |
| M | Jump to the matching bracket |
| J | Join lines |
| G | Go to line |
| - / _ | Go back / forward |
| Space | Show completions |
| F12 | Go to definition |
| F12 / F12 / F12 | Go to type definition / implementation / declaration |
| F8 / F8 | Next / previous diagnostic |
| F8 / F8 | Next / previous changed hunk |
| O | Outline |
| KZ | Toggle soft wrap |
In a diff, cmd-y stages the hunk and moves to the next, cmd-shift-y unstages it, cmd-alt-z restores it, cmd-' toggles the selected hunks and cmd-" expands them all.
Terminal
| Keys | Action |
|---|---|
| C / V | Copy / paste |
| K | Clear (when no cmd-k chord follows) |
| A | Select all |
| F / G | Find / next match |
| / | Start / end of the line |
| Delete to the start of the line | |
| / | Scroll a page |
| Home / End | Scroll to the top / bottom |
Your own bindings
Window actions can be rebound in ~/.config/pomelo/keymap.json. **Settings
Keymap > Open keymap.json** creates the file if it is missing and opens it in the editor; saved changes apply right away. Entries are read after the defaults, so they win, and
nullunbinds a key:
json
[
{
"context": "Workspace",
"bindings": {
"cmd-shift-g": "git_panel::ToggleFocus",
"secondary-shift-t": "workspace::NewTerminal",
"cmd-alt-1": ["pane::ActivateItem", 0],
"cmd-r": null
}
}
]secondary is Command on macOS and Control on Windows and Linux, so one file works on every platform. Going to a tab takes its position from 0: ["pane::ActivateItem", 0] is the first tab.
Each action's name (such as git_panel::ToggleFocus) is listed under its label in Settings > Keymap, which also shows any mistakes found in the file, and in the key bindings reference. The contexts read are Workspace and the lists' own ProjectPanel, GitPanel, ServicesPanel, DatabasePanel and TabSwitcher, which apply only while that list has the keyboard; editor and terminal keys, and the split and pane keys in the tables above, are fixed. The menu bar shows the keys currently bound, including yours.
