Keep arrow and special keys in insert (#3915)
* Keep arrow and special keys in insert Advanced users won't need it and is useful for beginners. Revert part of #3671. * Change text for insert mode section Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> * Remove ctrl-up/down in insert * Reorganize insert keys and docs * Improve page up experience on last tutor The last tutor page can page down multiple times and it will break the heading on the 80x24 screen paging when reaching the last page, this keeps the style the same and make sure page up and down won't break it. Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
This commit is contained in:
parent
1d8bb2249b
commit
3d59d3f8be
3 changed files with 62 additions and 53 deletions
|
@ -314,7 +314,7 @@ Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaire
|
|||
| `[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
|
||||
|
@ -326,42 +326,30 @@ experience.
|
|||
| 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`, `Ctrl-Backspace` | Delete previous word | `delete_word_backward` |
|
||||
| `Alt-d`, `Alt-Delete`, `Ctrl-Delete` | Delete next word | `delete_word_forward` |
|
||||
| `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` |
|
||||
| `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:
|
||||
These keys are not recommended, but are included for new users less familiar
|
||||
with modal editors.
|
||||
|
||||
```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"
|
||||
```
|
||||
| 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` |
|
||||
|
||||
## Select / extend mode
|
||||
|
||||
|
|
|
@ -343,24 +343,27 @@ pub fn default() -> HashMap<Mode, Keymap> {
|
|||
let insert = keymap!({ "Insert mode"
|
||||
"esc" => normal_mode,
|
||||
|
||||
"backspace" => delete_char_backward,
|
||||
"C-h" => delete_char_backward,
|
||||
"del" => delete_char_forward,
|
||||
"C-d" => delete_char_forward,
|
||||
"ret" => insert_newline,
|
||||
"C-j" => insert_newline,
|
||||
"tab" => insert_tab,
|
||||
"C-w" => delete_word_backward,
|
||||
"A-backspace" => delete_word_backward,
|
||||
"A-d" => delete_word_forward,
|
||||
"A-del" => delete_word_forward,
|
||||
"C-s" => commit_undo_checkpoint,
|
||||
|
||||
"C-k" => kill_to_line_end,
|
||||
"C-u" => kill_to_line_start,
|
||||
|
||||
"C-x" => completion,
|
||||
"C-r" => insert_register,
|
||||
|
||||
"C-w" | "A-backspace" => delete_word_backward,
|
||||
"A-d" | "A-del" => delete_word_forward,
|
||||
"C-u" => kill_to_line_start,
|
||||
"C-k" => kill_to_line_end,
|
||||
"C-h" | "backspace" => delete_char_backward,
|
||||
"C-d" | "del" => delete_char_forward,
|
||||
"C-j" | "ret" => insert_newline,
|
||||
"tab" => insert_tab,
|
||||
|
||||
"up" => move_line_up,
|
||||
"down" => move_line_down,
|
||||
"left" => move_char_left,
|
||||
"right" => move_char_right,
|
||||
"pageup" => page_up,
|
||||
"pagedown" => page_down,
|
||||
"home" => goto_line_start,
|
||||
"end" => goto_line_end_newline,
|
||||
});
|
||||
hashmap!(
|
||||
Mode::Normal => Keymap::new(normal),
|
||||
|
|
|
@ -1054,6 +1054,24 @@ letters! that is not good grammar. you can fix this.
|
|||
|
||||
|
||||
|
||||
=================================================================
|
||||
= =
|
||||
=================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=================================================================
|
||||
This tutorial is still a work-in-progress.
|
||||
More sections are planned.
|
||||
|
|
Loading…
Add table
Reference in a new issue