【问题标题】:Vim YouCompleteMe configurationVim YouCompleteMe 配置
【发布时间】:2019-02-16 08:03:51
【问题描述】:

我刚刚通过 vundle 为 Vim 安装了 YouCompleteMe。它可以工作,但它只显示当前文件中包含的单词。我想用它来开发 c++ 程序,例如,如何配置它以显示 /usr/include 中 c++ 头文件的自动完成功能?非常感谢。

【问题讨论】:

  • 您需要构建和安装 clang 以实现语义补全。您是否遵循 YCM 自述文件中详述的安装过程?
  • 是的,我按照说明进行操作,但我只能获得本地自动完成功能。为了将 YCM 作为 vundle 包安装,我执行了位于 YCM 目录中的安装脚本。有没有我错过的某种配置?
  • 你是./install.sh --clang-completer还是./install.sh
  • 我错过了 --clang-completer 选项。非常感谢。也许可以给出答案,这样我就可以将其标记为正确的解决方案。
  • @mastergap 你可以回答你自己的问题。

标签: c++ vim autocomplete


【解决方案1】:

您需要导航到~/.vim/bundles/YouCompleteMe 并使用--clang-completer 运行安装脚本,./install.sh --clang-completer 也是如此。完成后,您应该支持类似 C 的语言。

您可能还需要将let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py' 放入您的~/.vimrc

【讨论】:

  • 对于新版本的 ycm,它改为:let g:ycm_global_ycm_extra_conf = ".vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"
  • 对我来说,定义这个配置似乎非常奇怪和不直观。为什么我需要将此配置设置为插件文件夹深处的隐藏文件?对我来说,这感觉不对。
  • 新版本一般使用.py - install.sh 现在是install.py
【解决方案2】:

我已经安装了病原体。我使用 ./install.sh --clang-complete 尝试了上述说明。在此之后,它不起作用,我确实不得不添加路径。但这与这里的另一个回复不同,即

let g:ycm_global_ycm_extra_conf = '.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

所以路径中有一个额外的“third_party/ycmd”。

【讨论】:

    【解决方案3】:

    虽然这里的建议在一开始可能会奏效,但我不确定这是否正确。根据 YCM 开发者的说法,每当你开始一个项目时,你都需要一个新的 .ycm_extra_conf.py 文件

    来自https://valloric.github.io/YouCompleteMe/#ubuntu-linux-x64-super-quick-installation

    YCM 在打开文件的目录或层次结构中它上面的任何目录中查找 .ycm_extra_conf.py 文件(递归);找到文件后,它会作为 Python 模块加载(仅一次!)。 YCM 在该模块中调用 FlagsForFile 方法,该方法应为其提供编译当前文件所需的信息。您还可以提供全局 .ycm_extra_conf.py 文件的路径,该文件将用作后备。为防止从您未编写的文件中执行恶意代码,YCM 会在每个 .ycm_extra_conf.py 中询问您一次是否可以安全加载。这可以禁用,您可以将文件列入白名单/黑名单。有关详细信息,请参阅选项部分。

    虽然您可能只需要修改原版 .ycm_extra_conf.py 中的编译标志,但我认为建议为您启动的每个项目创建一个新文件。

    【讨论】:

    • 链接已损坏。如果能更新就好了。
    • 编辑队列已满,所以把更新的链接放在这里github.com/ycm-core/…
    【解决方案4】:

    这里的人所说的一切都是正确的。我只想补充一点,从 2017 年开始,“install.sh”脚本已被弃用。现在,您必须通过键入来使用 install.py 脚本

    ./install.py --clang-completer
    

    此外,在您的 .vimrc 文件中,您需要在地址前添加一个“~/”,而不是“.vim/bundle/blahblahblah”,方法是:

    let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"
    

    到你的 .vimrc 文件,给它一个从主目录开始的绝对路径,以便 Vim 可以找到 ".ycm_extra_conf.py" 文件。否则,您可能会遇到一些有趣的行为。

    【讨论】:

      【解决方案5】:

      我只是想补充一下,如果您不想手动定义配置文件,那么这个简洁的小存储库会自动生成它。 https://github.com/rdnetto/YCM-Generator

      【讨论】:

      • 不要写 cmets 作为答案。在网站上投入一些时间,您将获得足够的 privileges 来评论和投票问题和答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 2015-03-05
      • 2015-04-25
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多