【问题标题】:How to get autocomplete on YouCompleteMe C code?如何在 YouCompleteMe C 代码上自动完成?
【发布时间】:2021-12-28 14:12:58
【问题描述】:

问题已编辑

我主要用 C 编写代码,并且一直在使用 vscode。我最近决定尝试 vim 并试图让代码自动完成类似于 vscode 的东西。 Youcompleteme 是流行的 vim 插件。在使用它时,我注意到开箱即用的代码完成非常原始,只完成了当前文件和内置库中的符号。

我的软件版本

WSL Ubuntu 20.04.
GCC: gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
vim: VIM - Vi IMproved 8.1 (2018 May 18, compiled Apr 15 2020 06:40:31) Included patches: 1-2269

我用python3 install.py --clangd-completer 安装它,但它只是部分提示符号。

如何让自动完成引擎显示项目中头文件中的符号?

【问题讨论】:

  • 欢迎您!通常的问答形式是发布一个问题,然后自己回答——自己回答自己的问题。
  • 当然,我会这样做,如果我提出这个问题,我希望它不会被我标记为重复。
  • 您可以使用下方的“编辑”链接编辑问题,剪切解决方案并将其粘贴到答案中。您甚至可以自己“接受”答案。
  • 感谢@WeatherVane 的耐心指导 :)

标签: c vim youcompleteme


【解决方案1】:

我正在提供我自己的问题的答案,以便其他人可以找到这个。以下是您如何让 YouCompleteMe 在您的项目中在 vim 中自动完成他们的 C 代码。

python3 install.py --clangd-completer

YCM 声称 using 将启用上述命令来安装 YCM 将启用 C 语义完成,但在我的情况下并没有这样做。代码补全仅适用于内置 C 库和正在处理的当前文件。

我正在使用的版本:

WSL Ubuntu 20.04.
GCC: gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
vim: VIM - Vi IMproved 8.1 (2018 May 18, compiled Apr 15 2020 06:40:31) Included patches: 1-2269

它当前的行为是只完成标准库文件和当前文件中的符号,这显然是不够的。发生这种情况是因为 YCM 在安装期间捆绑的 clangd 不是最新的,因此没有他们声称拥有的动态索引支持。幸运的是,我们有能力为 YCM 提供我们自己的 clangd 二进制文件,它将用于完成项目中文件的代码。

为了做到这一点,你必须从here下载clang 13

下载解压后,必须将<clang-for-your-respective-distribution>/bin/clangd的路径添加到PATH中。

现在将以下设置添加到您的 vimrc 文件中,以允许它使用您的 clangd 而不是捆绑的。

let g:ycm_clangd_uses_ycmd_caching=0 let g:ycm_clangd_binary_path='/home/shiva/clang+llvm-13.0.0-x86_64-linux-gnu-ubuntu-20.04/bin/clangd'

保存并获取您的 vimrc。享受完整的代码完成。

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2014-07-22
    • 2011-01-31
    • 2013-09-19
    • 2017-01-20
    相关资源
    最近更新 更多