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>

知道为什么吗?

4

1 回答 1

0

扩展 ZyX 所说的:

类似的键<C-kMultiply>在 GVim 中可以正常工作,它从 GUI 环境接收键盘输入,但是由于在其中定义控制字符的古老方式,它们不可能在用作终端 Vim 输入的流中表示:

控制字符如何映射到键盘(维基百科)

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

(这也是为什么您通常不能在终端中Ctrl与, 结合使用:一旦高位清零,Shift两者<C-G>并最终成为相同的控制字符。)<C-g>

面对这种无法表示的组合键会发生什么因终端而异:xterm例如,将忽略修饰符并发送<C-kMultiply>as <kMultiply>,而gnome-terminal将完全拒绝发送按键。

于 2012-07-26T07:17:07.850 回答