如何在VIM(gvim)中启用智能提示功能

29

有没有办法在VIM(gvim)中启用智能感知功能,我希望用它来处理STL。


马哈特玛,你可能会觉得这很有趣:https://dev59.com/Lm455IYBdhLWcg3wAvbQ - Rafid
3个回答

44

首先请原谅我指正您的说法,IntelliSense是微软Visual Studio中高级代码自动提示功能的名称,而非代码自动提示的通用术语。

回答您的问题,您可能想使用YouCompleteMe。使用vim插件管理器进行设置并不太困难,但别忘了运行编译YCM的shell脚本。请仔细阅读文档,大多数初始问题都可以避免。


文档中说需要将一些文件复制到 $HOME/.vim/ 或者 ~/.vim/。这个路径是什么?是 /usr/share/vim/vim72 吗?P.S 抱歉,我对Linux还很陌生。 - blitzkriegz
@Mahatma,$HOME(或~)是您的用户主目录所在的位置。通常在/home/用户名中(将"用户名"替换为您的实际用户名)。 - Yanick Rochon
我有一种感觉,@Mahatma正在使用Windows,不是吗Mahatma? - Rafid
@Mahatma,我扩展了我的回答。我不在Windows上使用vim,所以对于确切的位置我不太确定,但是:vimruntime应该会显示完整路径。类似于vimfiles\plugins这样的路径。 - Tamás Szelei
你的第一份陈述是错误的。 - Zoe stands with Ukraine
2
@Zoe 不,Intellisense是/曾经是微软的商标。这是他们在产品中为自动补全创造的一个术语,但许多人开始普遍使用它。您链接的维基百科页面指向一个非常古老的网站,其中包含一堆插件(很可能是作者作为广告添加到维基页面的)。这是微软商标 - Tamás Szelei

9

coc 看起来非常有前途,它能够将智能感知与 vim (8.0 及以上版本) 和 neovim 集成在一起。


1
我用了YouCompleteMe好几年,直到我发现了coc,它真的太棒了!!! - apollo

4

为使用omnicppcomplete设置ctags数据库

为stdlibc++和STL创建标签。

$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp /usr/include/c++/4.2.4/

$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost /usr/include/boost/

$ apt-file list libc6-dev | grep -o '/usr/include/.*h'> ~/.vim/tags/libc6-filelist
$ ctags --c++-kinds=+p --fields=+iaS --extra=+q -I__wur -I__THROW -I__nonnull+ -f ~/.vim/tags/libc6 -L ~/.vim/tags/libc6-filelist

以下是需要翻译的内容:

这里有三个链接,你应该会发现它们很有用:

Vim 智能提示

C++ 代码自动补全

OmniCppComplete:基于 ctags 数据库的 C/C++ 自动完成


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接