2

最近,当我尝试使用 ctrl+n 或 ctrl+p 自动完成时,当有多个备选方案时,点击回车按钮将插入一个新行,而不是选择我想要的备选方案。

以前没有出现这种情况,可能是我安装的插件太多导致了冲突。检查所有这些插件的镜头剪辑并找出来源会很可怕。所以将内置的自动完成映射到其他一些键可能是一个解决方案,但我不知道该怎么做。

这不是一个大问题,但确实使编码变得不“流畅”。以前有人遇到过这种情况,您是如何处理的。

4

2 回答 2

3

简短的回答:你不需要<cr>用来接受匹配。

vim 帮助中的片段:h popupmenu-keys

The behavior of the <Enter> key depends on the state you are in:
first state:      Use the text as it is and insert a line break.
second state:     Insert the currently selected match.
third state:      Use the text as it is and insert a line break.

In other words: If you used the cursor keys to select another entry in the
list of matches then the <Enter> key inserts that match.  If you typed
something else then <Enter> inserts a line break.

我建议您使用<c-n>and<c-p>切换到正确的映射,然后继续输入。通常这意味着我输入一个空格或其他一些标点符号,然后菜单关闭。我从不<cr>用来选择菜单项。但是,如果您真的想接受匹配,请使用<c-y>. 对选定的菜单项认为“是”。

于 2013-08-01T16:23:19.003 回答
0

我刚刚修复了一个由 vim-autoclose 插件引起的非常相似的问题,方法是用 Auto-Pairs 插件替换它。我怀疑你的罪魁祸首是完全相同的,但如果你为你的插件使用病原体,那么追捕有罪的一方实际上并不算太糟糕 - 只需将一半的插件从~/.vim/bundle(或任何它们所在的位置)移动到不同的文件夹中,重新启动 vim 并测试自动完成。如果它按预期工作,您知道您已移出的插件之一负责,因此您可以再次执行相同操作,直到缩小范围。

在此之前,您也可以尝试运行vim -u NONE忽略您的 .vimrc 文件的运行 - 可能是您在自己身上偷偷摸摸,这是排除它的最快方法。

总之祝你好运。这花了我大约十分钟,经过可能一年的偶尔烦恼,我希望我早点花时间。

于 2013-08-01T15:58:07.190 回答