最近,当我尝试使用 ctrl+n 或 ctrl+p 自动完成时,当有多个备选方案时,点击回车按钮将插入一个新行,而不是选择我想要的备选方案。
以前没有出现这种情况,可能是我安装的插件太多导致了冲突。检查所有这些插件的镜头剪辑并找出来源会很可怕。所以将内置的自动完成映射到其他一些键可能是一个解决方案,但我不知道该怎么做。
这不是一个大问题,但确实使编码变得不“流畅”。以前有人遇到过这种情况,您是如何处理的。
最近,当我尝试使用 ctrl+n 或 ctrl+p 自动完成时,当有多个备选方案时,点击回车按钮将插入一个新行,而不是选择我想要的备选方案。
以前没有出现这种情况,可能是我安装的插件太多导致了冲突。检查所有这些插件的镜头剪辑并找出来源会很可怕。所以将内置的自动完成映射到其他一些键可能是一个解决方案,但我不知道该怎么做。
这不是一个大问题,但确实使编码变得不“流畅”。以前有人遇到过这种情况,您是如何处理的。
简短的回答:你不需要<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>
. 对选定的菜单项认为“是”。
我刚刚修复了一个由 vim-autoclose 插件引起的非常相似的问题,方法是用 Auto-Pairs 插件替换它。我怀疑你的罪魁祸首是完全相同的,但如果你为你的插件使用病原体,那么追捕有罪的一方实际上并不算太糟糕 - 只需将一半的插件从~/.vim/bundle
(或任何它们所在的位置)移动到不同的文件夹中,重新启动 vim 并测试自动完成。如果它按预期工作,您知道您已移出的插件之一负责,因此您可以再次执行相同操作,直到缩小范围。
在此之前,您也可以尝试运行vim -u NONE
忽略您的 .vimrc 文件的运行 - 可能是您在自己身上偷偷摸摸,这是排除它的最快方法。
总之祝你好运。这花了我大约十分钟,经过可能一年的偶尔烦恼,我希望我早点花时间。