vim youcompleteme插件安装

一、准备工作:

youcompleteme插件是vim 最难安装的插件。为了避免版本不兼容的问题,我这里使用的全是最新的版本。

1. python编译器

    编译vim插件支持python和python3,如果只使用系统自带的python可能存在问题,就是编译vim时,vim会自动去寻找/usr/lib/python3/config 会找不到,所以重新安装一边python。
sudo apt-get install python-dev
sudo apt-get install python3-dev

2. 准备最新版本的vim

2.1 修改vimrc,添加youcompleteme的插件

编辑vimrc配置:
    vim ~/.vimrc
添加以下代码:
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
" set rtp+= ~/suchp_familly/yum/env/vim/plugin
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
" To ignore plugin indent changes, instead use:
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

"BundleList -列举出列表中(.vimrc中)配置的所有插件
"BundleInstall -安装列表中全部插件
"BundleInstall! -更新列表中全部插件
"BundleSearch foo -查找foo插件
"BundleSearch! foo -刷新foo插件缓存
"BundleClean -清除列表中没有的插件
"BundleClean! -清除列表中没有的插件
" 插件管理器
Bundle 'gmarik/vundle'
" vimwiki插件
Bundle 'vimwiki/vimwiki'
" python 输入插件
" Bundle 'davidhalter/jedi-vim'
" 文件列表tree插件
Bundle 'scrooloose/nerdtree'
Bundle 'Xuyuanp/nerdtree-git-plugin'
" 文件搜索插件==>配合nerdtree使用
Bundle 'ctrlpvim/ctrlp.vim'
" taglist插件, 将函数名和变量以列表的方式显示
Bundle 'vim-scripts/taglist.vim'
Bundle 'bufexplorer.zip'
Bundle 'tpope/vim-surround'
Bundle 'tpope/vim-repeat'
" 补全插件
Bundle 'Valloric/YouCompleteMe'
Bundle 'rdnetto/YCM-Generator'
" Bundle 'Valloric/ycmd'

2.2 编译安装vim

    安装最新版本的vim,就只能从github上下载了。以下是我提供的脚本。
#!/bin/bash
# SCP_开头的都是我自己定义好的目录,是固定的,存放某一类特定功能文件的目录。
# PATH_开头的都是临时的目录, 专门用于存放单一功能,特定功能的目录
# 使用该脚本产生的以上目录,在安装完后可以直接使用命令删除删除 :“rm -rf ~/suchp_familly”
SCP_CREATE_DIR(){
    DIR=$1
    if [ "$DIR" == "" ];then
        exit 1
    fi
    mkdir -p $DIR
}

if [ "$SUCHP_HOME" = "" ]; then
    SUCHP_HOME=$HOME/suchp_familly
fi

SCP_PREFIX=$SUCHP_HOME
SCP_CREATE_DIR $SCP_PREFIX
SCP_YUM=$SCP_PREFIX/yum
SCP_CREATE_DIR $SCP_YUM
SCP_YUM_ENV=$SCP_YUM/env
SCP_CREATE_DIR $SCP_YUM_ENV
SCP_YUM_SCRIPTS=$SCP_YUM/scripts
SCP_CREATE_DIR $SCP_YUM_SCRIPTS
SCP_YUM_CODE=$SCP_YUM/code
SCP_CREATE_DIR $SCP_YUM_CODE
SCP_GITHUB=$SCP_PREFIX/github
SCP_CREATE_DIR $SCP_GITHUB
SCP_TOOLS=$SCP_PREFIX/tools
SCP_CREATE_DIR $SCP_TOOLS

VIMRUNTIMEDIR=/usr/share/vim/vim80
SCP_YUM_ENV_VIM=$SCP_YUM_ENV/vim
SCP_PLUGIN=~/.vim/bundle
PATH_GITHUB_VIM=$SCP_GITHUB/vim

SCP_UPDATE_VIM_SOURCE_CODE() {
    sudo apt-get install git
    if [ -d $PATH_GITHUB_VIM ];then
        # 已存在则更新代码
        cd $PATH_GITHUB_VIM
        git pull
    else
        # 下载代码
        git clone https://github.com/vim/vim.git $PATH_GITHUB_VIM
    fi  
}
# 下载编译安装vim
SCP_INSTALL_VIM(){
    # 卸载老版本的vim
    sudo apt-get autoremove vim 
    # 下载最新版本的vim
    SCP_UPDATE_VIM_SOURCE_CODE
    # 安装最新vim所依赖的库
    sudo apt-get install libncurses5-dev
    # 系统剪切板功能 依赖于 libgtk2.0-dev, libgnome2-dev, libxt-dev, libx11-dev
    sudo apt-get install libgtk2.0-dev libgnome2-dev libxt-dev libx11-dev
    # 进入vim源码当前目录
    cd $PATH_GITHUB_VIM
    # python2 和 python3 最好只有一个
    #--enable-pythoninterp \
    ./configure \
       --with-features=huge \
       --enable-multibyte \
       --enable-perlinterp \
       --enable-python3interp \
       --enable-rubyinterp \
       --enable-luainterp \
       --enable-cscope \
       --enable-gui=auto=gtk \
       --enable-gtk2-check \
       --with-features=huge \
       --with-x \
       --enable-multibyte \
       --with-compiledby="asd" \
       --prefix=/usr
    echo "make clean;make VIMRUNTIMEDIR=$VIMRUNTIMEDIR"
    make clean;make VIMRUNTIMEDIR=$VIMRUNTIMEDIR
    sudo make install
}
# 使vim插件支持
SCP_INSTALL_BUNDLE()
{
    git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    echo "vim -c \"PluginInstall\" -c \"qall\""
    vim -c "PluginInstall" -c "qall"
}
SCP_CONFIG_VIM(){
    PATH_VIMRC=~/
    echo "#### ln -sf $SCP_YUM_ENV_VIM/vimrc ~/.vimrc"
    ln -sf $SCP_YUM_ENV_VIM/vimrc $PATH_VIMRC/.vimrc

    #VIMRUNTIMEDIR= $(`vim --version | grep '\$VIM' | awk 'NR==2' |cut -d '"' -f 2`)
    FILE_SOLARIZED_VIM=$VIMRUNTIMEDIR/colors/solarized.vim
    echo "sudo ln -s $SCP_YUM_ENV_VIM/solarized.vim $FILE_SOLARIZED_VIM"
    sudo ln -sf $SCP_YUM_ENV_VIM/solarized.vim $FILE_SOLARIZED_VIM
}
SCP_INSTALL_VIM
SCP_INSTALL_BUNDLE
#SCP_CONFIG_VIM

2.2 安装最新版本的cmake

cmake用于编译最新版本的llvm,yocompleteme,以下是我提供的cmake安装的脚本,可以直接运行。
#!/bin/bash -e
if [ "$SUCHP_HOME" = "" ]; then
    SUCHP_HOME=$HOME/suchp_familly
fi
# 这些目录在上一个脚本中已经创建出来了
SCP_PREFIX=$SUCHP_HOME
SCP_GITHUB=$SCP_PREFIX/github

PATH_GITHUB_CMAKE=$SCP_GITHUB/cmake
PATH_BUILD_CMAKE=$PATH_GITHUB_CMAKE/build
# 编译youcompleteme & llvm源码要使用的工具
# cmake 要求最新版本
SCP_DOWNLOAD_CMAKE_CODE(){
▸   sudo apt-get autoremove cmake
▸   mkdir -p $PATH_GITHUB_CMAKE
▸   git clone https://github.com/Kitware/CMake.git $PATH_GITHUB_CMAKE
}
SCP_DOWNLOAD_CMAKE_CODE
cd $PATH_GITHUB_CMAKE
./configure;make
sudo make install

2.3 安装llvm库

youcomplete依赖于llvm库,以下是我提供的编译安装脚本。
#!/bin/bash
if [ "$SUCHP_HOME" = "" ]; then
   SUCHP_HOME=$HOME/suchp_familly
fi
SCP_PREFIX=$SUCHP_HOME
SCP_GITHUB=$SCP_PREFIX/github

PATH_GITHUB_LLVM=$SCP_GITHUB/llvm
PATH_BUILD_LLVM=$PATH_GITHUB_LLVM/build

SCP_DOWNLOAD_LLVM_CODE(){
▸   sudo apt-get autoremove llvm
▸   mkdir -p $PATH_GITHUB_LLVMecho "git clone https://github.com/llvm-mirror/llvm.git $PATH_GITHUB_LLVM"
▸   git clone https://github.com/llvm-mirror/llvm.git $PATH_GITHUB_LLVM
}
SCP_DOWNLOAD_LLVM_CODE
mkdir -p $PATH_BUILD_LLVM
cd $PATH_BUILD_LLVM
cmake distclean;cmake -DCMAKE_BUILD_TYPE=Release $PATH_GITHUB_LLVM
make ;sudo make install
exit 0

2.4 安装libclang库

以下是我的安装脚本,必须先安装llvm库才能安装libclang,否则将出现LLVM_NOT_CONFIG的错误。
#!/bin/bash

if [ "$SUCHP_HOME" = "" ]; then
   SUCHP_HOME=$HOME/suchp_familly
fi

SCP_PREFIX=$SUCHP_HOME
SCP_GITHUB=$SCP_PREFIX/github

PATH_GITHUB_LIBCLANG=$SCP_GITHUB/libclang
PATH_BUILD_LIBCLANG=$PATH_GITHUB_LIBCLANG/build

SCP_DOWNLOAD_LIBCLANG_CODE(){
▸   if [ ! -d $PATH_GITHUB_LIBCLANG ];then
▸   ▸   mkdir -p $PATH_GITHUB_LIBCLANG
▸   ▸   git clone https://github.com/llvm-mirror/clang.git $PATH_GITHUB_LIBCLANGelse
▸   ▸   cd $PATH_GITHUB_LIBCLANG
▸   ▸   git pull
▸   fi
}
SCP_DOWNLOAD_LIBCLANG_CODE
mkdir -p $PATH_BUILD_LIBCLANG
cd $PATH_BUILD_LIBCLANG

FILE_LIBCLANG=libclang.so
FILE_LIBCLANG_FOR_YOUCOMPLETEME=$PATH_BUILD_LIBCLANG/lib/libclang.so.4.0

echo "cmake distclean;cmake -DCMAKE_BUILD_TYPE=Release $PATH_GITHUB_LIBCLANG"
cmake distclean
cmake -DCMAKE_BUILD_TYPE=Release $PATH_GITHUB_LIBCLANG
echo "make;sudo make install"
make distclean
sudo make install
echo "sudo ln -s $PATH_BUILD_LIBCLANG/lib/$FILE_LIBCLANG $FILE_LIBCLANG_FOR_YOUCOMPLETEME"
sudo ln -s $PATH_BUILD_LIBCLANG/lib/$FILE_LIBCLANG $FILE_LIBCLANG_FOR_YOUCOMPLETEME
exit 0

2.5 最后一步编译youcompleteme

还是我提供的脚本。
#!/bin/bash -e
################ 工具安装 ##############################

if [ "$SUCHP_HOME" = "" ]; then
    SUCHP_HOME=$HOME/suchp_familly
fi

SCP_PREFIX=$SUCHP_HOME
SCP_GITHUB=$SCP_PREFIX/github
SCP_BUILD=$SCP_PREFIX/build

PATH_GITHUB_LIBCLANG=$SCP_GITHUB/libclang
PATH_BUILD_LIBCLANG=$PATH_GITHUB_LIBCLANG/build

PATH_GITHUB_LLVM=$SCP_GITHUB/llvm
PATH_BUILD_LLVM=$PATH_GITHUB_LLVM/build

PATH_CODE_YOUCOMPLETEME=~/.vim/bundle/YouCompleteMe
PATH_BUILD_YOUCOMPLETEME=$PATH_CODE_YOUCOMPLETEME/build

FILE_LIBCLANG_FOR_YOUCOMPLETEME=$PATH_BUILD_LIBCLANG/lib/libclang.so

# 编译youcompleteme 源码要使用的工具
sudo apt-get install build-essential
sudo apt-get install python-dev python3-dev
# 支持c家族语言的工具安装
# clang 是一种能够编译C/C++/Objective-C/Objective-C++等c家族语言的编译工具
# 安装libclang. 要求是最新的版本,从官网下载并编译安装
# 安装及编译的网站:http://www.cnblogs.com/Frandy/archive/2012/10/20/llvm_clang_libcxx_cxx11.html

############## 编译支持c c++ 等c家族语言补全 #############
#./install.py --clang-completer
# 下载并编译llvm库和libclang库,并且指定编译目录
# cmake 要求最新版本
#./scp_install_cmake.sh
#./scp_install_llvm.sh
#./scp_install_libclang.sh

cd $PATH_CODE_YOUCOMPLETEME
rm -rf $PATH_BUILD_YOUCOMPLETEME
mkdir $PATH_BUILD_YOUCOMPLETEME
cd $PATH_BUILD_YOUCOMPLETEME
echo "cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=$PATH_BUILD_LLVM $PATH_CODE_YOUCOMPLETEME $PATH_CODE_YOUCOMPLETEME/third_party/ycmd/cpp -DEXTERNAL_LIBCLANG_PATH=$FILE_LIBCLANG_FOR_YOUCOMPLETEME"
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=$PATH_BUILD_LLVM $PATH_CODE_YOUCOMPLETEME $PATH_CODE_YOUCOMPLETEME/third_party/ycmd/cpp -DEXTERNAL_LIBCLANG_PATH=$FILE_LIBCLANG_FOR_YOUCOMPLETEME
echo "cmake --build $PATH_CODE_YOUCOMPLETEME --target ycm_core --config Release"
cmake --build . --target ycm_core --config Release
#make ycm_support_libs
#./install.py --all             
安装完成了。体验youcompleteme吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值