本文介绍的是如何在vim中安装youcompleteme自动补全插件
一、安装youcompleteme
打开文件~/.vimrc
添加下面一行代码
Bundle 'Valloric/YouCompleteMe'
保存退出,打开一个vim新文件,执行以下代码
:BundleInstall
进行安装vim插件
二、编译youcompleteme插件
安装完后,编译youcompleteme
进入文件夹~/.vim/bundle/YouCompleteMe/
./install.sh --clang-completer
更多语言的补全请参照youcompleteme github
三、配置youcompleteme插件
vim ~/.vimrc
添加以下代码
"YouCompleteMe智能补全工具
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 不显示开启vim时检查ycm_extra_conf文件的信息
let g:ycm_confirm_extra_conf = 0
" 开启基于tag的补全,可以在这之后添加需要的标签路径
let g:ycm_collect_identifiers_from_tags_files = 1
" 开启语义补全
let g:ycm_seed_identifiers_with_syntax = 1
"注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
" 输入第 2 个字符开始补全
let g:ycm_min_num_of_chars_for_completion= 2
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
"在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
"定义快捷健补全
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
" 设置在下面几种格式的文件上屏蔽ycm
let g:ycm_filetype_blacklist = {
\ 'tagbar' : 1,
\ 'qf' : 1,
\ 'notes' : 1,
\ 'markdown' : 1,
\ 'unite' : 1,
\ 'text' : 1,
\ 'vimwiki' : 1,
\ 'pandoc' : 1,
\ 'infolog' : 1,
\ 'mail' : 1
\}
"设置关健字触发补全
let g:ycm_semantic_triggers = {
\ 'c' : ['->', '.', ' ', '(', '[', '&'],
\ 'objc' : ['->', '.', 're!\[[_a-zA-Z]+\w*\s', 're!^\s*[^\W\d]\w*\s',
\ 're!\[.*\]\s'],
\ 'ocaml' : ['.', '#'],
\ 'cpp,objcpp' : ['->', '.', '::'],
\ 'perl' : ['->'],
\ 'php' : ['->', '::'],
\ 'cs,java,javascript,typescript,d,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'ruby' : ['.', '::'],
\ 'lua' : ['.', ':'],
\ 'erlang' : [':'],
\ }
let g:ycm_cache_omnifunc = 1
let g:ycm_use_ultisnips_completer = 1
"定义函数跟踪快捷健
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
四、补全js代码
安装tern_for_vim插件
vim ~/.vimrc
Plugin 'marijnh/tern_for_vim'
新建一个vim文件,执行以下代码
:PligunInstall
配置tern_for_vim
cd ~/.vim/bundle/tern_for_vim
npm install
在项目中补全js代码
在项目根目录下添加文件.tern_project
{
"libs": [
"browser",
"underscore",
"jquery"
],
"plugins": {
}
}
在plugin中可以加入node或者angular等关键字,加载该库的补全功能。如下:
"plugins": {
"node": {}
}
保存退出,然后打开项目中的js文件就可以使用代码补全了