为什么<c-pageup>和<c-pagedown>在vim中不起作用?</c-pagedown> </c-pageup>

时间:2009-11-29 01:48:05

标签: dictionary vim tabs

我在Windows上安装了Vim 7.2。在GVim中,默认情况下<C-PageUp><C-PageDown>适用于标签之间的导航。但是,它对Vim不起作用。

我甚至在_vimrc中添加了以下行,但它仍然不起作用。

map <C-PageUp> :tabp<CR>
map <C-PageDown> :tabn<CR>

但是,地图和作品。

map <C-left> :tabp<CR>
map <C-right> :tabn<CR>

有人知道为什么?

3 个答案:

答案 0 :(得分:9)

您描述的问题通常是由vim的终端设置引起的,因为他们不知道给定密钥的正确字符序列(在控制台上,所有键击都变成了一系列字符)。它也可能是由于您的控制台没有为您尝试按下的键发送明确的字符序列。

如果这是前一个问题,做这样的事情可以解决它:

:map <CTRL-V><CTRL-PAGEUP> :tabp<CR>

<CTRL-V><CTRL-PAGEUP>字面意思是那些键,而不是“小于,C,T,R,......等。”

如果是后一个问题,那么您需要调整终端程序的设置或获取不同的终端程序。 (我不确定Windows中实际存在哪些选项。)

答案 1 :(得分:3)

对于许多人来说这似乎是显而易见的,但是konsole用户应该知道某些版本将ctrl-pageup / ctrl-pagedown绑定为它自己的选项卡式窗口功能的辅助绑定(如果您不使用该功能,这可能不明显) 。 只需从“配置快捷方式”菜单中清除它们,即可让我们正确使用vim。我猜其他终端可能默认具有相似的功能。

答案 2 :(得分:0)

我要添加这个答案,从vi & Vim中获取详细信息,以将已经给出/接受的内容与对我来说非常重要的更多细节进行整合。

建议的答案

the other answer说的是真的

  • map <C-PageUp> :echo "hello"<CR>不起作用,因为Vim不知道键码<C-PageUp>对应什么转义序列;
  • 一种解决方案是显式键入转义序列:map ^[[5^ :echo "hello"<CR>,其中转义序列^[[5^(通常因终端而异)可以通过 Ctrl + V < / kbd> Ctrl + PageUp

另外一个重要细节

另一方面,对我来说最好的解决方案是

set <F13>=^[[5^
map <F13> :echo "hello"<CR>

,它使用其他功能键代码之一(最多可以使用<F37>)。同样,您可能在自己的set keycode=escapesequence中(或者在从.vimrc来的另一个专用文件中,一堆.vimrc在一起),为什么? >