如何在vim中映射Shift-Tab? (Cygwin,Windows cmd.exe)

时间:2011-05-25 18:33:20

标签: windows vim tabs cygwin key

我在这里看到一些关于making Shift-Tab work in vim的条目,但是它们都没有解决在Cygwin中运行在Windows命令提示符下的失败。在那个环境中,Shift-Tab对我来说非常像一个未移位的选项卡,我的重新映射尝试失败了:

  • :imap <S-Tab> ^D [这是一个真正的Ctrl-D,在它之前用Ctrl-V输入]
  • :imap [在此输入Ctrl-V,Shift-Tab;插入了一个Tab字符]

所以似乎忽略了Shift修饰符。有关如何进行的任何想法?感谢。

3 个答案:

答案 0 :(得分:2)

这在Cygwin控制台中不起作用,因为它为 Tab Shift + Tab 发送相同的密码:{{1 }}

您可能需要安装Cygwin的mintty终端模拟器,它会发送 Shift + Tab 的标准键码:^I

答案 1 :(得分:1)

我建议您删除它并安装native version,而不是弄乱Cygwin版本。这样,即使从bash shell启动Vim,也可以毫无问题地映射Shift-Tab。

答案 2 :(得分:0)

我现在没有窗口,但看看你的vimrc是否包含

behave mswin
source ...\mswin.vim

在那种情况下,

:e +g/mswin/norm!\ 0i" $MYVIMRC

应该自动评论这些。重新启动vim,并检查是否存在映射:

:verbose map <S-Tab>

将显示任何现有映射,以及最后定义的位置,因此您可以找到导致此问题的脚本/插件(:he :verbose-cmd

HTH


更新 到评论

嗯 - 闷闷不乐,结果that Shift-Tab is magically impossible with Win32 Consoles。从来没有注意到。

也许是因为我

  • 目前使用 mintty 来提供更好的体验(像复制粘贴一样的Unix,真正的替代终端,更多性能以及重新附加屏幕会话等)
  • 可能已经调整了CompletionChar setting,虽然这对我来说似乎是一种松散的饲料

你能尝试一下吗?我想我多年来已经注意到这种毛茸茸的不相容性了。但是,你永远不会知道:)