一、准备工作:
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_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
}
SCP_INSTALL_VIM (){
sudo apt-get autoremove vim
SCP_UPDATE_VIM_SOURCE_CODE
sudo apt-get install libncurses5-dev
sudo apt-get install libgtk2.0 -dev libgnome2-dev libxt-dev libx11-dev
cd $PATH_GITHUB_VIM
./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
}
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
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
2.2 安装最新版本的cmake
cmake用于编译最新版本的llvm,yocompleteme,以下是我提供的cmake安装的脚本,可以直接运行。
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
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_LLVM
▸ echo "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_LIBCLANG
▸ else
▸ ▸ 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
还是我提供的脚本。
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
sudo apt-get install build-essential
sudo apt-get install python-dev python3-dev
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
安装完成了。体验youcompleteme吧