我安装的Vim插件YouCompleteMe为何不能给C++自动补全? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
YUCOAT
V2EX    Linux

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

  •  
  •   YUCOAT 2013 年 5 月 22 日 32200 次点击
    这是一个创建于 4624 天前的主题,其中的信息可能已经有所发展或是发生改变。
    照着教程重新编译了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
    20 条回复    2018-05-10 16:00:19 +08:00
    YUCOAT
        1
    YUCOAT  
    OP
       2013 年 5 月 22 日
    Vim这么多插件,有没有一款好一点的代码补全插件,能够像codeblocks那样,我不要求它支持多少语言,只要C或者C++就好了。

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

    我之前用过c.vim这款插件,没用多久我就把它删除了,因为这款插件提供的模板与我的编程风格相差太远了,一个又一个地去改他们的模板又有点麻烦。
    laskuma
        2
    laskuma  
       2013 年 5 月 22 日 via iPhone
    没什么好办法吧 以前用过neocomplete(貌似是叫这个?) 也不好用 vim的补全确实是个问题 希望楼下能给个好的解法!
    jjgod
        3
    jjgod  
       2013 年 5 月 22 日
    YouCompleteMe 在 Vim 启动的时候如果无法载入 clang 是会提示错误的。
    YUCOAT
        4
    YUCOAT  
    OP
       2013 年 5 月 22 日
    @jjgod 没有错误提示哦!
    ooscrewyou
        5
    ooscrewyou  
       2013 年 5 月 22 日 via Android
    youcompleteme 全C家族的言需要在目目建一配置文件的 入你目用到的 具我也不清楚 我不C 你去github目面看吧 有C++的例的
    beakey
        6
    beakey  
       2013 年 5 月 22 日
    我用python也是同样的问题。。
    mr_pppoe
        7
    mr_pppoe  
       2013 年 5 月 23 日
    我觉得目前YouCompleteMe是最好用的带语义补全的插件了。vim --version看看里面rubyinterp/pythoninterp之类的功能有没有?
    你补全不成功的时候用:messages看看报什么错?确保你的代码在没有敲S.的之前是可以编译通过的。
    Ricepig
        8
    Ricepig  
       2013 年 5 月 23 日
    别折腾了,迟早转xcode/vs吧,vim是编辑器,就别硬当ide使了
    cassyfar
        9
    cassyfar  
       2013 年 5 月 23 日
    @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
        10
    alexrezit  
       2013 年 5 月 23 日
    @Ricepig
    表示赞同...
    vim 还是适合写前端, 一个 zen-coding 搞定一切.
    写 C 神马的什么都要用插件太麻烦了, 不同环境还要重新配置.
    zuyf
        11
    zuyf  
       2013 年 5 月 23 日   1
    @YUCOAT 有两种可能性:
    1. libclang 版本太旧, 最好卸载系统自带的libclang, 然后编译youcompleteme, 它会自动下载一个最新版。
    2. 没有设置好ycm_extra_conf.py, 关键是include路径要正确。 打开c++文件的时候, ycm会提示你将加载这个文件, 如果没有提示, 说明没有找到, 或者ycm编译不正确。 加载成功的话, 可以在vim中运行:YcmDiags看一下报什么错, 如果YcmDiags很快返回而且没报错, 可能是ycm_extra_conf.py中有错误, 可能是python的语法错误。
    zuyf
        12
    zuyf  
       2013 年 5 月 23 日
    @laskuma @YUCOAT @mr_pppoe
    对C/C++来说youcompleteme现在应该是最好选择, 借助libclang的强大功能, 补全效率和准确性极高。 不管你的C++代码用什么怪异的写法, 只要能编译通过, 都能补全, 即使是C++11的lambda和auto都没有障碍, 比codeblock这些根据tag index的补全强大多了。
    YUCOAT
        13
    YUCOAT  
    OP
       2013 年 5 月 23 日
    @cassyfar 这个我还真没有。
    YUCOAT
        14
    YUCOAT  
    OP
       2013 年 5 月 23 日
    在vimrc文件中加入

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

    嘿嘿!
    就OK了!
    beakey
        15
    beakey  
       2013 年 5 月 23 日
    @zuyf
    @YUCOAT
    python 如何解决?谢啦~~
    YUCOAT
        16
    YUCOAT  
    OP
       2013 年 5 月 24 日
    @beakey 照着我的说法做啊。。Python还是可以正常补全的!
    zuyf
        17
    zuyf  
       2013 年 5 月 24 日   1
    beakey
        18
    beakey  
       2013 年 5 月 24 日
    @YUCOAT 不行啊,我要的是新建一个.py文件进去之后第一次输入import就能补全。 照着做之后还是不行,难道是我自己的配置问题?
    karottc
        19
    karottc  
       2016 年 3 月 31 日
    mac 下面, python 可以补全, C++的不行,不知道怎么回事啊
    itgoyo
        20
    itgoyo  
       2018 年 5 月 10 日
    我这边配置了`let g:ycm_global_ycm_extra_cOnf= '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py' `
    也不可以给 C++,和 Python 补全啊,还有可能是什么原因吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5365 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:25 PVG 09:25 LAX 17:25 JFK 20:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86