Keyboard shortcuts¶
Bindings inside the debugger window. Neovim's own mappings are in Neovim commands — they are a separate system.
The window is the authority
F1 or ? inside the window shows the bindings actually in effect, after all configuration layers. When a key does something other than what this page says, someone has rebound it.
Execution¶
Work everywhere in the window, including inside the Evaluate and Watches input fields.
| Chord | Action name | Effect |
|---|---|---|
| F9 | continue |
run until the next breakpoint |
| F8 | step_over |
run this line, stop on the next |
| F7 | step_into |
enter the call on this line |
| Shift+F8 | step_out |
run until the current function returns |
| Cmd+F2 / Ctrl+F2 | terminate |
terminate the session |
| — | pause |
interrupt a running program |
| — | restart |
restart the session |
pause and restart have no default binding; assign one in [ui.keymaps].
Panels¶
| Chord | Action name | Panel |
|---|---|---|
| Tab | next_panel |
next panel, cyclically |
| Shift+Tab | previous_panel |
previous panel |
| Ctrl+Tab | next_panel |
the same |
| Ctrl+Shift+Tab | previous_panel |
the same |
| Ctrl+T | focus_threads |
Threads |
| Ctrl+C | focus_call_stack |
Call Stack |
| Ctrl+V | focus_variables |
Variables |
| Ctrl+W | focus_watches |
Watches |
| Ctrl+E | focus_evaluate |
Evaluate |
| Ctrl+L | focus_logs |
Logs |
| Ctrl+I | focus_inspector |
Inspector |
| Ctrl+B | focus_breakpoints |
Breakpoints |
The letter belongs to the panel, not to its position in the layout. The letter of a panel the layout does not show does nothing. Focus starts on Variables.
Navigation within a panel¶
| Chord | Action name | Effect |
|---|---|---|
| J, Down | next_row |
next row |
| K, Up | previous_row |
previous row |
| G, Home | top |
first row |
| Shift+G, End | bottom |
last row |
| L, Right | expand |
expand a tree node |
| H, Left | collapse |
collapse a tree node |
| Enter, Space | activate |
activate |
| D, Del | delete_row |
delete the row (Watches) |
| Esc | cancel |
leave an input field |
| F1, ? | help |
show the effective bindings |
What "activate" means per panel¶
| Panel | J / K | Enter |
|---|---|---|
| Threads | move the cursor | select the thread |
| Call Stack | selects the frame immediately | — |
| Variables | move the selection | collapse / expand |
| Watches | move between expressions | enter the input field |
| Evaluate | — | enter the input field |
| Logs | scroll one line | — |
| Breakpoints | move the selection | open the location in the editor |
Shift+G in Logs re-enables following the tail; G turns it off.
Searching Variables¶
Only in the Variables panel. See Variables for what the search covers.
| Chord | Action name | Effect |
|---|---|---|
| / | search |
open the search line |
| N | search_next |
next match |
| Shift+N | search_previous |
previous match |
| Ctrl+/ | search_continue |
keep crawling after partial |
| Esc | cancel |
drop the search |
Matches are found from the first letter typed. Enter ends the input and hands the keyboard back to the panel, after which N and Shift+N walk the matches. Until then they are ordinary letters going into the field.
Text fields¶
While the cursor is in a text field, letters stay letters — navigation is not triggered. Chords with a modifier, function keys, Esc and Tab still work from there.
Rebinding¶
Four layers, bottom to top:
- the defaults on this page;
<root>/.bugsaur-keys.json— chord → action,nullunbinds;gui_keymapsin the Neovim plugin'ssetup();[ui.keymaps]in.bugsaur/config.toml— action → chord,""unbinds.
Layers 3 and 4 merge per action, so a project overriding one action does not wipe out your personal bindings for the rest.
A chord is the modifiers Cmd, Ctrl, Alt, Shift joined by +, plus a key
name (F1…F20, a letter, Enter, Space, ArrowDown, …). Modifier order is
irrelevant. An unknown action, key or modifier stops the launch — a mistyped
hotkey would otherwise simply never fire.