为什么我的映射:bY 不能在 gvim 中工作吗?

为什么我的映射:bY 不能在 gvim 中工作吗?

在我的.vimrc文件中,有以下两行:

noremap! <C-PageDown> :bnext <CR>
noremap! <C-PageUp>   :bprev <CR>

但它们不起作用!在插入模式下,输入

<C-v><C-PageDown>

回报

<C-PageDown>

(字面意思)同样如此<C-PageUp>,如果我尝试执行我得到的命令

:bnext

(加上换行符)。正常模式下没有任何效果。因此,我知道按键映射没有被我的 shell 吞噬,X但是还有什么问题可能出现呢?其他按键映射工作正常。

答案1

解决了!

noremap  <C-PageDown>           :bnext <CR>
noremap  <C-PageUp>             :bprev <CR>
inoremap <C_PageDown> <C-\><C-O>:bnext <CR>
inoremap <C_PageUp>   <C-\><C-O>:bprev <CR>

在插入模式下,键映射右侧的任何内容都会按字面意思插入,因此我们需要使用<C-O>which进入单个命令的正常模式。这可以防止在行尾<C-\>调用时发生的光标向左移动。<C-O>

另请注意,中间不能有空格<C-O>:bnext否则会被吃掉<C-O>

答案2

难道是因为这个键已经被vim用来切换标签页了?参见vims文档中的描述

答案3

:noremap 中的 n 用于普通模式,因此在插入模式下不起作用。如果您希望它在插入模式下工作,请使用 :imap。如果您尝试使用 <CV> 使其在插入模式下工作,我认为您正在寻找 <CO>。

相关内容