I'm using zsh in vi-mode.

When I go to normal mode with ESC and then back into insert mode (for example using i, a or s), the line editor kind of "protects" the part of the line in front of the char, at which I was when re-entering insert mode.

I fixed it for the backspace char by rebinding it with

bindkey "^?" backward-delete-char

But there are still other bindings like ^W that don't work out of the box (probably because they are bound to vi-*).

If I understand it correctly, this behavior is normal to vi.

Is there's a way to make zle behave like vim without having to rebind so many keys?

1 Answer 1


AFAICT, the only problematic widgets are:


So you could do

zle -A kill-whole-line vi-kill-line
zle -A backward-kill-word vi-backward-kill-word
zle -A backward-delete-char vi-backward-delete-char
  • cntl-u still seems to be affected by the normal/insert mode switch. Commented Sep 16, 2019 at 20:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .