aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alacritty/src/event.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index 56e5b841..84af666a 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -396,8 +396,10 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
fn cancel_search(&mut self) {
self.terminal.cancel_search();
- // Recover pre-search state.
- self.search_reset_state();
+ // Recover pre-search state in vi mode.
+ if self.terminal.mode().contains(TermMode::VI) {
+ self.search_reset_state();
+ }
// Move vi cursor down if resize will pull from history.
if self.terminal.history_size() != 0 && self.terminal.grid().display_offset() == 0 {
@@ -513,6 +515,11 @@ impl<'a, N: Notify + 'a, T: EventListener> ActionContext<'a, N, T> {
// Stop search if there's nothing to search for.
self.search_reset_state();
self.terminal.cancel_search();
+
+ // Restart search without vi mode to clear the search origin.
+ if !self.terminal.mode().contains(TermMode::VI) {
+ self.start_search(self.search_state.direction);
+ }
} else {
// Create terminal search from the new regex string.
self.terminal.start_search(&regex);