现在我正在使用 vim 中的自动补全功能,并且我已经决定使用supertab来处理我的补全功能。虽然它运行得非常顺利并且(我认为)完全按照它的设计,但我想知道如何改变一些东西。
首先,我在 Ubuntu 12.04LTS 上运行 7.3.429
set completeopt=menuone,preview,longest
这样我就可以使用 supertab 进行 bash 类型的自动完成,并且默认完成。
假设我的文件中有以下内容:
aaabbbcccddd
aaabbccddeef
aaabbcddeeff
如果我键入aa
并点击Tab,那么 vim 会发现它aaabb
是匹配项中最长的公共字符串,因此它会插入aaabb
并显示一个包含三个选项的菜单。如果我真的想要这些选项之一,那么一切都很好。但也许我真的想要aaaaazzzzz
,但没有意识到我还没有输入它。
有没有一个好方法可以对 vim 说:“哦,对不起!我不是故意要完成制表符的!请假装我没有。”
现在,对我来说显而易见的选择是:
- 点击Tab或Shift+Tab足够的时间回到我的初始状态。但是如果有很多相似的词,尤其是长度不同的词,那就很烦人了。
- 不管需要多少次都按退格键,或者其他一些天真的删除。但这些肯定是不必要的击键。
- 点击Esc+u进行撤消,但这会撤消我的整个单词(如果我快速输入,则会撤消更多)。这是完全不能接受的。之后,我需要重新进入插入模式并重新输入。总的。
- 点击Ctrl+U撤消而不离开插入模式。但这也有去除太多的趋势。
- 点击Ctrl+W删除最后一个单词。虽然我可以在不退出插入模式的情况下执行此操作,但我仍然需要重新输入。这是迄今为止我发现的最好的。
如果我没有longest
启用,那么我可以使用Ctrl+ E,它会退出菜单而不插入任何其他内容。但由于最长是打开的,它会停止自动完成,但会留下最长的常见匹配项。
当然,必须有更好的方法来做到这一点。