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



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

: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>相同

知道为什么吗?

扩展ZyX所说的话:

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

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

控制修饰符的工作原理是简单地将两个高位归零,例如 G1000111) 变为 BEL0000111)。这意味着它只能使用单字节字符代码:无法将其应用于多字节转义序列,例如<kMultiply>实际发送的内容。

(这也是为什么您通常不能在终端中将 CtrlShift 结合使用的原因:一旦高位归零,<C-G><C-g> 最终都会成为相同的控制字符。

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

最新更新