Skip to content

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.

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:

  1. the defaults on this page;
  2. <root>/.bugsaur-keys.jsonchord → action, null unbinds;
  3. gui_keymaps in the Neovim plugin's setup();
  4. [ui.keymaps] in .bugsaur/config.tomlaction → 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.

[ui.keymaps]
continue = "Alt+R"
step_over = "F2"
pause = ""        # unbind

A chord is the modifiers Cmd, Ctrl, Alt, Shift joined by +, plus a key name (F1F20, 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.