Skip to content
PT

Static copy

Copied from docs/en/ui-ux/keymap.md in https://github.com/poppy-team/oride (MIT). Pinned to revision 1cd515630b8ceb57777d466bee4970fe7c2e30e0, blob f914eaff26d1c4b3967ccf42214a513230975465. The source repository remains canonical; this copy is refreshed through a sync pull request, not live.

Keymap ​

Canonical source. This file is the project's only key table. The prose guides — docs/polish.md, docs/planning/ux-polish-plan.md, the usage guides — point here instead of repeating the table. Repeating it is how the divergences appeared: :normal instead of modal_mode, modal_editing in place of the real id, and a :help that does not exist. All were fixed in M2, and all were of the same class.

The sections group the keys by domain, derived from the id prefix by a deterministic rule — a new id lands in the right group by its own name, with no second table to maintain. What holds the (key, id) pairs is TestDocumentedKeymapMatchesTheBindings, which compares both directions: a key in the code and missing here, or here and missing from the code, fails by listing exactly the difference.

Remapping is configuration, not code. See docs/guides/en/config.md.

File ​

KeyAction
Alt+leftprev_tab
Alt+rightnext_tab
Alt+Shift+ssave_as
Ctrl+Alt+ssave_all
Ctrl+nnew_tab
Ctrl+oopen_folder
Ctrl+popen_file_fuzzy
Ctrl+pagedownnext_tab
Ctrl+pageupprev_tab
Ctrl+rreload_file
Ctrl+ssave
Ctrl+Shift+[prev_tab
Ctrl+Shift+]next_tab
Ctrl+Shift+ssave_as
Ctrl+wclose_tab
f12save_as

Editing ​

KeyAction
backspacebackspace
Ctrl+/toggle_comment
Ctrl+ccopy
Ctrl+Shift+uundo_tree
Ctrl+vpaste
Ctrl+xcut
Ctrl+yredo
Ctrl+zundo
enterinsert_newline
f8surround
tabinsert_tab

Movement ​

KeyAction
Ctrl+endmove_doc_end
Ctrl+homemove_doc_start
Ctrl+Shift+endmove_doc_end_extend
Ctrl+Shift+homemove_doc_start_extend
downmove_down
endmove_line_end
homemove_line_start
leftmove_left
rightmove_right
Shift+downmove_down_extend
Shift+endmove_line_end_extend
Shift+homemove_line_start_extend
Shift+leftmove_left_extend
Shift+rightmove_right_extend
Shift+upmove_up_extend
upmove_up

Selection ​

KeyAction
Ctrl+aselect_all
Ctrl+Alt+downadd_cursor_below
Ctrl+Alt+uclear_extra_cursors
Ctrl+Alt+upadd_cursor_above
KeyAction
Ctrl+ffind
Ctrl+hreplace
Ctrl+Shift+fproject_find
Ctrl+Shift+hreplace
f3find_next
Shift+f3find_prev

Layout ​

KeyAction
Alt+ptoggle_md_preview
Ctrl+\focus_tree
Ctrl+Alt+hsplit_horizontal
Ctrl+Alt+leftfocus_next_pane
Ctrl+Alt+rightfocus_next_pane
Ctrl+Alt+vsplit_vertical
Ctrl+bfocus_tree
Ctrl+efocus_editor
Ctrl+Shift+btoggle_tree
Ctrl+Shift+efocus_toggle_tree_editor
Ctrl+Shift+gtoggle_scm
Ctrl+Shift+vtoggle_md_preview
f6focus_next_pane

Terminal ​

KeyAction
Alt+-terminal_shrink
Alt+=terminal_grow
Ctrl+"toggle_terminal
Ctrl+'toggle_terminal
Ctrl+`toggle_terminal

Git ​

KeyAction
f2show_diff

LSP ​

KeyAction
Ctrl+klsp_hover
Ctrl+Shift+ilsp_format
Ctrl+spacelsp_complete
f4lsp_goto_definition
KeyAction
Ctrl+Alt+ijump_forward
Ctrl+Alt+ojump_back

Discovery ​

KeyAction
Alt+/which_key
Alt+Shift+/welcome
Ctrl+?help
Ctrl+ghelp
Ctrl+Shift+/help
Ctrl+Shift+obuffer_picker
Ctrl+Shift+pcommand_palette
Ctrl+Shift+tmulti_picker
f1help

Other ​

KeyAction
Alt+ztoggle_soft_wrap
Ctrl+Alt+wclose_pane
Ctrl+qquit
Ctrl+Shift+dtree_new_dir
Ctrl+Shift+mtoggle_diagnostics
Ctrl+Shift+ntree_new_file
deletedelete
escquit
f5tree_refresh
pagedownpage_down
pageuppage_up

Notes ​

  • Ctrl+Shift+<letter> is ambiguous in terminals that do not speak keyboard enhancements: when the terminal cannot tell the difference, the key arrives as the variant without Shift. The editor resolves the ambiguity from the fields of the key itself, without guessing the terminal — see docs/ui-ux/degradation.md.
  • A couple of keys use characters that need escaping in code: Ctrl+" and Ctrl+\. They were once lost by a generator that did not handle the escaped quote — that is why the table is produced from the Go API, and not by regex over the source.
  • This document does not cover each surface's local keymap (arrow keys inside the tree, for example): that is the focus graph, in docs/ui-ux/focus-graph.md.