In the SQL editor
Copy, cut, paste, select all, undo, find (Cmd/Ctrl+F, F3) and completion (Ctrl+Space) belong to the editor. Plain keys and AltGr characters are always text.
SHOW keys
Every function of the app is an action. An action has a name, a place in the menu, an entry in the command palette (Cmd/Ctrl+Shift+P) and a shortcut you can change.
DEFAULT shortcuts per system
Two strokes in a row are a chord: ⌘K ⌘X means press one, then the other. Change any of them in the shortcut editor, Cmd/Ctrl+K Cmd/Ctrl+S. The keys of the editor itself (copy, paste, undo, find) stay with the editor.
| Action | macOS | Windows · Linux |
|---|---|---|
| Query | ||
| Run the selection or the statement under the cursor | ⌘↵ | Ctrl+Enter |
| Show the plan of the statement | ⌘K ⌘X | Ctrl+K Ctrl+X |
| Run the whole script | ⇧⌘↵ | Ctrl+Shift+Enter |
| Run again with the same parameter values | ⌥⌘↵ | Ctrl+Alt+Enter |
| Expand * to the list of columns | ⌘K ⌘8 | Ctrl+K Ctrl+8 |
| Format the selection or the statement under the cursor | ⇧⌘F | Ctrl+Shift+F |
| Format the whole script | ⌘K ⌘F | Ctrl+K Ctrl+F |
| Toggle line comment | ⌘/ | Ctrl+/ |
| Result: pin (keep over the next run) | ⌘K ⌘I | Ctrl+K Ctrl+I |
| Compare two results … | ⌘K ⌘B | Ctrl+K Ctrl+B |
| Run again and compare with the previous result | ⌘K ⌘Y | Ctrl+K Ctrl+Y |
| Table: filter by the value of the cell | ⌘K ⌘E | Ctrl+K Ctrl+E |
| Result: reset filter and order | ⌘K ⌘R | Ctrl+K Ctrl+R |
| Result: search … | ⌘F | Ctrl+F |
| Result: next hit | F3 | F3 |
| Result: previous hit | ⇧F3 | Shift+F3 |
| Edit: edit the cell | F2 | F2 |
| Edit: new row | ⇧⌘I | Ctrl+Shift+I |
| Edit: duplicate the rows | ⇧⌘D | Ctrl+Shift+D |
| Edit: delete the rows (or keep them) | ⌘⌫ | Ctrl+Backspace |
| Edit: fill down | ⌘D | Ctrl+D |
| Edit: undo the change | ⌘Z | Ctrl+Z |
| Edit: redo the change | ⇧⌘Z | Ctrl+Shift+Z |
| Edit: preview the changes … | ⌘K ⌘P | Ctrl+K Ctrl+P |
| Result: summarize the column | ⌘K ⌘A | Ctrl+K Ctrl+A |
| Commit transaction | ⌥⌘C | Ctrl+Alt+C |
| Roll back transaction | ⌥⌘R | Ctrl+Alt+R |
| Open history | ⇧⌘H | Ctrl+Shift+H |
| Previous statement from the history | ⌥⌘↑ | Ctrl+Alt+↑ |
| Next statement from the history | ⌥⌘↓ | Ctrl+Alt+↓ |
| Result: copy as … | ⇧⌘C | Ctrl+Shift+C |
| Cancel the running statement | ⌘. | Ctrl+. |
| View | ||
| Result: show as a chart | ⌘K ⌘T | Ctrl+K Ctrl+T |
| Result: show the filter row | ⌥⌘F | Ctrl+Alt+F |
| Result: show the row as a form | ⌘K ⌘L | Ctrl+K Ctrl+L |
| Result: show the value panel | ⌘K ⌘V | Ctrl+K Ctrl+V |
| Result: columns … | ⌘K ⌘C | Ctrl+K Ctrl+C |
| Result: move the column left | ⌥⇧← | Alt+Shift+← |
| Result: move the column right | ⌥⇧→ | Alt+Shift+→ |
| Show or hide the sidebar | ⌘B | Ctrl+B |
| Split view: side by side | ⌘K ⌘→ | Ctrl+K Ctrl+→ |
| Split view: one above the other | ⌘K ⌘↓ | Ctrl+K Ctrl+↓ |
| Move tab to the other group | ⌘K ⌘M | Ctrl+K Ctrl+M |
| Switch to the other group | ⌘K ⌘O | Ctrl+K Ctrl+O |
| Join the groups | ⌘K ⌘U | Ctrl+K Ctrl+U |
| Show or hide the result area | ⌘J | Ctrl+J |
| Result area at the bottom / on the right | ⌘K ⌘J | Ctrl+K Ctrl+J |
| Maximize or restore the result area | ⇧⌘M | Ctrl+Shift+M |
| Sidebar: connections and schema | ⌘K ⌘D | Ctrl+K Ctrl+D |
| Sidebar: history | ⌘K ⌘H | Ctrl+K Ctrl+H |
| Sidebar: saved queries | ⌘K ⌘Q | Ctrl+K Ctrl+Q |
| Zen mode (only the queries) | ⌘K ⌘N | Ctrl+K Ctrl+N |
| Choose colour scheme … | ⌥⌘T | Ctrl+Alt+T |
| Settings … | ⌘, | Ctrl+, |
| Navigation | ||
| Result: next result tab | ⌥⌘→ | Ctrl+Alt+→ |
| Result: previous result tab | ⌥⌘← | Ctrl+Alt+← |
| Result: go to row … | ⌘G | Ctrl+G |
| Result: next other value in the column | ⌥↓ | Alt+↓ |
| Result: next NULL in the column | ⌥⇧↓ | Alt+Shift+↓ |
| Relations: go to the referenced row | F4 | F4 |
| Relations: look at the referenced row | ⇧F4 | Shift+F4 |
| Relations: referenced by … | ⌥F7 | Alt+F7 |
| Relations: back | ⌥← | Alt+← |
| Relations: forward | ⌥→ | Alt+→ |
| Go to saved query … | ⌥⌘O | Ctrl+Alt+O |
| Command palette | ⇧⌘P or F1 | Ctrl+Shift+P or F1 |
| Go to the editor | ⌘1 | Ctrl+1 |
| Go to the result | ⌘2 | Ctrl+2 |
| Go to the sidebar | ⌘0 | Ctrl+0 |
| Next area | F6 | F6 |
| Previous area | ⇧F6 | Shift+F6 |
| Go to table, view, tab … | ⌘P | Ctrl+P |
| File | ||
| Export result … | ⇧⌘E | Ctrl+Shift+E |
| Open SQL file … | ⌘O | Ctrl+O |
| Save tab as file | ⌘S | Ctrl+S |
| Save tab as … | ⇧⌘S | Ctrl+Shift+S |
| Save as query … | ⌥⌘S | Ctrl+Alt+S |
| Connection | ||
| New connection … | ⇧⌘N | Ctrl+Shift+N |
| Schema | ||
| Refresh schema | F5 | F5 |
| Filter the schema | ⇧⌘O | Ctrl+Shift+O |
| Search on the server … | ⌘K ⌘G | Ctrl+K Ctrl+G |
| Object details and DDL … | ⌘I | Ctrl+I |
| Tabs | ||
| New tab | ⌘T | Ctrl+T |
| Close tab | ⌘W | Ctrl+W |
| Reopen closed tab | ⇧⌘T | Ctrl+Shift+T |
| Next tab | ⌃Tab | Ctrl+Tab |
| Previous tab | ⌃⇧Tab | Ctrl+Shift+Tab |
| Help | ||
| Edit keyboard shortcuts … | ⌘K ⌘S | Ctrl+K Ctrl+S |
| Show keyboard shortcuts | ? | ? |
No shortcut matches. The action may exist without a default key: look in the command palette.
Actions without a default shortcut are not listed. They are all in the command palette and in the menu.
WITH focus
A shortcut never surprises you in the wrong place: plain keys do not reach an action while you type, and the grid has keys of its own.
Copy, cut, paste, select all, undo, find (Cmd/Ctrl+F, F3) and completion (Ctrl+Space) belong to the editor. Plain keys and AltGr characters are always text.
Arrows, Shift + arrows for a range, Cmd/Ctrl+F searches the result (not the editor), F2 edits a cell, F4 follows a foreign key.
Trees, menus, list boxes and splitters follow the ARIA authoring practices: arrows, Home, End, type to find, Esc closes.
EXPLAIN questions
In the keychain of your system (Keychain on macOS, Credential Manager on Windows, the Secret Service on Linux), or nowhere: a connection can ask each time. The file with the connection profiles never holds a secret, and neither does an export of them.
No. There is no account, no telemetry and no update check. The app talks to the databases you connect it to, and to an SSH server if you set up a tunnel. The AI control is off until you switch it on, and then it listens on this computer only.
Every tab is backed up a moment after you type. After a restart or a crash the tabs are there again, with their text, their connection and the caret. That is why nothing asks “save?”. A tab that is a .sql file is saved to it with Cmd/Ctrl+S and keeps its encoding.
Less easily. Give the connection a protection level: “ask” puts a question before everything that is not reading, “read only” runs nothing else. The statement is classified in the backend, not by the window. Editing data, importing, copying tables and changing structure all go through the same check.
Results are kept by the backend, first in memory and above a limit in a file, with limits you can set. The grid asks for the rows on screen. Sorting, filtering, searching and the figures of a selection work on the stored result without running the statement again.
The packages are not signed yet, so the system does not know the publisher. On macOS, open the app once with a right click and “Open”. On Windows, choose “More info” and “Run anyway”. The source of every release is the tag on GitHub; the packages are built there by a public workflow.
Tauri 2 with a Rust backend and an Angular window. The SQL editor is editlicious, the grids are the GuiExpert Table. Every package carries the licences of what is inside; Help → About shows them.
SELECT * FROM your_database;
Free and open source under the MIT license. The packages are not signed yet.