在Neovim的终端仿真器中进行Ctrl-h映射

时间:2015-11-20 18:30:25

标签: terminal neovim

我在init.vim中启用了以下映射:

tnoremap <Esc> <C-\><C-n>
tnoremap <C-h> <C-\><C-n><C-w>h
tnoremap <C-j> <C-\><C-n><C-w>j
tnoremap <C-k> <C-\><C-n><C-w>k
tnoremap <C-l> <C-\><C-n><C-w>l

nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

这些大大改善了Vim中的Windows导航。

但是,我注意到C-h在终端缓冲区中执行时没有按预期工作。在通常的终端会话上尝试此操作会导致Backspace操作。所以可能它似乎是这些替代组合键之一,例如C-i的{​​{1}}或Tab的{​​{1}}。但根据我的绑定,有没有办法让C-[在Neovim的终端会话中工作?

谢谢!

1 个答案:

答案 0 :(得分:3)

这个问题已经被广泛讨论here。原始Vim不依赖于terminfo,并且包含自己的补丁以正确处理C-h序列。 Neovim确实会考虑terminfo

简而言之,修复程序正在shell中执行这些命令:

infocmp $TERM | sed 's/kbs=^[hH]/kbs=\\177/' > $TERM.ti
tic $TERM.ti