我要Vim的完成菜单的工作方式更像 Visual Studio 中的菜单。我希望能够编写变量的开头(或可以完成的内容),点击全能完成键并获取完成菜单。现在我希望完成菜单突出显示最佳匹配,但不将其添加到缓冲区中。现在,我希望能够按 ENTER 键输入所选元素,或者输入更多字母以进一步过滤完成菜单(可能突出显示完成菜单中的新项目),然后按 Enter 键插入。
维基页面/提示位于 http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE应该这样做,但我无法让它工作。有其他人尝试过该技巧中的代码并使其按照我的描述工作吗?
最佳答案
引用的 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 很方便。也许在这种情况下这个脚本对您来说也很有趣......
关于vim - 让 Vim 补全工作更像在 Visual Studio 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514967/