YCM的配置

以前用Source Insight十分顺手,用的最爽的就是代码跳转功能,切换到vim工作后,YCM也很好的完成了这个功能。YCM的安装这里不废话,重点说一说如何能够用起来顺手

使用\键+j,可以立即跳转到光标所在iditenfier的定义

1
2
nnoremap <leader>d :YcmCompleter GoToDefinitionElseDeclaration<CR>
let g:ycm_goto_buffer_command = 'vertical-split'

YCM Config文件的生成

然而比较麻烦的是,YCM的代码搜索是需要配置的,具体是一个.ycm_extra_conf.py 的文件,如果每个项目都需要自己配置,还是很麻烦的,有一个工具可以很好的帮助我们完成这件事,远离也比较简单,这个工具会fake编译一遍工程,找到所有的依赖路径,再添加到conf.py文件中

YCM-Generator

通过bundle安装好之后,在bashi_rc中添加config_gen.py的快捷方式,下次使用也比较方便

1
alias config_gen="/home/<YOUR_NAME>/.vim/bundle/YCM-Generator/config_gen.py"

使用的时候,在project外层目录(Makefile的上级父目录) 使用config_gen <Proj_PATH> 即可在项目文件夹中生成extra_conf.py文件了,YCM会自动匹配这个配置,做好config之后,我们刚刚配置的跳转定义就能够很好的生效了

Reference跳转

很多时候我们不仅需要跳转到一个identifier的定义,还需要跳转到他的所有引用位置,这时YCM就无能为力了,一个很好的搜索工具是ctrlsf

通过bundle安装后,我使用的配置如下

1
2
3
4
5
6
7
8
9
" ctrlsf
let g:ctrlsf_position = 'right'
let g:ctrlsf_regex_pattern = 1
let g:ctrlsf_case_sensitive = 'yes'
let g:ctrlsf_default_root = 'project'
let g:ctrlsf_auto_close = 0
let g:ctrlsf_winsize = '30%'
nmap <Leader>f :CtrlSF<CR>
nmap <C-f> <Plug>CtrlSFPrompt

使用\键+f,可以立即跳转到光标所在iditenfier的所有引用处
使用command+F可以呼出搜索框,使用起来非常方便