9
Mapping to (discuss.tchncs.de)

Hi, I want to try Neovim and am currently setting it up. I want an easier way to type or <C-[>, so I added these keymaps:

vim.keymap.set("", "<C-Space>", "<C-[>")
vim.keymap.set("!", "<C-Space>", "<C-[>")

But this does weird stuff: In insert, visual and normal mode it seems to work and pressing CTRL+Space brings me back to normal mode or does nothing. But when entering a colon-command, pressing CTRL+Space acts as if I had pressed Enter. When typing "r" (single character replace) and then CTRL+Space, it replaces the character by a space, as without the mapping.

The same applies when mapping other keys than instead (the terminal seems to send correctly), or when mapping to instead of <C-[>.

What's going on here and how can I get the mapping to work? Thanks for any help!

top 2 comments
sorted by: hot top controversial new old
[-] Oinks 2 points 5 days ago* (last edited 5 days ago)

You can also use <C-C> to quit command mode instead (and this one works in keymaps). It also works in Insert mode but doesn't trigger the InsertLeave event, which might upset some plugins.

As far as I know the character pending mode thing that r does is a bit unique in that it isn't insert mode, but also not quite replace or operator pending mode. If there's a way to remap any key to work with r then I'm not aware of it.

Have you considered instead remapping <Esc> on an OS level? The XKB option caps:escape turns your Caps Lock key into an additional Escape key, which is even easier to type than <C-Space>.

[-] hallettj@leminal.space 1 points 5 days ago

For the r case I think you need to set the mapping in "operator pending" mode, which you get by putting "o" in the same position you already have "!".

I don't know what the issue is with command mode.

There is plenty of precedent for custom escape bindings, often using jk or jj. You might be able to find examples to get an idea of the best way to set up those bindings.

There might be an issue with <C-space> in particular if it has existing mappings in certain modes. I know that auto-complete plugins often use that mapping to make the completions menu appear. There might be some interaction with that mapping specifically with plugins you're using, or with built-in behavior. I suggest experimenting with a different mapping to narrow down whether problems are due to the way you are writing mappings, or to a specific interaction with that key sequence.

this post was submitted on 22 Oct 2025
9 points (100.0% liked)

Neovim

2637 readers
2 users here now

founded 2 years ago
MODERATORS