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

Can't switch back from replace mode (R) to normal mode using mapped keys #4118

Closed
matrixersp opened this issue Oct 1, 2019 · 2 comments · Fixed by #4735
Closed

Can't switch back from replace mode (R) to normal mode using mapped keys #4118

matrixersp opened this issue Oct 1, 2019 · 2 comments · Fixed by #4735

Comments

@matrixersp
Copy link

matrixersp commented Oct 1, 2019

Describe the bug
If I use R to replace more than one character, I can't switch back to normal mode with the remapped keys jk ( I use jk to switch to back to normal mode instead of <esc>).

To Reproduce
Steps to reproduce the behavior:

  1. Press Shift + r
  2. Type a sequence of characters
  3. Press j then k

Expected behavior
I expect if I can switch from Replace mode to Normal mode using jk.

Screenshots
vscode-gif

Environment (please complete the following information):

  • Issue Type: Bug
  • Extension Name: vim
  • Extension Version: 1.11.0
  • OS Version: Linux x64 4.15.0-62-generic
  • VSCode version: 1.38.1

Additional context
I think it would be nice if we could do mapping for Replace mode, something like this:

"vim.replaceModeKeyBindingsNonRecursive": [
    {
      "before": ["j", "k"],
      "after": ["<esc>"]
    }
  ]
@desimpson
Copy link

I would love this.

@berknam berknam mentioned this issue Jul 16, 2020
10 tasks
@berknam
Copy link
Contributor

berknam commented Jul 16, 2020

PR #4735 fixes this. It uses the insertModeKeyBindings and insertModeKeyBindingsNonRecursive which are analogous to Vims imap and inoremap. Insert mode mappings are used both on insert mode and replace mode. I don't think there is a need for specific mappings just for replace mode.

The problem in this issue will be fixed once that PR gets merged.

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
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants