2012-06-07 84 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將拒絕發送按鍵。