4

I'm trying to remap Control + [hjkl] to navigate among splits, by setting this in my rc file:

" splits navigation
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

However, <C-h> isn't working; it moves the cursor left a character, as if I had hit backspace (i.e. it traverses lines, unlike my h). The other movements work.

Asking (neo)vim for mapping information about <C-h> doesn't show anything suspicious looking:

:verbose map <C-h>
n  <C-H>         <C-W>h
        Last set from ~/workspace/dotfiles/.nvimrc

However, if I ask about <C-j> (which works as expected), it says that <NL> is involved?

:verbose map <C-j>
n  <NL>          <C-W>j
        Last set from ~/workspace/dotfiles/.nvimrc

Changing the order of my nnoremaps doesn't seem to change the behavior.

How should I debug this?

4
  • 2
    I don't know the details, so for now I'll just comment: I'm pretty sure this has to do with a special key code created with <C-h>. If you try it in a terminal, you will see a similar behaviour. Also see :h backspace. Mar 10, 2015 at 21:47
  • Thanks for the pointer @KarlYngveLervåg. May be worth noting that I use the Dvorak keyboard layout, which places the "h" letter underneath the J key (the "j" letter is underneath the C key). I mention this because :h backspace notes that "<NL>" is related to "CTRL-J".
    – alxndr
    Mar 10, 2015 at 22:16
  • 1
    Worth trying as a workaround: noremap <C-h> <c-w><c-h> (i.e. <c-h> instead of h) as they are equivalent
    – jalanb
    Mar 12, 2015 at 12:00
  • @jalanb replacing my <C-h> remap with your suggestion causes an audible bell, and no cursor movement. (Pressing <C-w><C-h> does work jump to the split to the left.)
    – alxndr
    Mar 12, 2015 at 17:47

1 Answer 1

4

This is due to a bug in Neovim.

A suggested workaround in that bug is to run the following commands to adjust your terminal's terminfo entry to match what Neovim expects:

infocmp $TERM | sed 's/kbs=^[hH]/kbs=\\177/' > $TERM.ti
tic $TERM.ti
3
  • This got flagged as low quality. Perhaps you could add in the information in github.com/neovim/neovim/issues/2048#issuecomment-78045837 which seems to have a workaround?
    – muru
    Mar 12, 2015 at 19:29
  • @mur Or close the question because it's likely not going to be useful long term. vi.SE isn't a bug reporting forum.
    – jamessan
    Mar 12, 2015 at 19:31
  • 1
    From the question, it's not that obvious this is a bug... This question is probably flagged automatically because it's below a certain numbers of characters & has a link. Mar 12, 2015 at 19:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.