diff --git a/book/src/keymap.md b/book/src/keymap.md index 0550e57f3f3b..b3f87a05390f 100644 --- a/book/src/keymap.md +++ b/book/src/keymap.md @@ -350,7 +350,7 @@ experience. | `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-h`, `Backspace`, `Shift-Backspace` | Delete previous char | `delete_char_backward` | | `Ctrl-d`, `Delete` | Delete next char | `delete_char_forward` | | `Ctrl-j`, `Enter` | Insert new line | `insert_newline` | @@ -431,7 +431,7 @@ 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 | +| `Backspace`, `Ctrl-h`, `Shift-Backspace` | 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 | diff --git a/helix-term/src/keymap/default.rs b/helix-term/src/keymap/default.rs index 01184f80edcd..e0c3e158bb29 100644 --- a/helix-term/src/keymap/default.rs +++ b/helix-term/src/keymap/default.rs @@ -79,7 +79,7 @@ pub fn default() -> HashMap { "s" => select_regex, "A-s" => split_selection_on_newline, - "A-_" => merge_consecutive_selections, + "A-_" | "A-S-minus" => merge_consecutive_selections, "S" => split_selection, ";" => collapse_selection, "A-;" => flip_selections, @@ -167,8 +167,8 @@ pub fn default() -> HashMap { "(" => rotate_selections_backward, ")" => rotate_selections_forward, - "A-(" => rotate_selection_contents_backward, - "A-)" => rotate_selection_contents_forward, + "A-(" | "A-S-9" => rotate_selection_contents_backward, + "A-)" | "A-S-0" => rotate_selection_contents_forward, "A-:" => ensure_selections_forward, @@ -313,7 +313,7 @@ pub fn default() -> HashMap { "|" => shell_pipe, "A-|" => shell_pipe_to, "!" => shell_insert_output, - "A-!" => shell_append_output, + "A-!" | "A-S-1" => shell_append_output, "$" => shell_keep_pipe, "C-z" => suspend, @@ -363,7 +363,7 @@ pub fn default() -> HashMap { "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-h" | "backspace" | "S-backspace" => delete_char_backward, "C-d" | "del" => delete_char_forward, "C-j" | "ret" => insert_newline, "tab" => insert_tab, diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index f297b44eb08b..77b9a6ce1d1a 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -1447,11 +1447,11 @@ impl Component for EditorView { } fn canonicalize_key(key: &mut KeyEvent) { - if let KeyEvent { - code: KeyCode::Char(_), - modifiers: _, - } = key - { - key.modifiers.remove(KeyModifiers::SHIFT) + match key { + KeyEvent { + code: KeyCode::Char(char), + modifiers: _, + } if char.is_alphabetic() => key.modifiers.remove(KeyModifiers::SHIFT), + _ => (), } } diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs index 5fb6745a90e5..e84dae98f434 100644 --- a/helix-term/src/ui/prompt.rs +++ b/helix-term/src/ui/prompt.rs @@ -513,7 +513,7 @@ impl Component for Prompt { alt!('d') | alt!(Delete) | ctrl!(Delete) => self.delete_word_forwards(cx.editor), ctrl!('k') => self.kill_to_end_of_line(cx.editor), ctrl!('u') => self.kill_to_start_of_line(cx.editor), - ctrl!('h') | key!(Backspace) => { + ctrl!('h') | key!(Backspace) | shift!(Backspace) => { self.delete_char_backwards(cx.editor); (self.callback_fn)(cx, &self.line, PromptEvent::Update); }