在Vundle中安装YouCompleteMe
-
在.vimrc中添加以下内容
Plugin 'Valloric/YouCompleteMe'
-
然后执行如下
git clone https://github.com/ycm-core/YouCompleteMe.git ~/.vim/bundle
-
在 ~/.vim/bundle/YouCompleteMe 目录下执行
git submodule update --init --recursive
-
安装
python3 install.py --clang-completer
-
修改.vimrc文件
附上我的配置,可以直接看最后的YouCompleteMe配置部分(从89行起)set nocompatible "required syntax on filetype off "required set encoding=utf-8 "utf-8 encode set showcmd "set clipboard=unnamed.unnamedplus "copy vim to clipboard set mouse=a "use mouse everywhere set hlsearch "highlite search "set incsearch "set history=40 "set ruler "cols and raws "setpastetoggle=F3 "set helplang=cn set rtp+=~/.vim/bundle/Vundle.vim "set rtp+=~./vim/plugin/clang_complete.vim call vundle#begin() "Plugin 'VundleVim/Vundle.vim' "avoid remove self Plugin 'gmarik/Vundle.vim' Plugin 'rip-rip/clang_complete' Plugin 'tpope/vim-fugitive' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' Plugin 'michaelHL/awesome-vim-colorschemes' Plugin 'Tagbar' Plugin 'Tabular' Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} Plugin 'Valloric/YouCompleteMe' Bundle 'SuperTab' "Bundle "scrooloose/syntastic" Bundle 'scrooloose/nerdtree' call vundle#end() " required filetype plugin indent on " required let g:SuperTabRetainCompletionType=2 let g:SuperTabDefaultCompletionType="<C-X><C-O>" inoremap<C-]> <C-X><C-]> inoremap<C-F> <C-X><C-F> inoremap<C-D> <C-X><C-D> inoremap<C-L> <C-X><C-L> "Bundle "scrooloose/syntastic" if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif "<F2>设置是否显示行号 "nnoremap <silent> <F2> :set number!<CR> ""空格打开关闭折叠 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> set tags=~/path/tags "========indent width========= set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set cindent set number "linenumber "set smartindent"自动识别以#开头的注释,不进行换行 "switch case align set cino=g0,:0 "===========================选择molokai的模式============================ let g:rehash256 = 1 let g:molokai_original = 1 "相较于上一个模式,个人比较喜欢此种模式 highlight NonText guibg=#060606 highlight Folded guibg=#0A0A0A guifg=#9090D0 set t_Co=256 "set background=dark colorscheme molokai "===========================选择solarized的模式========================== "solarzed的深色模式 "set background=dark "solarized的浅色模式 "set background=light "colorscheme solarized "开启背景颜色模式 " set ofu=syntaxcomplete#Complete imap <silent> ` <C-X><C-O> "===============NERD Tree================== let NERDChristmasTree=0 let NERDTreeWinSize=35 let NERDTreeChDirMode=2 let NERDTreeIgnore=['\~$'] let NERDTreeShowBookmarks=1 let NERDTreeWinPos="left" " Automatically open a NERDTree if no files where specified autocmd vimenter * if !argc() | NERDTree | endif " Close vim if the only window left open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " Open a NERDTree nmap <F5> :NERDTreeToggle<cr> "YouCompletMe " 自动补全配置 set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228) autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "回车即选中当前项 "上下左右键的行为 会显示其他信息 inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>" inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>" inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>" inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>" "youcompleteme 默认tab s-tab 和自动补全冲突 "let g:ycm_key_list_select_completion=['<c-n>'] "let g:ycm_key_list_select_completion = ['<Down>'] "let g:ycm_key_list_previous_completion=['<c-p>'] "let g:ycm_key_list_previous_completion = ['<Up>'] let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示 let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎 let g:ycm_min_num_of_chars_for_completion=1 " 从第2个键入字符就开始罗列匹配项 let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项 let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全 nnoremap <F5> :YcmForceCompileAndDiagnostics<CR> "force recomile with syntatic "nnoremap <leader>lo :lopen<CR> "open locationlist "nnoremap <leader>lc :lclose<CR> "close locationlist inoremap <leader><leader> <C-x><C-o> "在注释输入中也能补全 let g:ycm_complete_in_comments = 1 "在字符串输入中也能补全 let g:ycm_complete_in_strings = 1 "注释和字符串中的文字也会被收入补全 let g:ycm_collect_identifiers_from_comments_and_strings = 0 nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> let g:clang_library_path='/usr/lib/llvm-10/lib/libclang.so'
另一种方法
# 没有尝试
sudo apt-get install vim-youcompleteme
vim-addons install youcompleteme