diff options
author | Zhanibek Adilbekov <zhanibek.adilbekov@proton.me> | 2024-02-28 17:59:29 +0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-28 11:59:29 +0000 |
commit | 22a9b497adea8869eba67dd153000d211d758382 (patch) | |
tree | 32f18e964480990d2bcaba11ceb1ff86c54ba3fb | |
parent | 94c85c31891c154d984f41a82401e0a7f782722e (diff) |
feat: add `CTRL+[` binding as `<Esc>` alias (#1787)
in Vim/Neovim there is alias for `<Esc>` mapping -- `<C-[>`. it is useful if
your `<Esc>` key is hard to hit on your keyboard.
for reference:
https://vimhelp.org/insert.txt.html#i_CTRL-%5B
https://neovim.io/doc/user/insert.html#i_CTRL-%5B
-rw-r--r-- | atuin/src/command/client/search/interactive.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/atuin/src/command/client/search/interactive.rs b/atuin/src/command/client/search/interactive.rs index bd25cf7b..514b42b5 100644 --- a/atuin/src/command/client/search/interactive.rs +++ b/atuin/src/command/client/search/interactive.rs @@ -189,11 +189,15 @@ impl State { } let ctrl = input.modifiers.contains(KeyModifiers::CONTROL); + let esc_allow_exit = !(self.tab_index == 0 && self.keymap_mode == KeymapMode::VimInsert); // core input handling, common for all tabs match input.code { KeyCode::Char('c' | 'g') if ctrl => return InputAction::ReturnOriginal, - KeyCode::Esc if !(self.tab_index == 0 && self.keymap_mode == KeymapMode::VimInsert) => { + KeyCode::Esc if esc_allow_exit => { + return Self::handle_key_exit(settings); + } + KeyCode::Char('[') if ctrl && esc_allow_exit => { return Self::handle_key_exit(settings); } KeyCode::Tab => { @@ -320,7 +324,7 @@ impl State { _ => {} }, KeymapMode::VimInsert => { - if input.code == KeyCode::Esc { + if input.code == KeyCode::Esc || (ctrl && input.code == KeyCode::Char('[')) { self.set_keymap_cursor(settings, "vim_normal"); self.keymap_mode = KeymapMode::VimNormal; return InputAction::Continue; |