对于其他的语言,会调用vim设置的omnifunc
来匹配,因此同样支持php
,ruby
等语言。
已知的有 * javascript —-tern_for_vim * ruby/java —-eclim
vim --version
查看)brew install cmake
,ubuntu可以通过sudo apt-get install cmake
) 在.vimrc
中添加下列代码
1
|
Bundle
'Valloric/YouCompleteMe'
|
保存退出后打开vim,在正常模式下输入
1
|
:BundleInstall
|
等待vundle
将YouCompleteMe安装完成
而后进行编译安装:
1
2
|
cd
~/.vim
/bundle/YouCompleteMe
.
/install
--clang-completer
|
如果不需要c-family的补全,可以去掉--clang-completer。
如果需要c#
的补全,请加上--omnisharp-completer。
正常来说,YCM会去下载clang的包,如果已经有,也可以用系统--system-libclang。
就这样,安装结束。打开vim,如果没有提示YCM未编译,则说明安装已经成功了。
不同于很多vim插件,YCM首先需要编译,另外还需要有配置。在vim启动后,YCM会找寻当前路径以及上层路径的.ycm_extra_conf.py
.在~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py
中提供了默认的模板。也可以参考我的(就在模板上改改而已)。不过这个解决了标准库提示找不到的问题。
YCM除了提供了基本的补全功能,自动提示错误的功能外,还提供了类似tags的功能:
GoToDefinition
GoToDeclaration
GoToDefinitionElseDeclaration
可以在.vimrc中配置相应的快捷键。
1
2
3
|
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
|
另外,YCM也提供了丰富的配置选项,同样在.vimrc中配置。具体请参考
1
2
|
let
g:ycm_error_symbol =
'>>'
let
g:ycm_warning_symbol =
'>*'
|
同时,YCM可以打开location-list来显示警告和错误的信息:YcmDiags。
个人关于ycm的配置如下:
1
2
3
4
5
6
7
|
"
for
ycm
let
g:ycm_error_symbol =
'>>'
let
g:ycm_warning_symbol =
'>*'
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
nmap <F4> :YcmDiags<CR>
|
YCM提供的跳跃功能采用了vim的jumplist,
往前跳和往后跳的快捷键为Ctrl+O
以及Ctrl+I。
YouCompleteMe
是我用过的最爽的一个自动补全的插件了。之前使用acp时,遇到大文件基本上就卡死了,以至于都不怎么敢使用。由于YCM使用的时C/S结构,部分使用vim脚本编写,部分认为原生代码,使得跑起来速度飞快。
抛弃Vim自带的坑爹的补全吧,抛弃ctags
吧,抛弃cscope
吧,YCM才是终极的补全神器。
在安装过程中,我也遇到了不少的坑。一会会发一篇解决这些坑的文章。