Skip to content

Commit 02f551d

Browse files
authored
Move left when exiting insert mode (#699)
Signed-off-by: Andrei Stan <[email protected]>
1 parent ab1b47e commit 02f551d

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/edit_mode/vi/mod.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,17 @@ impl EditMode for Vi {
136136
}
137137
(_, KeyModifiers::NONE, KeyCode::Esc) => {
138138
self.cache.clear();
139-
self.mode = ViMode::Normal;
140-
ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint])
139+
140+
ReedlineEvent::Multiple(vec![
141+
if self.mode == ViMode::Insert {
142+
self.mode = ViMode::Normal;
143+
ReedlineEvent::Left
144+
} else {
145+
ReedlineEvent::None
146+
},
147+
ReedlineEvent::Esc,
148+
ReedlineEvent::Repaint,
149+
])
141150
}
142151
(_, KeyModifiers::NONE, KeyCode::Enter) => {
143152
self.mode = ViMode::Insert;
@@ -188,7 +197,11 @@ mod test {
188197

189198
assert_eq!(
190199
result,
191-
ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint])
200+
ReedlineEvent::Multiple(vec![
201+
ReedlineEvent::Left,
202+
ReedlineEvent::Esc,
203+
ReedlineEvent::Repaint
204+
])
192205
);
193206
assert!(matches!(vi.mode, ViMode::Normal));
194207
}

0 commit comments

Comments
 (0)