vim中的键盘键映射不响应控制键

时间:2012-06-07 12:48:24

标签: vim keymapping

我正在使用以下映射来管理窗口大小:

:nnoremap <kPlus> <C-W>+
:nnoremap <kMinus> <C-W>-
:nnoremap <kDivide> <C-W><
:nnoremap <kMultiply> <C-W>>

将控件前缀添加到地图窗口跳转没有任何影响:

:nnoremap <C-kDivide> <C-W>h
:nnoremap <C-kMultiply> <C-W>l

<C-kMultiply>的行为与<kMultiply>

相同

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

扩展ZyX所说的内容:

<C-kMultiply>这样的键可以在GVim中正常工作,GVim接收来自GUI环境的键盘输入,但由于控制字符的古老方式,它们无法在作为终端Vim输入的流中表示。在其中定义:

  

How control characters map to keyboards(维基百科)

控制修改器通过简单地将两个高位置零来工作,因此例如 G 10 00111)变为BEL 00 00111)。这意味着它只能使用单字节字符代码:没有办法将它应用于多字节转义序列,例如<kMultiply>实际发送的内容。

(这也是为什么你通常不能在终端中将 Ctrl Shift 结合起来:<C-G><C-g>结束一旦高位被清零,就作为相同的控制字符。)

面对这样一个无法代表的密钥组合会发生什么变化因终端而异:例如xterm将忽略修饰符并将<C-kMultiply>发送为<kMultiply>,而gnome-terminal 1}}将拒绝完全发送按键。