aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/keymap.md34
-rw-r--r--helix-term/src/keymap/default.rs19
2 files changed, 18 insertions, 35 deletions
diff --git a/book/src/keymap.md b/book/src/keymap.md
index 698b504c..da4433f3 100644
--- a/book/src/keymap.md
+++ b/book/src/keymap.md
@@ -315,10 +315,12 @@ Mappings in the style of [vim-unimpaired](https://github.com/tpope/vim-unimpaire
## Insert Mode
-We support many readline/emacs style bindings in insert mode for
-convenience. These can be helpful for making simple modifications
-without escaping to normal mode, but beware that you will not have an
-undo-able "save point" until you return to normal 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
+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.
| Key | Description | Command |
| ----- | ----------- | ------- |
@@ -327,23 +329,23 @@ undo-able "save point" until you return to normal mode.
| `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` |
-| `Alt-b`, `Ctrl-Left` | Backward a word | `move_prev_word_end` |
-| `Ctrl-b`, `Left` | Backward a char | `move_char_left` |
-| `Alt-f`, `Ctrl-Right` | Forward a word | `move_next_word_start` |
-| `Ctrl-f`, `Right` | Forward a char | `move_char_right` |
-| `Ctrl-e`, `End` | Move to line end | `goto_line_end_newline` |
-| `Ctrl-a`, `Home` | Move to line start | `goto_line_start` |
| `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` |
-| `Ctrl-p`, `Up` | Move to previous line | `move_line_up` |
-| `Ctrl-n`, `Down` | Move to next line | `move_line_down` |
-| `PageUp` | Move one page up | `page_up` |
-| `PageDown` | Move one page down | `page_down` |
-| `Alt->` | Go to end of buffer | `goto_file_end` |
-| `Alt-<` | Go to start of buffer | `goto_file_start` |
+
+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:
+
+```toml
+[keys.insert]
+up = "move_line_up"
+down = "move_line_down"
+left = "move_char_left"
+right = "move_char_right"
+```
## Select / extend mode
diff --git a/helix-term/src/keymap/default.rs b/helix-term/src/keymap/default.rs
index fd7ea457..f07d4028 100644
--- a/helix-term/src/keymap/default.rs
+++ b/helix-term/src/keymap/default.rs
@@ -355,25 +355,6 @@ pub fn default() -> HashMap<Mode, Keymap> {
"A-del" => delete_word_forward,
"C-s" => commit_undo_checkpoint,
- "left" => move_char_left,
- "C-b" => move_char_left,
- "down" => move_line_down,
- "up" => move_line_up,
- "right" => move_char_right,
- "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,
-
"C-k" => kill_to_line_end,
"C-u" => kill_to_line_start,