aboutsummaryrefslogtreecommitdiff
path: root/book/src/keymap.md
diff options
context:
space:
mode:
Diffstat (limited to 'book/src/keymap.md')
-rw-r--r--book/src/keymap.md118
1 files changed, 65 insertions, 53 deletions
diff --git a/book/src/keymap.md b/book/src/keymap.md
index 6d90d802..6523b09f 100644
--- a/book/src/keymap.md
+++ b/book/src/keymap.md
@@ -68,8 +68,8 @@
| `` Alt-` `` | Set the selected text to upper case | `switch_to_uppercase` |
| `i` | Insert before selection | `insert_mode` |
| `a` | Insert after selection (append) | `append_mode` |
-| `I` | Insert at the start of the line | `prepend_to_line` |
-| `A` | Insert at the end of the line | `append_to_line` |
+| `I` | Insert at the start of the line | `insert_at_line_start` |
+| `A` | Insert at the end of the line | `insert_at_line_end` |
| `o` | Open new line below selection | `open_below` |
| `O` | Open new line above selection | `open_above` |
| `.` | Repeat last insert | N/A |
@@ -129,6 +129,7 @@
| `X` | Extend selection to line bounds (line-wise selection) | `extend_to_line_bounds` |
| `Alt-x` | Shrink selection to line bounds (line-wise selection) | `shrink_to_line_bounds` |
| `J` | Join lines inside selection | `join_selections` |
+| `Alt-J` | Join lines inside selection and select space | `join_selections_space` |
| `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` |
@@ -166,10 +167,13 @@ These sub-modes are accessible from normal mode and typically switch back to nor
#### View mode
+Accessed by typing `z` in [normal mode](#normal-mode).
+
View mode is intended for scrolling and manipulating the view without changing
-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).
+the selection. The "sticky" variant of this mode (accessed by typing `Z` in
+normal 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).
| Key | Description | Command |
@@ -187,6 +191,8 @@ over text and not actively editing it).
#### Goto mode
+Accessed by typing `g` in [normal mode](#normal-mode).
+
Jumps to various locations.
| Key | Description | Command |
@@ -212,9 +218,10 @@ Jumps to various locations.
#### Match mode
-Enter this mode using `m` from normal mode. See the relevant section
-in [Usage](./usage.md) for an explanation about [surround](./usage.md#surround)
-and [textobject](./usage.md#textobject) usage.
+Accessed by typing `m` in [normal mode](#normal-mode).
+
+See the relevant section in [Usage](./usage.md) for an explanation about
+[surround](./usage.md#surround) and [textobject](./usage.md#textobjects) usage.
| Key | Description | Command |
| ----- | ----------- | ------- |
@@ -229,6 +236,8 @@ TODO: Mappings for selecting syntax nodes (a superset of `[`).
#### Window mode
+Accessed by typing `Ctrl-w` in [normal mode](#normal-mode).
+
This layer is similar to Vim keybindings as Kakoune does not support window.
| Key | Description | Command |
@@ -251,8 +260,9 @@ This layer is similar to Vim keybindings as Kakoune does not support window.
#### Space mode
-This layer is a kludge of mappings, mostly pickers.
+Accessed by typing `Space` in [normal mode](#normal-mode).
+This layer is a kludge of mappings, mostly pickers.
| Key | Description | Command |
| ----- | ----------- | ------- |
@@ -263,8 +273,8 @@ This layer is a kludge of mappings, mostly pickers.
| `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` |
-| `g` | Open document diagnostics picker (**LSP**) | `diagnostics_picker` |
-| `G` | Open workspace diagnostics picker (**LSP**) | `workspace_diagnostics_picker`
+| `d` | Open document diagnostics picker (**LSP**) | `diagnostics_picker` |
+| `D` | Open workspace diagnostics picker (**LSP**) | `workspace_diagnostics_picker` |
| `r` | Rename symbol (**LSP**) | `rename_symbol` |
| `a` | Apply code action (**LSP**) | `code_action` |
| `'` | Open last fuzzy picker | `last_picker` |
@@ -277,7 +287,7 @@ This layer is a kludge of mappings, mostly pickers.
| `/` | Global search in workspace folder | `global_search` |
| `?` | Open command palette | `command_palette` |
-> TIP: Global search displays results in a fuzzy picker, use `space + '` to bring it back up after opening a file.
+> TIP: Global search displays results in a fuzzy picker, use `Space + '` to bring it back up after opening a file.
##### Popup
@@ -310,10 +320,10 @@ Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaire
| `]t` | Go to previous test (**TS**) | `goto_prev_test` |
| `]p` | Go to next paragraph | `goto_next_paragraph` |
| `[p` | Go to previous paragraph | `goto_prev_paragraph` |
-| `[space` | Add newline above | `add_newline_above` |
-| `]space` | Add newline below | `add_newline_below` |
+| `[Space` | Add newline above | `add_newline_above` |
+| `]Space` | Add newline below | `add_newline_below` |
-## Insert Mode
+## Insert mode
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
@@ -322,44 +332,47 @@ 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.
-| Key | Description | Command |
-| ----- | ----------- | ------- |
-| `Escape` | Switch to normal mode | `normal_mode` |
-| `Ctrl-x` | Autocomplete | `completion` |
-| `Ctrl-r` | Insert a register content | `insert_register` |
-| `Ctrl-w`, `Alt-Backspace`, `Ctrl-Backspace` | Delete previous word | `delete_word_backward` |
-| `Alt-d`, `Alt-Delete`, `Ctrl-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-j`, `Enter` | Insert new line | `insert_newline` |
-| `Backspace`, `Ctrl-h` | Delete previous char | `delete_char_backward` |
-| `Delete`, `Ctrl-d` | Delete next char | `delete_char_forward` |
-
-However, if you really want navigation in insert mode, this is supported. An
-example config that gives the ability to use arrow keys while still in insert
-mode:
+| 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` |
+
+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" = "move_line_up"
-"down" = "move_line_down"
-"left" = "move_char_left"
-"right" = "move_char_right"
-"C-b" = "move_char_left"
-"C-f" = "move_char_right"
-"A-b" = "move_prev_word_end"
-"C-left" = "move_prev_word_end"
-"A-f" = "move_next_word_start"
-"C-right" = "move_next_word_start"
-"A-<" = "goto_file_start"
-"A->" = "goto_file_end"
-"pageup" = "page_up"
-"pagedown" = "page_down"
-"home" = "goto_line_start"
-"C-a" = "goto_line_start"
-"end" = "goto_line_end_newline"
-"C-e" = "goto_line_end_newline"
-"A-left" = "goto_line_start"
+up = "no_op"
+down = "no_op"
+left = "no_op"
+right = "no_op"
+pageup = "no_op"
+pagedown = "no_op"
+home = "no_op"
+end = "no_op"
```
## Select / extend mode
@@ -387,7 +400,6 @@ Keys to use within picker. Remapping currently not supported.
| `PageDown`, `Ctrl-d` | Page down |
| `Home` | Go to first entry |
| `End` | Go to last entry |
-| `Ctrl-space` | Filter options |
| `Enter` | Open selected |
| `Ctrl-s` | Open horizontally |
| `Ctrl-v` | Open vertically |
@@ -411,8 +423,8 @@ Keys to use within prompt, Remapping currently not supported.
| `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 |
+| `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 |