我安装的Vim插件YouCompleteMe为何不能给C++自动补全? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
YUCOAT
V2EX    Linux

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

  •  
  •   YUCOAT May 22, 2013 32413 views
    This topic created in 4722 days ago, the information mentioned may be changed or developed.
    照着教程重新编译了im,并安装了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 replies    2018-05-10 16:00:19 +08:00
    YUCOAT
        1
    YUCOAT  
    OP
       May 22, 2013
    Vim这么多插件,有没有一款好一点的代码补全插件,能够像codeblocks那样,我不要求它支持多少语言,只要C或者C++就好了。

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

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

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

    嘿嘿!
    就OK了!
    beakey
        15
    beakey  
       May 23, 2013
    @zuyf
    @YUCOAT
    python 如何解决?谢啦~~
    YUCOAT
        16
    YUCOAT  
    OP
       May 24, 2013
    @beakey 照着我的说法做啊。。Python还是可以正常补全的!
    zuyf
        17
    zuyf  
       May 24, 2013   1
    beakey
        18
    beakey  
       May 24, 2013
    @YUCOAT 不行啊,我要的是新建一个.py文件进去之后第一次输入import就能补全。 照着做之后还是不行,难道是我自己的配置问题?
    karottc
        19
    karottc  
       Mar 31, 2016
    mac 下面, python 可以补全, C++的不行,不知道怎么回事啊
    itgoyo
        20
    itgoyo  
       May 10, 2018
    我这边配置了`let g:ycm_global_ycm_extra_cOnf= '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py' `
    也不可以给 C++,和 Python 补全啊,还有可能是什么原因吗?
    About     Help     Advertise     Blog     API     FAQ     Solana     5794 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 117ms UTC 07:35 PVG 15:35 LAX 00:35 JFK 03:35
    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