我希望Vim的完成菜单更像是Visual Studio中的完成菜单。我希望能够写一个变量的开头(或完成可用的东西),点击omni-completion键并获得完成菜单。现在我希望完成菜单突出显示最佳匹配但不将其添加到缓冲区。现在我希望能够按ENTER键输入所选元素或输入更多字母以更多地过滤完成菜单(可能在完成菜单中突出显示一个新项目),然后按Enter键进行插入。
http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE的wiki页面/提示应该是这样做的,但我无法让它工作。是否有其他人尝试过该提示中的代码并使其按照我描述的方式工作?
答案 0 :(得分:5)
引用的Wiki页面包含损坏的映射。用户(Spiiph)将Vim代码更改为对他来说更好的东西,但是不对。我推翻了他所做的更改,现在 inoremap 语句应该可以正常工作。
为避免混淆,这些是恕我直言的正确命令:
inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>"
PS:当谈到使用Vim的完成功能时,我找到了SuperTab script 很方便。也许这个脚本对你来说也很有趣......
答案 1 :(得分:0)
我使用supertab,我非常喜欢,以下似乎效果很好:
imap <expr> <Tab> pumvisible() ? "<Tab>" : "<Tab><Down>"
供参考:我正在运行debian sid,这适用于vim 7.2.245和我的修补7.2.259。