Ergonomic keymap for Helix
0
ergohelix.md
edited
1# ErgoHelix
2
3| | | | | |
4| --- | --- | --- | --- | --- |
5| `:quit`<br/>`:quit-all` | `:buffer-close`<br/>`:buffer-close-all` | `insert_mode`<br/>`shell_insert_output`<br/>`change_selection_noyank`<br/>`shell_pipe` | `append_mode`<br/>`shell_append_output`<br/>`change_selection_noyank`<br/>`shell_pipe` | `buffer_picker` |
6| `select_mode`<br/>`select_all` | `:write`<br/>`:write-all`<br/>`save_selection` | `extend_line_below`<br/>`shrink_to_line_bounds` | `search_selection`, `search`<br/>`search_selection`, `global_search` | `search_next`<br/>`search_prev` |
7| `undo`<br/>`redo`<br/>`jump_backward`<br/>`jump_forward` | `delete_selection`<br/>`delete_selection_noyank` | `yank` | `paste_before`<br/><br/>`replace_with_yanked` | `paste_after`<br/><br/>`replace_with_yanked` |
8
9| | | | | |
10| --- | --- | --- | --- | --- |
11| `goto_first_nonwhitespace`<br/>`move_parent_node_start`<br/>`goto_file_start`<br/>`goto_line_start` | `move_prev_word_start`<br/>`move_prev_long_word_start`<br/>`page_up` | `move_visual_line_up`<br/>`copy_selection_on_prev_line`<br/>`open_above` | `move_next_word_end`<br/>`move_next_long_word_start`<br/>`page_down` | Match Mode |
12| `goto_line_end`<br/>`move_parent_node_end`<br/>`goto_last_line` | `move_char_left`<br/>`select_prev_sibling`<br/>`expand_selection` | `move_visual_line_down`<br/>`copy_selection_on_next_line`<br/>`open_below` | `move_char_right`<br/>`select_next_sibling`<br/>`shrink_selection` | `command_mode`<br/>`command_mode` |
13| `rotate_selections_backward`<br/>`rotate_selection_contents_backward` | `rotate_selections_forward`<br/>`rotate_selection_contents_forward` | `goto_word` | | `toggle_comments`<br/>`toggle_block_comments`<br/>`toggle_line_comments` |
14
15| Key | Description | Command |
16| ----------- | ------------------------------------------ | -------------------- |
17| `esc` | Collapse selection onto a single cursor | `collapse_selection` |
18| `space` | Space | Space Mode |
19| `tab` | Indent selection | `indent` |
20| `Shift-tab` | Unindent selection | `unindent` |
21| `ret` | Apply code action (**LSP**) | `code_action` |
22| `'`, `"` | Select a register to yank to or paste from | `select_register` |
23
24### Space mode
25
26| Key | Description | Command |
27| ------- | -------------------------------------------------------------------------------- | ------------------------------------------ |
28| `space` | Show documentation for item under cursor in a popup (**LSP**) | `hover` |
29| `tab` | Align selection in columns | `align_selections` |
30| `ret` | Go to files/URLs in selections | `goto_file` |
31| `a` | Flip selection cursor and anchor | `flip_selections` |
32| `A` | Ensures the selection is in forward direction | `ensure_selections_forward` |
33| `b` | Debug | Debug Mode |
34| `c` | Case | Case Mode |
35| `d` | Go to definition (**LSP**) | `goto_definition` |
36| `e` | Select all regex matches inside selections | `select_regex` |
37| `E` | Split selection into sub selections on regex matches | `split_selection` |
38| `f` | Format selection (**LSP**) | `format_selections` |
39| `h` | Select symbol references (**LSP**) | `select_references_to_symbol_under_cursor` |
40| `i` | Go to implementation (**LSP**) | `goto_implementation` |
41| `j` | Join lines inside selection | `join_selections` |
42| `J` | Join lines inside selection and select the inserted space | `join_selections_space` |
43| `k` | Keep selections matching the regex | `keep_selections` |
44| `K` | Remove selections matching the regex | `remove_selections` |
45| `l` | Split selection on newlines | `split_selection_on_newline` |
46| `m` | Merge selections | `merge_selections` |
47| `M` | Merge consecutive selections | `merge_consecutive_selections` |
48| `n` | Select all sibling nodes in syntax tree (**TS**) | `select_all_siblings` |
49| `N` | Select all children nodes in syntax tree (**TS**) | `select_all_children` |
50| `o` | Open document diagnostics picker (**LSP**) | `diagnostics_picker` |
51| `O` | Open workspace diagnostics picker (**LSP**) | `workspace_diagnostics_picker` |
52| `p` | Keep only the primary selection | `keep_primary_selection` |
53| `P` | Remove the primary selection | `remove_primary_selection` |
54| `r` | Go to references (**LSP**) | `goto_reference` |
55| `R` | Rename symbol (**LSP**) | `rename_symbol` |
56| `s` | Open document symbol picker (**LSP** or **TS**) | `lsp_or_syntax_symbol_picker` |
57| `S` | Open workspace symbol picker (**LSP** or **TS**) | `lsp_or_syntax_workspace_symbol_picker` |
58| `t` | Go to type definition (**LSP**) | `goto_type_definition` |
59| `w` | Trim whitespace from the selection | `trim_selections` |
60| `x` | Pipe each selection into shell command, keep selections where command returned 0 | `shell_keep_pipe` |
61| `X` | Pipe each selection into shell command, ignoring output | `shell_pipe_to` |
62| `y` | Open jumplist picker | `jumplist_picker` |
63| `z` | Move backward in history | `earlier` |
64| `Z` | Move forward in history | `later` |
65
66### Match mode
67
68| Key | Description | Command |
69| ---- | ----------------------------------------------- | -------------------------- |
70| <\*> | Goto matching bracket (**TS**) | `match_brackets` |
71| `a` | Select around textobject | `select_textobject_around` |
72| `d` | Delete surround character `<char>` | `surround_delete` |
73| `i` | Select inside textobject | `select_textobject_inner` |
74| `r` | Replace surround character `<from>` with `<to>` | `surround_replace` |
75| `s` | Surround current selection with `<char>` | `surround_add` |