diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs index c645a526..9d6f843c 100644 --- a/alacritty/src/event.rs +++ b/alacritty/src/event.rs @@ -770,7 +770,7 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext for ActionCon if self.terminal.mode().contains(TermMode::VI) { // If we had search running when leaving Vi mode we should mark terminal fully damaged // to cleanup highlighted results. - if self.search_state.dfas().is_some() { + if self.search_state.dfas.take().is_some() { self.terminal.mark_fully_damaged(); } else { // Damage line indicator and Vi cursor. @@ -781,7 +781,10 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext for ActionCon self.clear_selection(); } - self.cancel_search(); + if self.search_active() { + self.cancel_search(); + } + self.terminal.toggle_vi_mode(); *self.dirty = true;