diff --git a/crates/vim/src/vim.rs b/crates/vim/src/vim.rs index 43dbdc6316..9fca9f139e 100644 --- a/crates/vim/src/vim.rs +++ b/crates/vim/src/vim.rs @@ -626,10 +626,23 @@ impl Vim { pub fn cursor_shape(&self) -> CursorShape { match self.mode { Mode::Normal => { - if self.operator_stack.is_empty() { - CursorShape::Block + if let Some(operator) = self.operator_stack.last() { + match operator { + // Navigation operators -> Block cursor + Operator::FindForward { .. } + | Operator::FindBackward { .. } + | Operator::Mark + | Operator::Jump { .. } + | Operator::Register + | Operator::RecordRegister + | Operator::ReplayRegister => CursorShape::Block, + + // All other operators -> Underline cursor + _ => CursorShape::Underline, + } } else { - CursorShape::Underline + // No operator active -> Block cursor + CursorShape::Block } } Mode::Replace => CursorShape::Underline,