通常,插入模式完成(<C-n>)会在我第一次按<C-n>时插入正确的单词,但并非总是如此。因此,我希望Vim在按<C-n>时插入它认为最佳的匹配项,但是如果正确的匹配项未显示或在列表中很长一段距离,仍然允许我在以后取消此插入。

我当然可以对这种行为进行编码,但是我觉得应该有一个标准的键(组合)来做到这一点。有人可以向我指出正确的方向吗?

奖金问题:是否可以使用另一个键来获得最长的匹配项(就像我按<C-n>之前一样)?

为了它的价值,我在用completeopt=menu

评论

ctrl-u在寻找什么?

不,ctrl -u似乎删除了整行。我正在寻找仅删除按ctrl-n插入的文本的组合。

我的第一个念头是“这里不是c-g通常取消键的工作吗?”,然后我意识到那是emacs。几天前的学习使我腐败了,我将沐浴在一条神圣的河流中,净化自己!

#1 楼

来自:h complete_CTRL-E

                                                        *complete_CTRL-E*
When completion is active you can use CTRL-E to stop it and go back to the
originally typed text.  The CTRL-E will not be inserted.


此外,如果您说输入a然后输入^P,您会得到一个很长的列表,您可以按^N
返回您的带有补全弹出框的原始文本仍处于活动状态。然后,您可以键入其他字符以缩小完成列表。

评论


那正是我想要的。我还没有意识到ctrl-p也会带我回到原始输入。谢谢。

–职业
16/12/22在11:00

@Octaviour,我发现ctrl-p通常比ctrl-n更有用,因为它会在您所在位置之前(而不是之后)搜索最接近的匹配项。因此,如果您刚刚写了一个单词,则如果您需要重复该单词,则ctrl-p会迅速向您显示同一单词(例如,在代码中再次使用相同的变量)

– Shahbaz
17年1月7日在17:20

是的,正是出于这个原因,我出于习惯写了^ P。

– Antony
17年1月7日在17:23