【问题标题】:Why do <C-PageUp> and <C-PageDown> not work in vim?为什么 <C-PageUp> 和 <C-PageDown> 在 vi​​m 中不起作用?
【发布时间】:2009-11-29 01:48:05
【问题描述】:

我在 Windows 上安装了 Vim 7.2。在 GVim 中,&lt;C-PageUp&gt;&lt;C-PageDown&gt; 默认用于选项卡之间的导航。但是,它不适用于 Vim。

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

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

但是,地图和作品。

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

有人知道为什么吗?

【问题讨论】:

    标签: dictionary vim tabs


    【解决方案1】:

    您描述的问题通常是由于vim的终端设置不知道给定键的正确字符序列(在控制台上,所有击键都转换为字符序列)。这也可能是由于您的控制台没有为您尝试按下的键发送不同的字符序列。

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

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

    &lt;CTRL-V&gt;&lt;CTRL-PAGEUP&gt; 是字面上的那些键,而不是“小于、C、T、R 等”。

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

    【讨论】:

    • 原来是第一个问题。我按字面意思输入“:map”,然后按键盘中的 Ctrl-PageUp,然后按“:tabp”。有用。但它在 _vimrc 中显示如下。地图¿ :tabp 地图Î :tabn
    • @g33kz0r:链接死了。那么是什么为你解决了这个问题?或者删除评论;-)
    【解决方案2】:

    这对许多人来说似乎很明显,但 konsole 用户应该知道,某些版本将 ctrl-pageup / ctrl-pagedown 作为辅助绑定绑定到它自己的选项卡式窗口功能(如果您不使用该功能可能不明显)。 只需从“配置快捷方式”菜单中清除它们,它们就可以正确地在 vim 中为我工作。我猜其他终端可能默认启用了类似的功能。

    【讨论】:

    • 我在使用 gnome-terminal 时遇到了同样的问题和解决方案。
    【解决方案3】:

    我正在添加这个答案,从vi & Vim 获取详细信息,以将已经给出/接受的答案与一些对我来说非常重要的细节整合在一起。

    已经提出的答案

    the other answer 说的是真的:

    • map &lt;C-PageUp&gt; :echo "hello"&lt;CR&gt; 不起作用,因为 Vim 不知道键码 &lt;C-PageUp&gt; 对应的转义序列;
    • 一种解决方案是显式键入转义序列:map ^[[5^ :echo "hello"&lt;CR&gt;,其中转义序列^[[5^(通常与终端不同)可以通过Ctrl+VCtrl+PageUp.

    另一个重要细节

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

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

    使用附加功能键代码之一(您最多可以使用&lt;F37&gt;)。同样,您可以在您的 .vimrc 的一个位置(或从您的 .vimrc 获取的另一个专用文件中,为什么不呢?)。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多