使Vim完成工作更像VisualStudio中的工作

使Vim完成工作更像VisualStudio中的工作,vim,code-completion,Vim,Code Completion,我希望的完成菜单更像VisualStudio中的完成菜单。我希望能够写变量的开头(或者可以完成的东西),点击omni completion键并获得completion菜单。现在,我希望完成菜单突出显示最佳匹配,但不将其添加到缓冲区。现在,我希望能够按ENTER键输入选定的元素,或者输入更多的字母以进一步过滤完成菜单(可能突出显示完成菜单中的新项目),然后按ENTER键插入 网站上的wiki页面/提示应该可以做到这一点,但我无法让它工作。是否有其他人尝试过该技巧中的代码,并使其按照我所描述的那样工

我希望的完成菜单更像VisualStudio中的完成菜单。我希望能够写变量的开头(或者可以完成的东西),点击omni completion键并获得completion菜单。现在,我希望完成菜单突出显示最佳匹配,但不将其添加到缓冲区。现在,我希望能够按ENTER键输入选定的元素,或者输入更多的字母以进一步过滤完成菜单(可能突出显示完成菜单中的新项目),然后按ENTER键插入


网站上的wiki页面/提示应该可以做到这一点,但我无法让它工作。是否有其他人尝试过该技巧中的代码,并使其按照我所描述的那样工作?

引用的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>"
inoremap pumvisible()?“\c-n>”:“\c-n>\c-r>=pumvisible()?\“\\down>\”:\“\”\cr>”
inoremap pumvisible()?“\c-n>”:“\c-x>\c-o>\c-n>\c-p>\c-r>=pumvisible()?\”\\down>\”:\“\”\cr>”

PS:当谈到使用Vim的完成功能时,我发现
非常方便。也许在这种情况下,这个脚本对您来说也很有趣…

我使用supertab,这是我非常喜欢的,下面的内容似乎很有用:

imap <expr> <Tab> pumvisible() ? "<Tab>" : "<Tab><Down>"
imap pumpvisible()?"" : ""

仅供参考:我运行的是debian sid,这对vim 7.2.245和我的补丁7.2.259都有效。

您使用的是哪个版本的vim?vim 7.1(补丁1-314)。我也使用普通的vim而不是gvim。