我的YouCompleteMe Vim插件不支持STL

时间:2013-03-07 08:16:39

标签: ubuntu vim plugins

我根据Github上的介绍编译并安装了Vim,Vundle和YouCompleteMe插件。 但是YouCompleteMe插件在我的Vim中效果不佳。它可以自动完成变量的名称,但不会自动完成STL对象(矢量,地图)的操作。它甚至无法自动完成“this->”在课堂上。它总是告诉我“(^ U ^ N ^ P)模式未找到。” 你们之前见过这个吗? 我使用的是Ubuntu 12.04。 我该怎么办?

2 个答案:

答案 0 :(得分:6)

插件的github repo上的自述文件现在解决了这个问题。

  

这是由libclang的问题引起的。从clang编译二进制文件使用正确的默认标头搜索路径,但从libclang.so编译不会。这个问题似乎比其他操作系统更能影响某些操作系统。看起来OS X Mavericks尤其存在问题。

     

目前的解决方法是调用echo | clang -v -E -x c ++ - 并查看#include< ...>下的路径搜索从这里开始:标题。您应该使用这些路径,在每个单独的路径前加上系统,并将它们全部附加到从.ycm_extra_conf.py文件中的FlagsForFile函数返回的标志列表中。

您可能还想查看相应的issue

答案 1 :(得分:3)

我来到这里寻找答案,我不知道python,从来没有破解别的东西。所以这就是我如何去做的。

  1. 查找错误消息。我去了〜/ .vim / bundle / YouCompleteMe并且为“builtin includes”而努力。为什么?因为这是错误信息的一部分

    • 一个。我没有在那里找到它所以去了更高级别(cd ..)并重复。
    • 湾发现它见下文 ./vundle/plugin/libclang.py:print“警告:NxD libclang找不到内置包含。”
  2. 修改错误消息以确保正在运行此文件(我的姓名缩写NxD) - 工作。

  3. 消息由initClangComplete打印
  4. 此调用后将打印消息  builtinHeaderPath = getBuiltinHeaderPath(library_path) 因此我们深入研究了builtinHeaderPath
  5. getBuiltinHeaderPath在已知目录上运行循环。我有2个铿锵声装置

    • 一个。 〜/下载目录 - 世界上所有软件都被转储
    • 湾/ usr / local因为我想要克隆,编译和构建的最新clang

    我添加了这个数组的路径:knownPaths

      "/usr/local/include",
      "/usr/local/lib/clang/3.3",
      "/home/nxd/Downloads/clang+llvm-3.2-x86_64-linux-ubuntu-12.04/clang/3.2"
    

    我注意到“,”是python中数组元素的分隔符。  我之前也注意到打印 - >在python中输出一条消息,参数是c-style%s,%d等工作 - (这就是首先在屏幕上出现“内置包含”消息的方式)

  6. 我还将一些打印语句转储到循环中,所以看看它看到了什么以及它在做什么。

    部分代码修改函数“getBuiltinHeaderPath”

      print "active path from knownPaths is |%s|" %path
      files = os.listdir(path)
      print " files in path is |%s|" % files
      print " len (files) is |%d|" % len(files)
      if len(files) >= 1:
        files = sorted(files)
        subDir = files[-1]
      else:
        subDir = '.'
      # nxd -
      subDir = '.'
      path = path + "/" + subDir + "/include/"
      print " len (files) is |%d|" % len(files)
      print " files[-1] is |%s|" % files[-1]
      print "searching in path : |%s| " % path
    
  7. 我意识到文件[-1]的预期行为不是作者想要的,并且在if条件之后修改它以保持不变。

  8. 使用新的cpp文件重新启动vim并查看:messages - 它工作正常。

    希望有所帮助。

相关问题