我刚刚根据Github上的介绍编译并安装了Vim,Vundle和YouCompleteMe插件。 但是,YouCompleteMe插件在我的Vim中无法正常工作。它可以自动完成变量的名称,但不会自动完成STL对象(矢量,地图)的操作。它甚至不能在课堂上自动完成“this->”。它总是告诉我“(^ U^N^P)模式未找到。” 你们有没有看过这个? 我使用Ubuntu 12.04。 我该怎么办?My YouCompleteMe Vim插件不支持STL
回答
我来到这里寻找答案,我不知道python,从来没有黑客攻击过其他东西。所以这是我如何去做的。
找到错误信息。我去了〜/ .vim/bundle/YouCompleteMe,并且为“内建包含”进行了grep。为什么?因为这是错误信息的一部分
- a。我没有找到它,所以去了一个更高的水平(CD ..)并重复。
- b。发现它看到下面 ./vundle/plugin/libclang.py:print“警告:NxD libclang无法找到内置包含。”
修改错误消息,以确保该文件正在运行(我的姓名缩写NxD) - 工作。
- 该消息由initClangComplete
- 这个调用 builtinHeaderPath = getBuiltinHeaderPath(LIBRARY_PATH) 因此我们深入钻研builtinHeaderPath
getBuiltinHeaderPath之后打印的打印信息上运行公知的目录的循环。我有2铛装置
- a。 〜/下载目录 - 世界上所有软件都被转储的地方
- b。在/ usr /地方,因为我想我克隆,编译和生成
我加入这两个路径此阵的最新铛:我注意的是“”是的分离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中的数组元素。 我之前也注意到print - >在python中输出消息,参数是c样式%s,%d等工作 - (这就是“内置包含”消息如何在屏幕上显示的原因)
我也将一些打印语句放入循环中,看看它看到了什么以及它在做什么。
部分代码修改功能“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
我意识到文件的预期行为[-1]是作者的意图不是和修改了它,如果条件后保持不变。
用一个新的cpp文件重新启动vim,并看着:messages - 它工作。
希望有所帮助。
该插件的github repo自述现在解决了该问题。
这是由libclang引起的问题。从clang编译二进制使用正确的默认头搜索路径,但从libclang.so编译不。这个问题似乎比其他操作系统更受影响。看来OS X Mavericks尤其有这方面的问题。
当前的解决方法是调用echo | clang -v -E -x C++ - 然后查看#include <下的路径...>搜索从这里开始:标题。您应该采用这些路径,将-isystem前缀添加到每个单独路径,并将它们全部附加到您从.ycm_extra_conf.py文件中的FlagsForFile函数返回的标志列表中。
你可能也想看看相应的issue
- 1. Vim的Valloric/YouCompleteMe插件
- 2. YouCompleteMe(VIM插件)GoToDefinition不起作用
- 3. YouCompleteMe插件与vim不兼容7.4.52
- 4. Vim YouCompleteMe配置
- 5. Vim不支持unicode?
- 6. Vim的YouCompleteMe无法
- 7. VIM YouCompleteMe路径compilation_database_folder
- 8. VIM的YouCompleteMe插件 - 如何支持其他库的方法自动完成? (例如openmpi)
- 9. 不支持Cefsharp Flash插件
- 10. vim插件youcompleteme使用scons和g ++编译器的项目
- 11. Vim + YouCompleteMe + C:最小化.ycm_extra_conf.py?
- 12. Oh My ZSH&Vim插入光标
- 13. STL容器支持Windows Mobile
- 14. Ruby中的STL支持
- 15. SASS支持VIM吗?
- 16. GNU Global/gtags是否支持taglist vim插件?
- 17. 支持插件但不支持命令的Python IRC bot
- 18. 如何在不破坏所有插件的情况下为vim添加python支持?
- 19. doctorjs(又名jsctags)不支持vim + tagbar
- 20. 玛雅FBX插件不支持材质?
- 21. Mac插件不再支持GetWindowFromPort?
- 22. 插件不受支持:com.dawsonloudon.videoplayer @ 1.0.0
- 23. Moodle Paypal_enrolment插件不支持PayPal Sanbox?
- 24. Datatables jquery插件不支持注入?
- 25. 没有MacVim的YouCompleteMe
- 26. 未找到Vim YouCompleteMe模式错误
- 27. 支持TDD的Eclipse插件
- 28. iOS Safari支持插件?
- 29. 为什么指定YouCompleteMe vim插件的编译标志与C++一起使用?
- 30. vim的Youcompleteme插件无法提供来自errno.h的错误代码的完成
你能确认你已经安装了所有的依赖关系?你究竟遵循了哪些步骤?你遵循什么教程(“超级快”或“完整”)?你为什么要问这个非常通用的网站而不是YCM自己的问题追踪器? – romainl 2013-03-07 08:31:52
我也有一些麻烦让YCM工作。我做了一个快速安装。试图挖掘它现在没有工作,现在有点失去了如何解决YCM的问题。有很多部分我不明白。你能提出一些关于如何排除故障的建议@romaini! – Prospero 2013-03-20 08:54:15
@romainl我编译了很长的路,仍然有麻烦,然后看着ycm配置文件,并意识到这是我遇到的问题。我不知道我的标准库在哪里=。 – Prospero 2013-03-20 20:40:13