我安装的Vim插件YouCompleteMe为何不能给C++自动补全?

2013-05-22 17:49:03 +08:00
 YUCOAT
照着教程重新编译了Vim,并安装了YouCompleteMe插件。

然后我随便编辑一个cpp文件的时候出问题了。

在自动补全方面,它只能补全我以前输入过的单词。
也就是说,只有在我先前输入过include的前提下,下次我输入include的时候它才能自动补全。

而像这种:

vector<int>S;
S.

当我输入“.”的时候,根本不会列出任何成员函数。


是因为我安装的方式不正确吗?
---------------------------------------------
我是这样安装的:
在安装好Vundle之后,在vimrc中添加:

Bundle 'Valloric/YouCompleteMe'

然后启动vim就,执行“:BundleInstall”
进过一段时间之后,安装完毕,退出vim。进入

~/.vim/bundle/YouCompleteMe

执行:

./install.sh --clang-complete

---------------------------------------------
以上是我的安装步骤,平台是Ubuntu 12.04(准确地说是Mint)。我有确认过我的Vim的版本。安装的过程中没见到错误提示。

我的GCC的版本是4.8
31232 次点击
所在节点    Linux
20 条回复
YUCOAT
2013-05-22 17:56:06 +08:00
Vim这么多插件,有没有一款好一点的代码补全插件,能够像codeblocks那样,我不要求它支持多少语言,只要C或者C++就好了。

我用vim的时间不短了,大概也有两年了吧,我都没怎么用过vim插件。因为那些我用得着的插件配置起来往往有点麻烦,而且用起来也有有各种各样的瑕疵,所以我才没有去用插件。

我之前用过c.vim这款插件,没用多久我就把它删除了,因为这款插件提供的模板与我的编程风格相差太远了,一个又一个地去改他们的模板又有点麻烦。
laskuma
2013-05-22 18:27:09 +08:00
没什么好办法吧 以前用过neocomplete(貌似是叫这个?) 也不好用 vim的补全确实是个问题 希望楼下能给个好的解法!
jjgod
2013-05-22 18:37:42 +08:00
YouCompleteMe 在 Vim 启动的时候如果无法载入 clang 是会提示错误的。
YUCOAT
2013-05-22 20:10:51 +08:00
@jjgod 没有错误提示哦!
ooscrewyou
2013-05-22 22:34:55 +08:00
youcompleteme 補全C家族的語言需要在項目目錄裡建一個配置文件的 寫入你編譯項目用到的編譯參數 具體我也不清楚 我不寫C 你去github項目頁面看吧 有個C++的範例的
beakey
2013-05-22 23:42:36 +08:00
我用python也是同样的问题。。
mr_pppoe
2013-05-23 01:16:47 +08:00
我觉得目前YouCompleteMe是最好用的带语义补全的插件了。vim --version看看里面rubyinterp/pythoninterp之类的功能有没有?
你补全不成功的时候用:messages看看报什么错?确保你的代码在没有敲S.的之前是可以编译通过的。
Ricepig
2013-05-23 01:23:06 +08:00
别折腾了,迟早转xcode/vs吧,vim是编辑器,就别硬当ide使了
cassyfar
2013-05-23 08:36:21 +08:00
@YUCOAT 你指定了ycm_extra_conf.py了没有
let g:ycm_global_ycm_extra_conf='directory/to/ycm_extra_conf.py'

可以参照ycm自带的或者这个-> https://gist.github.com/locojay/4950253
alexrezit
2013-05-23 08:45:47 +08:00
@Ricepig
表示赞同...
vim 还是适合写前端, 一个 zen-coding 搞定一切.
写 C 神马的什么都要用插件太麻烦了, 不同环境还要重新配置.
zuyf
2013-05-23 10:33:36 +08:00
@YUCOAT 有两种可能性:
1. libclang 版本太旧, 最好卸载系统自带的libclang, 然后编译youcompleteme, 它会自动下载一个最新版。
2. 没有设置好ycm_extra_conf.py, 关键是include路径要正确。 打开c++文件的时候, ycm会提示你将加载这个文件, 如果没有提示, 说明没有找到, 或者ycm编译不正确。 加载成功的话, 可以在vim中运行:YcmDiags看一下报什么错, 如果YcmDiags很快返回而且没报错, 可能是ycm_extra_conf.py中有错误, 可能是python的语法错误。
zuyf
2013-05-23 10:44:07 +08:00
@laskuma @YUCOAT @mr_pppoe
对C/C++来说youcompleteme现在应该是最好选择, 借助libclang的强大功能, 补全效率和准确性极高。 不管你的C++代码用什么怪异的写法, 只要能编译通过, 都能补全, 即使是C++11的lambda和auto都没有障碍, 比codeblock这些根据tag index的补全强大多了。
YUCOAT
2013-05-23 21:09:27 +08:00
@cassyfar 这个我还真没有。
YUCOAT
2013-05-23 21:23:25 +08:00
在vimrc文件中加入

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

嘿嘿!
就OK了!
beakey
2013-05-23 23:03:13 +08:00
@zuyf
@YUCOAT
python 如何解决?谢啦~~
YUCOAT
2013-05-24 13:03:08 +08:00
@beakey 照着我的说法做啊。。Python还是可以正常补全的!
zuyf
2013-05-24 15:20:20 +08:00
beakey
2013-05-24 15:23:52 +08:00
@YUCOAT 不行啊,我要的是新建一个.py文件进去之后第一次输入import就能补全。 照着做之后还是不行,难道是我自己的配置问题?
karottc
2016-03-31 01:42:28 +08:00
mac 下面, python 可以补全, C++的不行,不知道怎么回事啊
itgoyo
2018-05-10 16:00:19 +08:00
我这边配置了`let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py' `
也不可以给 C++,和 Python 补全啊,还有可能是什么原因吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX