2021-04-05 08:18:43 +02:00
|
|
|
# Keymap
|
|
|
|
|
2022-07-26 02:41:09 +02:00
|
|
|
- [Normal mode](#normal-mode)
|
|
|
|
- [Movement](#movement)
|
|
|
|
- [Changes](#changes)
|
|
|
|
- [Shell](#shell)
|
|
|
|
- [Selection manipulation](#selection-manipulation)
|
|
|
|
- [Search](#search)
|
|
|
|
- [Minor modes](#minor-modes)
|
|
|
|
- [View mode](#view-mode)
|
|
|
|
- [Goto mode](#goto-mode)
|
|
|
|
- [Match mode](#match-mode)
|
|
|
|
- [Window mode](#window-mode)
|
|
|
|
- [Space mode](#space-mode)
|
|
|
|
- [Popup](#popup)
|
|
|
|
- [Unimpaired](#unimpaired)
|
|
|
|
- [Insert Mode](#insert-mode)
|
|
|
|
- [Select / extend mode](#select--extend-mode)
|
|
|
|
- [Picker](#picker)
|
|
|
|
- [Prompt](#prompt)
|
|
|
|
|
|
|
|
> 💡 Mappings marked (**LSP**) require an active language server for the file.
|
|
|
|
|
|
|
|
> 💡 Mappings marked (**TS**) require a tree-sitter grammar for the filetype.
|
2021-11-12 02:35:32 +01:00
|
|
|
|
2021-05-12 13:32:44 +02:00
|
|
|
## Normal mode
|
2021-04-05 08:18:43 +02:00
|
|
|
|
2021-05-12 13:32:44 +02:00
|
|
|
### Movement
|
2021-04-05 08:18:43 +02:00
|
|
|
|
2022-09-17 13:34:48 +02:00
|
|
|
> NOTE: Unlike Vim, `f`, `F`, `t` and `T` are not confined to the current line.
|
2021-06-14 19:59:52 +02:00
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `h`, `Left` | Move left | `move_char_left` |
|
|
|
|
| `j`, `Down` | Move down | `move_line_down` |
|
|
|
|
| `k`, `Up` | Move up | `move_line_up` |
|
|
|
|
| `l`, `Right` | Move right | `move_char_right` |
|
|
|
|
| `w` | Move next word start | `move_next_word_start` |
|
|
|
|
| `b` | Move previous word start | `move_prev_word_start` |
|
|
|
|
| `e` | Move next word end | `move_next_word_end` |
|
|
|
|
| `W` | Move next WORD start | `move_next_long_word_start` |
|
|
|
|
| `B` | Move previous WORD start | `move_prev_long_word_start` |
|
|
|
|
| `E` | Move next WORD end | `move_next_long_word_end` |
|
|
|
|
| `t` | Find 'till next char | `find_till_char` |
|
|
|
|
| `f` | Find next char | `find_next_char` |
|
|
|
|
| `T` | Find 'till previous char | `till_prev_char` |
|
|
|
|
| `F` | Find previous char | `find_prev_char` |
|
|
|
|
| `G` | Go to line number `<n>` | `goto_line` |
|
|
|
|
| `Alt-.` | Repeat last motion (`f`, `t` or `m`) | `repeat_last_motion` |
|
|
|
|
| `Home` | Move to the start of the line | `goto_line_start` |
|
|
|
|
| `End` | Move to the end of the line | `goto_line_end` |
|
|
|
|
| `Ctrl-b`, `PageUp` | Move page up | `page_up` |
|
|
|
|
| `Ctrl-f`, `PageDown` | Move page down | `page_down` |
|
|
|
|
| `Ctrl-u` | Move half page up | `half_page_up` |
|
|
|
|
| `Ctrl-d` | Move half page down | `half_page_down` |
|
|
|
|
| `Ctrl-i` | Jump forward on the jumplist | `jump_forward` |
|
|
|
|
| `Ctrl-o` | Jump backward on the jumplist | `jump_backward` |
|
|
|
|
| `Ctrl-s` | Save the current selection to the jumplist | `save_selection` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
|
|
|
### Changes
|
|
|
|
|
2021-12-12 14:54:14 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `r` | Replace with a character | `replace` |
|
|
|
|
| `R` | Replace with yanked text | `replace_with_yanked` |
|
|
|
|
| `~` | Switch case of the selected text | `switch_case` |
|
|
|
|
| `` ` `` | Set the selected text to lower case | `switch_to_lowercase` |
|
|
|
|
| `` Alt-` `` | Set the selected text to upper case | `switch_to_uppercase` |
|
|
|
|
| `i` | Insert before selection | `insert_mode` |
|
|
|
|
| `a` | Insert after selection (append) | `append_mode` |
|
2022-10-03 17:05:08 +02:00
|
|
|
| `I` | Insert at the start of the line | `insert_at_line_start` |
|
|
|
|
| `A` | Insert at the end of the line | `insert_at_line_end` |
|
2021-12-12 14:54:14 +01:00
|
|
|
| `o` | Open new line below selection | `open_below` |
|
|
|
|
| `O` | Open new line above selection | `open_above` |
|
2022-06-25 22:28:26 +02:00
|
|
|
| `.` | Repeat last insert | N/A |
|
2021-12-12 14:54:14 +01:00
|
|
|
| `u` | Undo change | `undo` |
|
|
|
|
| `U` | Redo change | `redo` |
|
|
|
|
| `Alt-u` | Move backward in history | `earlier` |
|
|
|
|
| `Alt-U` | Move forward in history | `later` |
|
|
|
|
| `y` | Yank selection | `yank` |
|
|
|
|
| `p` | Paste after selection | `paste_after` |
|
|
|
|
| `P` | Paste before selection | `paste_before` |
|
|
|
|
| `"` `<reg>` | Select a register to yank to or paste from | `select_register` |
|
|
|
|
| `>` | Indent selection | `indent` |
|
|
|
|
| `<` | Unindent selection | `unindent` |
|
|
|
|
| `=` | Format selection (currently nonfunctional/disabled) (**LSP**) | `format_selections` |
|
|
|
|
| `d` | Delete selection | `delete_selection` |
|
|
|
|
| `Alt-d` | Delete selection, without yanking | `delete_selection_noyank` |
|
|
|
|
| `c` | Change selection (delete and enter insert mode) | `change_selection` |
|
|
|
|
| `Alt-c` | Change selection (delete and enter insert mode, without yanking) | `change_selection_noyank` |
|
|
|
|
| `Ctrl-a` | Increment object (number) under cursor | `increment` |
|
|
|
|
| `Ctrl-x` | Decrement object (number) under cursor | `decrement` |
|
|
|
|
| `Q` | Start/stop macro recording to the selected register (experimental) | `record_macro` |
|
|
|
|
| `q` | Play back a recorded macro from the selected register (experimental) | `replay_macro` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Shell
|
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ------ | ----------- | ------- |
|
2022-03-14 03:34:21 +01:00
|
|
|
| <code>|</code> | Pipe each selection through shell command, replacing with output | `shell_pipe` |
|
|
|
|
| <code>Alt-|</code> | Pipe each selection into shell command, ignoring output | `shell_pipe_to` |
|
2022-03-13 09:12:13 +01:00
|
|
|
| `!` | Run shell command, inserting output before each selection | `shell_insert_output` |
|
|
|
|
| `Alt-!` | Run shell command, appending output after each selection | `shell_append_output` |
|
2022-02-08 05:45:40 +01:00
|
|
|
| `$` | Pipe each selection into shell command, keep selections where command returned 0 | `shell_keep_pipe` |
|
2021-09-07 06:00:52 +02:00
|
|
|
|
|
|
|
|
2021-05-12 13:32:44 +02:00
|
|
|
### Selection manipulation
|
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `s` | Select all regex matches inside selections | `select_regex` |
|
|
|
|
| `S` | Split selection into subselections on regex matches | `split_selection` |
|
|
|
|
| `Alt-s` | Split selection on newlines | `split_selection_on_newline` |
|
|
|
|
| `&` | Align selection in columns | `align_selections` |
|
|
|
|
| `_` | Trim whitespace from the selection | `trim_selections` |
|
|
|
|
| `;` | Collapse selection onto a single cursor | `collapse_selection` |
|
|
|
|
| `Alt-;` | Flip selection cursor and anchor | `flip_selections` |
|
|
|
|
| `Alt-:` | Ensures the selection is in forward direction | `ensure_selections_forward` |
|
|
|
|
| `,` | Keep only the primary selection | `keep_primary_selection` |
|
|
|
|
| `Alt-,` | Remove the primary selection | `remove_primary_selection` |
|
|
|
|
| `C` | Copy selection onto the next line (Add cursor below) | `copy_selection_on_next_line` |
|
|
|
|
| `Alt-C` | Copy selection onto the previous line (Add cursor above) | `copy_selection_on_prev_line` |
|
|
|
|
| `(` | Rotate main selection backward | `rotate_selections_backward` |
|
|
|
|
| `)` | Rotate main selection forward | `rotate_selections_forward` |
|
|
|
|
| `Alt-(` | Rotate selection contents backward | `rotate_selection_contents_backward` |
|
|
|
|
| `Alt-)` | Rotate selection contents forward | `rotate_selection_contents_forward` |
|
|
|
|
| `%` | Select entire file | `select_all` |
|
2022-08-29 03:00:40 +02:00
|
|
|
| `x` | Select current line, if already selected, extend to next line | `extend_line_below` |
|
2022-03-13 09:12:13 +01:00
|
|
|
| `X` | Extend selection to line bounds (line-wise selection) | `extend_to_line_bounds` |
|
2022-05-22 03:33:11 +02:00
|
|
|
| `Alt-x` | Shrink selection to line bounds (line-wise selection) | `shrink_to_line_bounds` |
|
2022-03-13 09:12:13 +01:00
|
|
|
| `J` | Join lines inside selection | `join_selections` |
|
2022-10-03 17:02:14 +02:00
|
|
|
| `A-J` | Join lines inside selection and select space | `join_selections_space` |
|
2022-03-13 09:12:13 +01:00
|
|
|
| `K` | Keep selections matching the regex | `keep_selections` |
|
|
|
|
| `Alt-K` | Remove selections matching the regex | `remove_selections` |
|
|
|
|
| `Ctrl-c` | Comment/uncomment the selections | `toggle_comments` |
|
2022-04-29 08:49:15 +02:00
|
|
|
| `Alt-o`, `Alt-up` | Expand selection to parent syntax node (**TS**) | `expand_selection` |
|
|
|
|
| `Alt-i`, `Alt-down` | Shrink syntax tree object selection (**TS**) | `shrink_selection` |
|
|
|
|
| `Alt-p`, `Alt-left` | Select previous sibling node in syntax tree (**TS**) | `select_prev_sibling` |
|
|
|
|
| `Alt-n`, `Alt-right` | Select next sibling node in syntax tree (**TS**) | `select_next_sibling` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
|
|
|
### Search
|
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
Search commands all operate on the `/` register by default. Use `"<char>` to operate on a different one.
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-08-27 04:45:18 +02:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `/` | Search for regex pattern | `search` |
|
2021-11-06 09:33:30 +01:00
|
|
|
| `?` | Search for previous pattern | `rsearch` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `n` | Select next search match | `search_next` |
|
2021-11-06 09:33:30 +01:00
|
|
|
| `N` | Select previous search match | `search_prev` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `*` | Use current selection as the search pattern | `search_selection` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
### Minor modes
|
2021-08-31 11:13:16 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
These sub-modes are accessible from normal mode and typically switch back to normal mode after a command.
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `v` | Enter [select (extend) mode](#select--extend-mode) | `select_mode` |
|
|
|
|
| `g` | Enter [goto mode](#goto-mode) | N/A |
|
|
|
|
| `m` | Enter [match mode](#match-mode) | N/A |
|
|
|
|
| `:` | Enter command mode | `command_mode` |
|
|
|
|
| `z` | Enter [view mode](#view-mode) | N/A |
|
|
|
|
| `Z` | Enter sticky [view mode](#view-mode) | N/A |
|
|
|
|
| `Ctrl-w` | Enter [window mode](#window-mode) | N/A |
|
|
|
|
| `Space` | Enter [space mode](#space-mode) | N/A |
|
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### View mode
|
2021-05-12 13:32:44 +02:00
|
|
|
|
|
|
|
View mode is intended for scrolling and manipulating the view without changing
|
2021-09-10 16:14:23 +02:00
|
|
|
the selection. The "sticky" variant of this mode is persistent; use the Escape
|
|
|
|
key to return to normal mode after usage (useful when you're simply looking
|
|
|
|
over text and not actively editing it).
|
|
|
|
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `z`, `c` | Vertically center the line | `align_view_center` |
|
|
|
|
| `t` | Align the line to the top of the screen | `align_view_top` |
|
|
|
|
| `b` | Align the line to the bottom of the screen | `align_view_bottom` |
|
|
|
|
| `m` | Align the line to the middle of the screen (horizontally) | `align_view_middle` |
|
|
|
|
| `j`, `down` | Scroll the view downwards | `scroll_down` |
|
|
|
|
| `k`, `up` | Scroll the view upwards | `scroll_up` |
|
|
|
|
| `Ctrl-f`, `PageDown` | Move page down | `page_down` |
|
|
|
|
| `Ctrl-b`, `PageUp` | Move page up | `page_up` |
|
|
|
|
| `Ctrl-d` | Move half page down | `half_page_down` |
|
|
|
|
| `Ctrl-u` | Move half page up | `half_page_up` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Goto mode
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-11-12 02:35:32 +01:00
|
|
|
Jumps to various locations.
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-08-27 04:45:18 +02:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
2021-12-18 15:58:17 +01:00
|
|
|
| `g` | Go to line number `<n>` else start of file | `goto_file_start` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `e` | Go to the end of the file | `goto_last_line` |
|
2021-11-29 02:53:29 +01:00
|
|
|
| `f` | Go to files in the selection | `goto_file` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `h` | Go to the start of the line | `goto_line_start` |
|
|
|
|
| `l` | Go to the end of the line | `goto_line_end` |
|
|
|
|
| `s` | Go to first non-whitespace character of the line | `goto_first_nonwhitespace` |
|
|
|
|
| `t` | Go to the top of the screen | `goto_window_top` |
|
2021-12-02 05:46:57 +01:00
|
|
|
| `c` | Go to the middle of the screen | `goto_window_center` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `b` | Go to the bottom of the screen | `goto_window_bottom` |
|
2021-11-10 02:47:07 +01:00
|
|
|
| `d` | Go to definition (**LSP**) | `goto_definition` |
|
|
|
|
| `y` | Go to type definition (**LSP**) | `goto_type_definition` |
|
|
|
|
| `r` | Go to references (**LSP**) | `goto_reference` |
|
|
|
|
| `i` | Go to implementation (**LSP**) | `goto_implementation` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `a` | Go to the last accessed/alternate file | `goto_last_accessed_file` |
|
2021-12-02 05:46:57 +01:00
|
|
|
| `m` | Go to the last modified/alternate file | `goto_last_modified_file` |
|
2021-11-01 20:52:47 +01:00
|
|
|
| `n` | Go to next buffer | `goto_next_buffer` |
|
|
|
|
| `p` | Go to previous buffer | `goto_previous_buffer` |
|
2021-11-14 16:11:53 +01:00
|
|
|
| `.` | Go to last modification in current file | `goto_last_modification` |
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Match mode
|
2021-06-22 07:06:29 +02:00
|
|
|
|
2022-04-27 21:21:20 +02:00
|
|
|
Enter this mode using `m` from normal mode. See the relevant section
|
2021-07-03 03:07:49 +02:00
|
|
|
in [Usage](./usage.md) for an explanation about [surround](./usage.md#surround)
|
|
|
|
and [textobject](./usage.md#textobject) usage.
|
2021-06-22 07:06:29 +02:00
|
|
|
|
2021-08-27 04:45:18 +02:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
2021-11-12 02:35:32 +01:00
|
|
|
| `m` | Goto matching bracket (**TS**) | `match_brackets` |
|
2021-08-27 04:45:18 +02:00
|
|
|
| `s` `<char>` | Surround current selection with `<char>` | `surround_add` |
|
|
|
|
| `r` `<from><to>` | Replace surround character `<from>` with `<to>` | `surround_replace` |
|
|
|
|
| `d` `<char>` | Delete surround character `<char>` | `surround_delete` |
|
|
|
|
| `a` `<object>` | Select around textobject | `select_textobject_around` |
|
|
|
|
| `i` `<object>` | Select inside textobject | `select_textobject_inner` |
|
2021-06-22 07:06:29 +02:00
|
|
|
|
2021-05-12 13:32:44 +02:00
|
|
|
TODO: Mappings for selecting syntax nodes (a superset of `[`).
|
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Window mode
|
2021-06-05 09:45:24 +02:00
|
|
|
|
2022-09-17 13:34:48 +02:00
|
|
|
This layer is similar to Vim keybindings as Kakoune does not support window.
|
2021-06-05 09:45:24 +02:00
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ------------- | ------- |
|
|
|
|
| `w`, `Ctrl-w` | Switch to next window | `rotate_view` |
|
|
|
|
| `v`, `Ctrl-v` | Vertical right split | `vsplit` |
|
|
|
|
| `s`, `Ctrl-s` | Horizontal bottom split | `hsplit` |
|
|
|
|
| `f` | Go to files in the selection in horizontal splits | `goto_file` |
|
|
|
|
| `F` | Go to files in the selection in vertical splits | `goto_file` |
|
|
|
|
| `h`, `Ctrl-h`, `Left` | Move to left split | `jump_view_left` |
|
|
|
|
| `j`, `Ctrl-j`, `Down` | Move to split below | `jump_view_down` |
|
|
|
|
| `k`, `Ctrl-k`, `Up` | Move to split above | `jump_view_up` |
|
|
|
|
| `l`, `Ctrl-l`, `Right` | Move to right split | `jump_view_right` |
|
|
|
|
| `q`, `Ctrl-q` | Close current window | `wclose` |
|
|
|
|
| `o`, `Ctrl-o` | Only keep the current window, closing all the others | `wonly` |
|
2022-06-03 14:09:35 +02:00
|
|
|
| `H` | Swap window to the left | `swap_view_left` |
|
|
|
|
| `J` | Swap window downwards | `swap_view_down` |
|
|
|
|
| `K` | Swap window upwards | `swap_view_up` |
|
|
|
|
| `L` | Swap window to the right | `swap_view_right` |
|
2021-06-05 09:45:24 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Space mode
|
2021-05-12 13:32:44 +02:00
|
|
|
|
2021-11-12 02:35:32 +01:00
|
|
|
This layer is a kludge of mappings, mostly pickers.
|
2021-11-10 02:47:07 +01:00
|
|
|
|
2021-04-05 08:18:43 +02:00
|
|
|
|
2021-11-19 03:58:22 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `f` | Open file picker | `file_picker` |
|
2022-09-05 08:11:06 +02:00
|
|
|
| `F` | Open file picker at current working directory | `file_picker_in_current_directory` |
|
2021-11-19 03:58:22 +01:00
|
|
|
| `b` | Open buffer picker | `buffer_picker` |
|
2022-07-22 03:21:46 +02:00
|
|
|
| `j` | Open jumplist picker | `jumplist_picker` |
|
2021-11-19 03:58:22 +01:00
|
|
|
| `k` | Show documentation for item under cursor in a [popup](#popup) (**LSP**) | `hover` |
|
|
|
|
| `s` | Open document symbol picker (**LSP**) | `symbol_picker` |
|
|
|
|
| `S` | Open workspace symbol picker (**LSP**) | `workspace_symbol_picker` |
|
2022-07-06 04:49:54 +02:00
|
|
|
| `g` | Open document diagnostics picker (**LSP**) | `diagnostics_picker` |
|
|
|
|
| `G` | Open workspace diagnostics picker (**LSP**) | `workspace_diagnostics_picker`
|
2021-11-19 03:58:22 +01:00
|
|
|
| `r` | Rename symbol (**LSP**) | `rename_symbol` |
|
|
|
|
| `a` | Apply code action (**LSP**) | `code_action` |
|
|
|
|
| `'` | Open last fuzzy picker | `last_picker` |
|
|
|
|
| `w` | Enter [window mode](#window-mode) | N/A |
|
|
|
|
| `p` | Paste system clipboard after selections | `paste_clipboard_after` |
|
|
|
|
| `P` | Paste system clipboard before selections | `paste_clipboard_before` |
|
|
|
|
| `y` | Join and yank selections to clipboard | `yank_joined_to_clipboard` |
|
|
|
|
| `Y` | Yank main selection to clipboard | `yank_main_selection_to_clipboard` |
|
|
|
|
| `R` | Replace selections by clipboard contents | `replace_selections_with_clipboard` |
|
|
|
|
| `/` | Global search in workspace folder | `global_search` |
|
2022-03-13 09:12:13 +01:00
|
|
|
| `?` | Open command palette | `command_palette` |
|
2021-06-12 12:46:05 +02:00
|
|
|
|
2021-11-10 02:47:07 +01:00
|
|
|
> TIP: Global search displays results in a fuzzy picker, use `space + '` to bring it back up after opening a file.
|
2021-11-19 03:58:22 +01:00
|
|
|
|
|
|
|
##### Popup
|
|
|
|
|
|
|
|
Displays documentation for item under cursor.
|
|
|
|
|
|
|
|
| Key | Description |
|
|
|
|
| ---- | ----------- |
|
|
|
|
| `Ctrl-u` | Scroll up |
|
|
|
|
| `Ctrl-d` | Scroll down |
|
2021-09-21 18:03:12 +02:00
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
#### Unimpaired
|
|
|
|
|
|
|
|
Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaired).
|
|
|
|
|
2022-02-03 12:08:03 +01:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `[d` | Go to previous diagnostic (**LSP**) | `goto_prev_diag` |
|
|
|
|
| `]d` | Go to next diagnostic (**LSP**) | `goto_next_diag` |
|
|
|
|
| `[D` | Go to first diagnostic in document (**LSP**) | `goto_first_diag` |
|
|
|
|
| `]D` | Go to last diagnostic in document (**LSP**) | `goto_last_diag` |
|
|
|
|
| `]f` | Go to next function (**TS**) | `goto_next_function` |
|
|
|
|
| `[f` | Go to previous function (**TS**) | `goto_prev_function` |
|
|
|
|
| `]c` | Go to next class (**TS**) | `goto_next_class` |
|
|
|
|
| `[c` | Go to previous class (**TS**) | `goto_prev_class` |
|
2022-03-07 08:46:14 +01:00
|
|
|
| `]a` | Go to next argument/parameter (**TS**) | `goto_next_parameter` |
|
|
|
|
| `[a` | Go to previous argument/parameter (**TS**) | `goto_prev_parameter` |
|
2022-03-06 06:24:24 +01:00
|
|
|
| `]o` | Go to next comment (**TS**) | `goto_next_comment` |
|
|
|
|
| `[o` | Go to previous comment (**TS**) | `goto_prev_comment` |
|
2022-06-18 23:24:01 +02:00
|
|
|
| `]t` | Go to next test (**TS**) | `goto_next_test` |
|
|
|
|
| `]t` | Go to previous test (**TS**) | `goto_prev_test` |
|
2022-02-21 15:58:54 +01:00
|
|
|
| `]p` | Go to next paragraph | `goto_next_paragraph` |
|
|
|
|
| `[p` | Go to previous paragraph | `goto_prev_paragraph` |
|
2022-02-03 12:08:03 +01:00
|
|
|
| `[space` | Add newline above | `add_newline_above` |
|
|
|
|
| `]space` | Add newline below | `add_newline_below` |
|
2021-09-07 06:00:52 +02:00
|
|
|
|
2022-10-03 17:08:15 +02:00
|
|
|
## Insert mode
|
2021-09-07 06:00:52 +02:00
|
|
|
|
2022-09-03 20:22:17 +02:00
|
|
|
Insert mode bindings are somewhat minimal by default. Helix is designed to
|
|
|
|
be a modal editor, and this is reflected in the user experience and internal
|
|
|
|
mechanics. For example, changes to the text are only saved for undos when
|
|
|
|
escaping from insert mode to normal mode. For this reason, new users are
|
|
|
|
strongly encouraged to learn the modal editing paradigm to get the smoothest
|
|
|
|
experience.
|
2022-03-13 09:12:13 +01:00
|
|
|
|
2022-10-03 17:08:15 +02:00
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `Escape` | Switch to normal mode | `normal_mode` |
|
|
|
|
| `Ctrl-s` | Commit undo checkpoint | `commit_undo_checkpoint` |
|
|
|
|
| `Ctrl-x` | Autocomplete | `completion` |
|
|
|
|
| `Ctrl-r` | Insert a register content | `insert_register` |
|
|
|
|
| `Ctrl-w`, `Alt-Backspace` | Delete previous word | `delete_word_backward` |
|
|
|
|
| `Alt-d`, `Alt-Delete` | Delete next word | `delete_word_forward` |
|
|
|
|
| `Ctrl-u` | Delete to start of line | `kill_to_line_start` |
|
|
|
|
| `Ctrl-k` | Delete to end of line | `kill_to_line_end` |
|
|
|
|
| `Ctrl-h`, `Backspace` | Delete previous char | `delete_char_backward` |
|
|
|
|
| `Ctrl-d`, `Delete` | Delete next char | `delete_char_forward` |
|
|
|
|
| `Ctrl-j`, `Enter` | Insert new line | `insert_newline` |
|
|
|
|
|
|
|
|
These keys are not recommended, but are included for new users less familiar
|
|
|
|
with modal editors.
|
|
|
|
|
|
|
|
| Key | Description | Command |
|
|
|
|
| ----- | ----------- | ------- |
|
|
|
|
| `Up` | Move to previous line | `move_line_up` |
|
|
|
|
| `Down` | Move to next line | `move_line_down` |
|
|
|
|
| `Left` | Backward a char | `move_char_left` |
|
|
|
|
| `Right` | Forward a char | `move_char_right` |
|
|
|
|
| `PageUp` | Move one page up | `page_up` |
|
|
|
|
| `PageDown` | Move one page down | `page_down` |
|
|
|
|
| `Home` | Move to line start | `goto_line_start` |
|
|
|
|
| `End` | Move to line end | `goto_line_end_newline` |
|
2021-09-07 06:00:52 +02:00
|
|
|
|
2022-10-04 16:40:51 +02:00
|
|
|
If you want to disable them in insert mode as you become more comfortable with modal editing, you can use
|
|
|
|
the following in your `config.toml`:
|
|
|
|
|
|
|
|
```toml
|
|
|
|
[keys.insert]
|
|
|
|
up = "no_op"
|
|
|
|
down = "no_op"
|
|
|
|
left = "no_op"
|
|
|
|
right = "no_op"
|
|
|
|
pageup = "no_op"
|
|
|
|
pagedown = "no_op"
|
|
|
|
home = "no_op"
|
|
|
|
end = "no_op"
|
|
|
|
```
|
|
|
|
|
2021-09-07 06:00:52 +02:00
|
|
|
## Select / extend mode
|
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
This mode echoes Normal mode, but changes any movements to extend
|
|
|
|
selections rather than replace them. Goto motions are also changed to
|
|
|
|
extend, so that `vgl` for example extends the selection to the end of
|
|
|
|
the line.
|
2021-09-07 06:00:52 +02:00
|
|
|
|
2022-03-13 09:12:13 +01:00
|
|
|
Search is also affected. By default, `n` and `N` will remove the current
|
|
|
|
selection and select the next instance of the search term. Toggling this
|
|
|
|
mode before pressing `n` or `N` makes it possible to keep the current
|
|
|
|
selection. Toggling it on and off during your iterative searching allows
|
|
|
|
you to selectively add search terms to your selections.
|
2021-09-07 06:00:52 +02:00
|
|
|
|
2022-07-26 02:41:09 +02:00
|
|
|
## Picker
|
2021-06-12 12:46:05 +02:00
|
|
|
|
2021-08-27 04:45:18 +02:00
|
|
|
Keys to use within picker. Remapping currently not supported.
|
2021-06-12 12:46:05 +02:00
|
|
|
|
2021-10-19 11:37:38 +02:00
|
|
|
| Key | Description |
|
|
|
|
| ----- | ------------- |
|
2022-09-21 20:51:48 +02:00
|
|
|
| `Shift-Tab`, `Up`, `Ctrl-p` | Previous entry |
|
|
|
|
| `Tab`, `Down`, `Ctrl-n` | Next entry |
|
2022-03-31 09:51:11 +02:00
|
|
|
| `PageUp`, `Ctrl-u` | Page up |
|
|
|
|
| `PageDown`, `Ctrl-d` | Page down |
|
Add `PageUp`, `PageDown`, `Ctrl-u`, `Ctrl-d`, `Home`, `End` keyboard shortcuts to file picker (#1612)
* Add `PageUp`, `PageDown`, `Ctrl-u`, `Ctrl-d`, `Home`, `End` keyboard shortcuts to file picker
* Refactor file picker paging logic
* change key mapping
* Add overlay component
* Use closure instead of margin to calculate size
* Don't wrap file picker in `Overlay` automatically
2022-02-15 02:24:03 +01:00
|
|
|
| `Home` | Go to first entry |
|
|
|
|
| `End` | Go to last entry |
|
2021-10-19 11:37:38 +02:00
|
|
|
| `Enter` | Open selected |
|
2021-10-23 13:06:40 +02:00
|
|
|
| `Ctrl-s` | Open horizontally |
|
2021-10-19 11:37:38 +02:00
|
|
|
| `Ctrl-v` | Open vertically |
|
2022-07-18 03:11:25 +02:00
|
|
|
| `Ctrl-t` | Toggle preview |
|
2021-10-19 11:37:38 +02:00
|
|
|
| `Escape`, `Ctrl-c` | Close picker |
|
2021-11-04 04:26:01 +01:00
|
|
|
|
2022-07-26 02:41:09 +02:00
|
|
|
## Prompt
|
2021-11-10 02:47:07 +01:00
|
|
|
|
2021-11-04 04:26:01 +01:00
|
|
|
Keys to use within prompt, Remapping currently not supported.
|
2021-11-10 02:47:07 +01:00
|
|
|
|
2022-07-15 15:59:00 +02:00
|
|
|
| Key | Description |
|
|
|
|
| ----- | ------------- |
|
|
|
|
| `Escape`, `Ctrl-c` | Close prompt |
|
|
|
|
| `Alt-b`, `Ctrl-Left` | Backward a word |
|
|
|
|
| `Ctrl-b`, `Left` | Backward a char |
|
|
|
|
| `Alt-f`, `Ctrl-Right` | Forward a word |
|
|
|
|
| `Ctrl-f`, `Right` | Forward a char |
|
|
|
|
| `Ctrl-e`, `End` | Move prompt end |
|
|
|
|
| `Ctrl-a`, `Home` | Move prompt start |
|
|
|
|
| `Ctrl-w`, `Alt-Backspace`, `Ctrl-Backspace` | Delete previous word |
|
|
|
|
| `Alt-d`, `Alt-Delete`, `Ctrl-Delete` | Delete next word |
|
|
|
|
| `Ctrl-u` | Delete to start of line |
|
|
|
|
| `Ctrl-k` | Delete to end of line |
|
|
|
|
| `backspace`, `Ctrl-h` | Delete previous char |
|
|
|
|
| `delete`, `Ctrl-d` | Delete next char |
|
|
|
|
| `Ctrl-s` | Insert a word under doc cursor, may be changed to Ctrl-r Ctrl-w later |
|
|
|
|
| `Ctrl-p`, `Up` | Select previous history |
|
|
|
|
| `Ctrl-n`, `Down` | Select next history |
|
|
|
|
| `Ctrl-r` | Insert the content of the register selected by following input char |
|
|
|
|
| `Tab` | Select next completion item |
|
|
|
|
| `BackTab` | Select previous completion item |
|
|
|
|
| `Enter` | Open selected |
|