2012-06-07 45 views
2

我使用以下映射来管理窗口大小:映射键盘键不响应控制键

: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

因为没有这样的''控制字符? – sidyll

+0

好点。没有想到这一点;-(另一方面,为什么不会有这样的组合? – donnut

+0

试图绑定控制 - 'keypad x'到一个应用程序在XUbuntu。这个工程,所以控制字符确实存在 – donnut

回答

0

要展开什么ZYX说:

键,如<C-kMultiply>将在gVim的,接收从GUI环境下的键盘输入做工精细,但他们不可能充当终端Vim的输入流中表示,由于以控制字符在它定义古老的方式:

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

控制改性剂的工作原理是简单的调零2个HIG h位,因此例如G( 00111)变成BEL( 00111)。这意味着它只能使用单字节字符代码:没有办法将其应用于多字节转义序列,例如<kMultiply>实际发送的内容。

(这也是为什么你不能一般结合按Ctrl,在终端:既<C-G><C-g>结束为同一控制字符,一旦高位归零)

面对这样一个不可代表的组合键会发生什么变化,从终端到终端:例如,xterm将忽略修饰符并发送<C-kMultiply>作为<kMultiply>,而gnome-terminal将拒绝发送按键。