一朝风月 万古长空

0%

spf13配置YouCompleteMe

spf13配置YouCompleteMe

本文适用

  • 不熟悉spf13安装插件方法
  • 想使用YouCompleteMe,C补全,并可跳转到相关函数定义或声明

完成安装后的想法

YoucompleteMe的难点,只在于自动跳转和Ultisnips的自动补全
基于spf13安装的YouCompleMe,已预设Ultisnips的绑定键操作
官方的推荐已经很不错,自动补全针对于#ifndef还是有问题,选中后只用Ctrl+j无反应
暂未解决
spf13会自动卸载相关冲突的自动补全
参见:

1
vim ~/.vimrc
1
2
3
4
691 " remap Ultisnips for compatibility for YCM
692 let g:UltiSnipsExpandTrigger = '<C-j>'
693 let g:UltiSnipsJumpForwardTrigger = '<C-j>'
694 let g:UltiSnipsJumpBackwardTrigger = '<C-k>'

spf13下安装YouCompleteMe和YCM-Generator

1
2
3
echo "let g:spf13_bundle_groups=['general', 'writing', 'programming', 'php', 'ruby', 'python', 'javascript', 'go', 'html', 'misc', 'youcompleteme', ]" >> ~/.vimrc.before.local
echo "Bundle 'rdnetto/YCM-Generator'" >> ~/.vimrc.bundles.local
vim +BundleInstall! +BundleClean

YouCompleteMe较大安装速度较慢,也可直接clone相关目录,而后再执行安装命令。
YCM-Generator针对不同工程,自动生成.ycm_extra_conf.py文件。
我通常只是进行c语言的开发,所以将.ycm_extra_conf.py文件拷贝到”~/“目录,并在.vimrc.local中指定,详见下文描述。

Mac OS X 安装

Mac下需要通过brew安装CMake,而后编译YouCompleteMe

1
2
3
brew install CMake
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

针对于YCM-Generator,安装完成后,可通过以下命令验证是否成功

1
2
cd ~/.vim/bundle/YCM-Generator
./config_gen.py --help

如果提示

1
env: python2: No such file or directory

则为pyton路径没有找到,通过如下命令创建软连接

1
ln -sf /usr/bin/python /usr/bin/python2

当出现相关帮助信息时,则安装完成。

通过vim打开工程目录下的文件,此文件最好和Makefile在同目录。
而后,在vim中执行命令

1
:CCGenerateConfig

则会在打开的文件目录,生成.ycm_extra_conf.py文件。
重启vim后,才能够使用。所以,我直接配置了全局.ycm_extra_conf.py文件。
此文件中注释也比较详细,可自行浏览。

~/.vimrc.local中,关于YouCompleteMe的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"不使用补全的文件列表
let g:ycm_filetype_blacklist = {
\ 'tagbar' : 1,
\ 'qf' : 1,
\ 'notes' : 1,
\ 'unite' : 1,
\ 'text' : 1,
\ 'vimwiki' : 1,
\ 'gitcommit' : 1,
\}
"指定配置文件位置
"我日常都在c下工作,所以使用生成文件后,直接指定为默认
"大家可以根据自己的工作环境,决定是否配置此选项
"此选项的优先级最低,优先查找工程目录中是否有.ycm_extra_conf.py文件
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
"每次打开无需提示是否读取.ycm_extra_conf.py文件
let g:ycm_confirm_extra_conf = 0
"实时语法检查
let g:syntastic_always_populate_loc_list = 1
",jd映射为跳转到相关“声明“或”定义“位置
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>

对于较为复杂的工程,推荐使用bear生成相关文件,我的工程依靠.ycm_extra_conf.py已经足够。如果想要了解,请参考参考链接。

参考链接

YouCompleteMe官方用户向导

vim智能补全插件YouCompleteMe新手完全攻略

跟我一起学习VIM - The Life Changing Editor

spf13官方介绍

TIPS

  • spf13 安装插件

    1
    2
    3
    "安装vim-colors的例子
    echo Bundle \'spf13/vim-colors\' >> ~/.vimrc.bundles.local
    vim +BundleInstall! +BundleClean
  • spf13 卸载插件

    1
    2
    3
    4
    "卸载即使将Bundle更改为UnBundle
    echo UnBundle \'AutoClose\' >> ~/.vimrc.bundles.local
    echo UnBundle \'scrooloose/syntastic\' >> ~/.vimrc.bundles.local
    vim +BundleClean!
  • 查看已安装插件列表

    1
    vim +BundleList!
  • 小命令

    1
    2
    3
    4
    :BundleList          #已安装列表
    :BundleInstall(!) #安装、升级
    :BundleSearch(!) #搜索
    :YcmDiags #可以打开location-list查看警告和错误信息
需要大家支持⬇️⬇️玩摩托,惭愧,惭愧.