Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consecutive characters break keybindings (but only when typed an odd number of times before the binding) #5084

Closed
talbenari1 opened this issue Jul 28, 2020 · 0 comments · Fixed by #4735

Comments

@talbenari1
Copy link

I have the following in my settings.json:

{
 "vim.insertModeKeyBindingsNonRecursive": [
    {
      "before": ["k", "j"],
      "after": ["<Esc>"]
    },
    {
      "before": ["j", "k"],
      "after": ["<Esc>"]
    }
  ]
}

Here's what happens:

  • If I type jk: Triggers escape
  • If I type kj: Triggers escape
  • If I type jjk: Inserts jjk (unexpected!)
  • If I type: kkj: Inserts kkj (unexpected!)
  • If I type jjjk: Inserts jj and then triggers escape
  • If I type jjjjk: Inserts jjjjk (unexpected!)

In other words, typing the first character of a keybinding an odd number of times before starting the keybinding prevents the keybinding from triggering.

Aside: this becomes a problem in my workflow when trying to type a word like block or obj and then trying to escape. For example, I can't type objjk because of this bug (and I can't type objkj because then it will insert ob, which is expected behavior). I have to resort to waiting for the keybinding timeout to trigger, or using the Touch Bar's escape, or something like that 😢.

@berknam berknam mentioned this issue Jul 28, 2020
10 tasks
J-Fields pushed a commit that referenced this issue Aug 16, 2020
This is a pretty massive change; see pull request #4735 for full details

Most notably:
- Support for operator-pending mode, including remaps and a half-cursor decoration
- Correct handling of ambiguous remaps with timeout
- Correct handling of recursive special case when the RHS starts with the LHS
- Correct handling of multi-key remaps in insert mode
- Failed movements that occur partway through a remap stop & discard the rest of the remap
- Implement `unmap` and `mapclear` in .vimrc

Refs #463, refs #4908
Fixes #1261, fixes #1398, fixes #1579, fixes #1821, fixes #1835
Fixes #1870, fixes #1883, fixes #2041, fixes #2234, fixes #2466
Fixes #2897, fixes #2955, fixes #2975, fixes #3082, fixes #3086
Fixes #3171, fixes #3373, fixes #3413, fixes #3742, fixes #3768
Fixes #3988, fixes #4057, fixes #4118, fixes #4236, fixes #4353
Fixes #4464, fixes #4530, fixes #4532, fixes #4563, fixes #4674
Fixes #4756, fixes #4883, fixes #4928, fixes #4991, fixes #5016
Fixes #5057, fixes #5067, fixes #5084, fixes #5125
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant