在我的.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>。