From 0d3131facde6c77e8277fa8a45eac022e690e264 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 6 Aug 2022 23:54:22 +0200 Subject: [PATCH] Add more readline-like key bindings --- src/ui/util.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/ui/util.rs b/src/ui/util.rs index 2449459..d4fde12 100644 --- a/src/ui/util.rs +++ b/src/ui/util.rs @@ -40,13 +40,21 @@ pub fn list_editor_key_bindings( if char_filter('\n') { bindings.binding("enter+", "insert newline"); } - bindings.binding("backspace", "delete before cursor"); - bindings.binding("delete", "delete after cursor"); + + // Editing + bindings.binding("ctrl+h, backspace", "delete before cursor"); + bindings.binding("ctrl+d, delete", "delete after cursor"); bindings.binding("ctrl+l", "clear editor contents"); if can_edit_externally { bindings.binding("ctrl+e", "edit in $EDITOR"); } - bindings.binding("arrow keys", "move cursor"); + + bindings.empty(); + + // Cursor movement + bindings.binding("ctrl+b, ←", "move cursor left"); + bindings.binding("ctrl+f, →", "move cursor right"); + bindings.binding("↑/↓", "move cursor up/down"); } pub fn handle_editor_key_event( @@ -68,14 +76,14 @@ pub fn handle_editor_key_event( // Editing key!(Char ch) if char_filter(ch) => editor.insert_char(terminal.frame(), ch), - key!(Backspace) => editor.backspace(terminal.frame()), - key!(Delete) => editor.delete(), + key!(Ctrl + 'h') | key!(Backspace) => editor.backspace(terminal.frame()), + key!(Ctrl + 'd') | key!(Delete) => editor.delete(), key!(Ctrl + 'l') => editor.clear(), - key!(Ctrl + 'e') if can_edit_externally => editor.edit_externally(terminal, crossterm_lock), + key!(Ctrl + 'e') if can_edit_externally => editor.edit_externally(terminal, crossterm_lock), // TODO Change to some other binding // Cursor movement - key!(Left) => editor.move_cursor_left(terminal.frame()), - key!(Right) => editor.move_cursor_right(terminal.frame()), + key!(Ctrl + 'b') | key!(Left) => editor.move_cursor_left(terminal.frame()), + key!(Ctrl + 'f') | key!(Right) => editor.move_cursor_right(terminal.frame()), key!(Up) => editor.move_cursor_up(terminal.frame()), key!(Down) => editor.move_cursor_down(terminal.frame()),