目前博主使用的linux发行版是debian9,不过只要是linux安装过程都是一样的
===================================================================
对内容进行补充,当从git拉取或下载子模块的时候可能出现卡顿或下载失败的情况,很有可能是因为网络的原因;请不用担心,多尝试下载几次,如果出现长时间下载一直不动的情况,可以抓取对应端口的数据包。看看有没有数据,没有数据的话按Ctrl-C中断重来
查看连接的端口命令,找到foreign address为443的端口,然后得到对应local address的端口号
netstat -tnp | grep 443
抓取数据包
sudo tcpdump -s 0 -X ‘tcp dst port 本地连接的端口号’
在终端输入vim进入vim界面
$ vim
进入编辑模式输入:version
找到其中的版本号和python或者python3
python和python3只需要其中一个是+号就可以了
如果你的vim版本号低于7.4.1578那么就需要重新安装一个高于此版本号的vim
如果你的vim是-python代表不支持python可能需要进行源码安装或者安装vim-nox
$ apt remove vim
$ apt install vim-nox
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
打开.vimrc输入以下内容:
$ vim ~/.vimrc
set nocompatible
filetype on
安装YCM前需要安装进行一些准备工作,下载一些需要的东西
安装python-dev, python3-dev
$ apt install python-dev python3-dev
安装开发工具
$ apt install build-essential cmake
//或者
$ apt install build-essential cmake3
Fedora 27及更高版本:
$ dnf install cmake gcc-c++ make python3-devel
cd到~/.vim/bundle目录下进行克隆
$ cd ~/.vim/bundle
$ git clone https://github.com/ycm-core/YouCompleteMe.git
进入YouCompleteMe目录下载必要的子模块,这里需要注意,以前能顺利下载的模块更改了url地址导致被墙不能下载成功,需要更新地址,所以此步骤和之前网上有些不太一样
$ cd ~/.vim/bundle/YouCompleteMe
$ sudo git submodule update --init // 没有–recursive!!! 如果加了这个选项之后修改的url地址会被改回去!
这一步就是修改url地址了,到ycmd目录下打开.gitmodules文件
$ cd third_party/ycmd
$ vim .gitmodules
找到[submodule “third_party/go/src/golang.org/x/tools”]
我们可以看到url地址跟其他大不相同,并不是github中的
修改 url = https://github.com/golang/tools
[submodule “third_party/go/src/golang.org/x/tools”]
path = third_party/go/src/golang.org/x/tools
url = https://github.com/golang/tools
ignore = dirty
保存并退出,在当前目录继续下载子模块
$ git submodule update --init --recursive
下载完成后就可以进行编译了
cd到YouCompleteMe的跟目录下去执行install.py脚本
$ cd ~/.vim/bundle/YouCompleteMe
$ python3 install.py --clang-completer //添加c/c++语言的补全,或者使用-all不全所有语言
// python编译使用下列
// python install.py --clang-completer
编译完成,但是还不能使用,还需要进行一些配置
编译完成之后打开~/.vimrc进行配置,在这里贴上我使用的配置,想要设置自己的配置可以去github查看
YouCompleteMe
call vundle#begin()
set runtimepath+=~/.vim/bundle/YouCompleteMe
"Plugin 'Valloric/YouCompleteMe'
autocmd InsertLeave * if pumvisible() == 0|pclose|endif " 离开插入模式后自动关闭预览窗口
let g:ycm_collect_identifiers_from_tags_files=1 " 开启YCM基于标签引擎
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1 " 语法关键字补全
let g:ycm_confirm_extra_conf = 0 " 关闭加载.ycm_extra_conf.py提示
let g:ycm_key_list_select_completion = ['','']" 没有这个会拦截掉tab
let g:ycm_key_list_previous_completion = ['','']
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py'
let g:ycm_server_python_interpreter='/usr/bin/python3'
“let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 1 " 语法检查
let g:ycm_use_clangd = 0
inoremap pumvisible() ? "\" : "\" " 回车即选中当前项
nnoremap :YcmCompleter GoToDefinitionElseDeclaration " 跳转到定义处
let g:ycm_min_num_of_chars_for_completion = 2 " 从第2歌键入字符就开始罗列匹配项
call vundle#end()
大功告成!
如果你的vim还是不能补全的话就需要在~/.vim/bundle/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py这个文件下添加一些内容了
找到你没有的内容添加进去