I'm trying to map C-S-[
and C-S-]
respectively to :tabprev
and tabnext
, but when I try that then I get "no lines in buffer".
A mapping like C-S-tab
works. I looked through :nmap
and didn't find an existing mapping. What am I missing?
Vi and Vim Stack Exchange is a question and answer site for people using the vi and Vim families of text editors. It only takes a minute to sign up.
Sign up to join this communityI'm trying to map C-S-[
and C-S-]
respectively to :tabprev
and tabnext
, but when I try that then I get "no lines in buffer".
A mapping like C-S-tab
works. I looked through :nmap
and didn't find an existing mapping. What am I missing?
Thanks to the link in the comment by @statox♦ I was able to figure this out.
This answer included a link to this question where the accepted answer explains that intercepting a <C-f>
is equivalent to intercepting a <C-F>
(technically <C-S-f>
) in gvim, because:
Vim reads characters from the terminal, which sends
^F
(ASCII code0x06
) for both Ctrl+f and Ctrl+Shift+f; Vim has no way of knowing whether you pressed the Shift key.
The solution is to just map C-[
and C-]
, which works well for me.
<c-[>
is an equivalent of <esc>
and <c-]>
is "Jump to the definition of the keyword under the cursor". You might want to use something else, e.g <leader>]
.