2

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

http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE的 wiki 页面/提示应该这样做,但我无法让它工作。其他人是否尝试过该提示中的代码并使其按照我的描述工作?

4

2 回答 2

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 脚本 非常方便。在这种情况下,也许这个脚本对你来说也很有趣......

于 2009-02-05T10:37:58.090 回答
0

我使用我非常喜欢的 supertab,以下似乎效果很好:

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

供参考:我正在运行 debian sid,这适用于 vim 7.2.245 和我修补的 7.2.259。

于 2009-09-21T10:43:57.423 回答