【问题标题】:How to enable intellisense in VIM (gvim)如何在 VIM (gvim) 中启用智能感知
【发布时间】:2024-01-14 17:39:02
【问题描述】:

有什么方法可以在 VIM (gvim) 中启用智能感知。 我希望将它用于 STL。

【问题讨论】:

标签: c++ linux ubuntu vim


【解决方案1】:

coc 看起来很有前途,集成了智能感知与vim(8.0及以上)和neovim

【讨论】:

  • 我用 YouCompleteMe 好几年了,直到我发现了 coc,它太棒了!!!
【解决方案2】:

请原谅我先纠正你,但 IntelliSense 是 Microsoft Visual Studio 中高级代码完成的名称,而不是代码完成的总称。

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

【讨论】:

  • ás 文档说有些文件需要复制到 $HOME/.vim/ 或 ~/.vim/。这是什么位置?是 /usr/share/vim/vim72 吗? P.S 对不起,我对 linux 很陌生。
  • @Mahatma,$HOME(或 ~)是您的用户主目录所在的位置。通常,它位于/home/username(将“用户名”替换为您的实际用户名)。
  • 我感觉@Mahatma 正在使用Windows,你不是Mahatma 吗?
  • @Mahatma,我扩展了我的答案。我不在 Windows 上使用 vim,所以我不太确定确切的位置,但 :vimruntime 应该用完整路径显示它。 vimfiles\plugins 之类的东西。
  • @Zoe 不,Intellisense 是/曾经是 Microsoft 的商标。这是他们为产品中的自动完成创造的一个术语,但许多人开始普遍使用它。您链接的*页面指向一个非常古老的网站,其中包含一组插件(可能是作者作为广告添加到维基页面的)。这是Microsoft trademark
【解决方案3】:

设置 ctags 数据库以用于omnicppcomplete

为 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 Intellisense

C++ code completion

OmniCppComplete : C/C++ omni-completion with ctags database

【讨论】: