Vim完成-在用Enter键选择建议后,总是取消换行


11

有时,在使用Enter键选择建议(从按Ctrl-N时出现的完成弹出窗口)后,Vim会插入换行符并将光标移至下一行。这并不总是发生的-Vim似乎对此很聪明,只有在认为这是我想要的内容时才会将我带到下一行。

但是,我想禁用此行为(因为它并不总是很聪明),所以我将总是必须自己手动按Enter键移动到下一行。这可能吗?

Answers:


14

在使用插入补全功能时,Vim响应您键入<Enter>键的行为取决于补全菜单的状态。菜单的行为描述如下:

:help ins-completion-menu

下一节将介绍使用插入补全功能时各种键的行为,

:help popupmenu-keys

它说明<Enter>键的行为取决于菜单状态。据我了解,键入<Enter>会插入换行符,除非您已使用光标键从菜单中选择了匹配项。

避免不希望插入换行符的最佳方法是终止或使用其他某些键(例如Ctrl-Y或Ctrl-E)进行选择。

也可以看看

:help complete_CTRL-Y

对于整个说明(如果插入模式完成),

:help ins-completion

4

您可以将此映射添加到您的.vimrc文件中:

inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

当弹出菜单可见时,它将插入模式下的返回键映射到输入CTRL-Y。CTRL-Y在菜单中选择当前选择的项目,而无需输入新行。否则,它将使返回键像正常情况一样起作用。


1
您能否解释一下此代码的作用以及如何解决OP给出的问题?无法解释的代码对用户而言似乎是不可信任的,并且很危险。
bwDraco

0

我将此添加到.vimrc中,现在它的行为如我所愿:

noremap pumvisible()吗?“ \”:“”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.