# vim: \(BREAKING\) clean up keymap contexts \(\#14233\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/b0dbc80575d180c279e5f2ffc8b61d5db9814254)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: b0dbc80575d180c279e5f2ffc8b61d5db9814254

Requested commit: b0dbc80575d180c279e5f2ffc8b61d5db9814254

Commit: b0dbc80575d180c279e5f2ffc8b61d5db9814254

Tree: c1c43211e2127eec681d9614e94079b3cffd5b3f

Author: Conrad Irwin

Committer: GitHub

## Message

```
vim: (BREAKING) clean up keymap contexts (#14233)

Release Notes:

- vim: (BREAKING) Improved vim keymap contexts.

Previously `vim_mode == normal` was true even when operators were
pending, which led to bugs like #13789 and a requirement for custom
keymaps to exclude various conditions like (`!VimObject` and
`!VimWaiting`) to avoid bugs.

Now `vim_mode` will be set to `operator` or `waiting` in these cases as
described in [the docs](https://zed.dev/docs/vim#keybindings). For most
custom keymaps this change will be a no-op or an improvement, but if you
were deliberately relying on the old behaviour (if you were relying on
`VimObject` or `VimWaiting` becoming true) you will need to update your
keymap.

---------

Co-authored-by: Thorsten <thorsten@zed.dev>
```

## Parents

- [8e853e2b56567512ab4de8fa1e113845054b2ed7](https://git.cafe/gitcafe/zed/commit/8e853e2b56567512ab4de8fa1e113845054b2ed7?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/b0dbc80575d180c279e5f2ffc8b61d5db9814254?format=markdown)
