vim mintty / putty mapping <c-tab> <c-s-tab> </c-s-tab> </c-tab>

时间:2014-05-30 20:45:19

标签: vim tabs mapping

在我的gvim下,我使用&lt; C-Tab&gt;和&lt; C-S-Tab&gt;切换缓冲区。然而,在我的vim cygwin / mintty下,这些映射不起作用。

如果我尝试&lt; C-V&gt;&lt; C-Tab&gt;与$vim -u NONE,我明白了:

&lt; C-Tab&gt;

[1;5I &lt; C-S-Tab&gt;的

[1;6I

如何为这些密钥代码制作映射?

此外,如果我执行:unmap <C-Tab>并在正常模式下按Ctrl + Tab,我将进入插入模式。

有任何线索吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试像这样设置terminal's keycodes to vim's keycodes

set <c-tab>=^[[1;5I

或者您可能需要找到一个无法使用的密钥,例如<f13>,并将其映射到终端代码,然后将该密钥映射到<c-tab>。像这样:

set <f13>=^[[1;5I
map <f13> <c-tab>
map! <f13> <c-tab>

现在我必须提醒您,如果您的终端没有向vim发送唯一的密钥代码,这种方法可能无效。

我个人会简单地避免这种映射,并使用类似[b]b的东西来移动缓冲区。 Tim Pope的Unimpaired提供了这些精确的映射和一些非常方便的映射。

或者我建议不要一次移动一个缓冲区。有更好的方法直接进入缓冲区:

  • 如果您知道要返回,请设置一个大写标记,例如mA {并返回'A
  • 使用<c-6>转到上一个缓冲区(称为替代缓冲区)
  • 使用ctags / cscope直接跳转到您想去的地方<c-]>
  • :b:sb可以使用部分文件名和整数。例如:b foo:b foo*bar
  • 使用有助于查找缓冲区的插件。 CtrlP为缓冲区提供模糊查找器

如需更多帮助,请参阅:

:h tags-and-searches
:h cscope
:h ctrl-6
:h m
:h :b

答案 1 :(得分:0)

找到适合我的解决方案。
MinTTY使用Ctrl + Tab和Shift + Ctrl + Tab切换会话(当你打开多个薄荷窗口时)。 首先,您需要通过进入选项&gt;来禁用该行为。键。在那里你禁用了与Ctrl + Tab相关的选项 然后你的vim配置应该可以工作。

注意,您也可以将SwitchShortcuts=no添加到~/.minttyrc,而不是使用mintty的选项菜单来禁用此快捷方式。

我在mintty wiki上找到了这些说明,屏幕上有一个关于Ctrl + Tab的部分。