vim word complete,如何使第一个始终作为默认值

时间:2014-05-08 12:18:11

标签: vim

我在vim中使用了几个完整的插件(word_complete.vim,autocomplpop,omnicppcomplete-0.41)。到现在为止还挺好。当我键入第一个字符

时,它会弹出菜单让您选择要使用的单词

当我只键入2个字符时,vim会将弹出菜单中的第一个单词设置为默认单词,然后您可以直接按Enter键来使用该单词。

但问题通常是2个字符不足以缩小要完成的单词。我需要输入更多。输入超过2个字符后,默认选择的单词将消失,然后我必须使用CTRL-N或CTRL-P来选择单词,尽管它是弹出菜单中的第一个单词。

以下是我所拥有的: 第一个是我只输入2个字符

enter image description here

但输入第三个字符后,它显示为:

enter image description here

虽然" airline_detect_whitespace"我应该选择什么,我仍然需要输入CTRL-N来选择它。

我在问有没有办法配置vim选择默认匹配器的方式? 例如,我想在默认选择的单词消失之前键入5个字符。 或者有没有办法在默认情况下总是选择弹出菜单中的第一个?

感谢。

2 个答案:

答案 0 :(得分:0)

查看Vim Tips Wiki上的Make Vim completion popup menu work just like in an IDE页面。它描述了实现此目的的设置。特别是这些映射应该创建您想要的行为:始终预先选择一个菜单项。

inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
\ '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'

inoremap <expr> <M-,> pumvisible() ? '<C-n>' :
\ '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'

答案 1 :(得分:0)

这三个插件具有重叠的功能,并且弹出菜单和自动命令和内容确实存在冲突的映射。

例如,AutoComplPop以更智能,更自动化的方式完成wordcomplete所做的一切。 OmniCPPComplete,具有明显优于Vim中默认值的C ++完成算法(因此也就是AutoComplPop的一个),并且可以设置为不执行自动完成。

我建议您从配置中删除wordcomplete,禁用OmniCPPComplete&#34; s&#34;可以完成&#34;功能,让AutoComplPop处理&#34;自动完成&#34;问题的一面。