自动补全 (YouCompleteMe)

2014-00-00


主页:https://github.com/Valloric/YouCompleteMe

Mac OS X super-quick installation

vimrc 配置

" Go to definition else declaration
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
" 主动调用补全
let g:ycm_key_invoke_completion = '<C-a>'

其它配置

使用这个文件 .ycm_extra_conf.py 来个不同的项目执行不同的编译标志
YCM 会在当前目录及上级目录查找这个文件,也可以指定一个全局文件作为备用
这个文件的模板在 ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py, 是作者开发 YCM 的时候使用的

可能需要做如下修改:

  1. 加入一些库文件,用命令查看库路径

    echo | clang -v -E -x c++ -
    

    在输出的内容中找到如下两行,这下面的就是库路径,将其粘贴到 .ycm_extra_conf.py 文件中

    #include "..." search starts here:
    #include <...> search starts here:
    

补全 C 语言全局函数问题

默认情况下输入 ., ->, :: 之后会触发补全函数和类, 但是默认情况下是不补全全局函数的,所以 C 语言中的 printf 之类的函数就无法补全

解决办法就是手动调用补全,对应的 YCM 函数是 ycm_key_invoke_completion
将其绑定到快捷键 let g:ycm_key_invoke_completion = '<C-a>'(默认是 <C-Space>