我在vim中使用了几个完整的插件(word_complete.vim,autocomplpop,omnicppcomplete-0.41)。到现在为止还挺好。当我键入第一个字符
时,它会弹出菜单让您选择要使用的单词当我只键入2个字符时,vim会将弹出菜单中的第一个单词设置为默认单词,然后您可以直接按Enter键来使用该单词。
但问题通常是2个字符不足以缩小要完成的单词。我需要输入更多。输入超过2个字符后,默认选择的单词将消失,然后我必须使用CTRL-N或CTRL-P来选择单词,尽管它是弹出菜单中的第一个单词。
以下是我所拥有的: 第一个是我只输入2个字符
但输入第三个字符后,它显示为:
虽然" airline_detect_whitespace"我应该选择什么,我仍然需要输入CTRL-N来选择它。
我在问有没有办法配置vim选择默认匹配器的方式? 例如,我想在默认选择的单词消失之前键入5个字符。 或者有没有办法在默认情况下总是选择弹出菜单中的第一个?
感谢。
答案 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;问题的一面。