Change summary
assets/keymaps/vim.json | 2 +-
crates/vim/src/normal.rs | 2 +-
crates/vim/src/test.rs | 4 ++++
3 files changed, 6 insertions(+), 2 deletions(-)
Detailed changes
@@ -131,7 +131,7 @@
}
},
{
- "context": "Editor && vim_mode == normal && vim_operator == none && !VimWaiting",
+ "context": "Editor && vim_mode == normal && (vim_operator == none || vim_operator == n) && !VimWaiting",
"bindings": {
"c": [
"vim::PushOperator",
@@ -484,7 +484,7 @@ pub fn substitute(vim: &mut Vim, count: usize, cx: &mut WindowContext) {
let selections = editor.selections.all::<Point>(cx);
for selection in selections.into_iter().rev() {
let end = if selection.start == selection.end {
- selection.start + Point::new(0, 1)
+ selection.start + Point::new(0, count as u32)
} else {
selection.end
};
@@ -117,4 +117,8 @@ async fn test_substitute(cx: &mut gpui::TestAppContext) {
cx.set_state(indoc! {"a«bcˇ»deˇfg\n"}, Mode::Normal);
cx.simulate_keystrokes(["s", "x"]);
cx.assert_editor_state("axˇdexˇg\n");
+
+ cx.set_state(indoc! {"ˇabc\n"}, Mode::Normal);
+ cx.simulate_keystrokes(["2", "s", "x"]);
+ cx.assert_editor_state("xˇc\n");
}