我正在使用带有omnifunc的AutoComplPop。
而不是输入自动完成自动完成弹出窗口中的选择,我想使用 Ctrl + Enter (或其他一些组合)并且 Enter 表现得像往常一样。
最后一点很重要:如果我想插入一个回车并且自动完成弹出窗口突出显示,我将不得不按两次输入。
所以:如何重新映射自动完成密钥?
答案 0 :(得分:1)
我不认为AutoComplPop插件对 Enter 键执行任何操作;相反,这是完成弹出窗口可见时的默认行为。见: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.
默认情况下,AutoComplPop会选择第一个匹配项(内置完成项不会执行此操作)。
回答你的问题(虽然我没有完全得到你想要的行为):
弹出菜单没有特殊模式,您必须使用:help map-expr
并使用pumvisible()
检查弹出菜单。例如,要使<Enter>
中止完成并插入换行符:
:inoremap <expr> <CR> pumvisible() ? '<C-e><CR>' : '<CR>'