在Vim插件生态中,YouCompleteMe(简称YCM)是一款功能强大的自动补全插件,但安装过程常常让用户感到棘手。本文将详细介绍YCM的完整安装步骤,并提供每条命令行操作的说明,按照流程操作即可顺利安装。
1. 安装Vundle(Vim插件管理器)
Vundle是Vim社区中广泛使用的插件管理器,请先通过以下命令安装Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2. 配置.vimrc文件
在用户家目录下的.vimrc文件中追加以下配置,需注意各行顺序不可颠倒:
set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'tpope/vim-fugitive' call vundle#end() Bundle 'Valloric/YouCompleteMe' filetype plugin indent on
3. 启动Vim并安装插件
在Vim中运行以下命令,Vundle将自动下载并安装.vimrc中声明的所有插件:
:BundleInstall
4. 安装必要的依赖工具
YouCompleteMe需要编译环境,请先安装基础开发工具包:
yum install gcc gcc-c++ make automake python-devel
接着,下载并安装CMake(请根据系统选择适当版本):
wget https://www.cmake.org/cmake/resources/software.html tar -zxv -f cmake-*.*.*.*.tar.gz cd cmake-*.*.*.*.tar.gz ./bootstrap gmake gmake install
5. 安装Clang+LLVM(使用预编译包)
为了实现C/C++的语义补全,需要安装Clang+LLVM。建议直接使用官方提供的预编译版本,以节省编译时间:
wget https://llvm.org/releases/3.5.1/clang+llvm-3.5.1-x86_64-fedora20.tar.xz xz -d clang+llvm-3.5.1-x86_64-fedora20.tar.xz tar xvf clang+llvm-3.5.1-x86_64-fedora20.tar cd clang+llvm-3.5.1-x86_64-fedora20 # 注:也可直接用 tar xvf clang+llvm-3.5.1-x86_64-fedora20.tar.xz 一步解压
然后,在/etc/profile文件末尾添加以下环境变量(请根据实际解压路径调整):
PATH=/usr/local/cmake/bin:/usr/clang_3_3/bin:$PATH export PATH
最后,执行以下命令使环境变量生效:
source /etc/profile
6. 编译YCM核心并启用Clang补全
进入YouCompleteMe插件目录,运行安装脚本:
cd ~/.vim/bundle/YouCompleteMe ./install.sh --clang-completer
7. 配置.vimrc(YCM专属设置)
最后,在.vimrc中添加以下配置,用于指定全局配置文件路径、自动确认语法检查以及定义语义触发字符:
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf = 0
let g:ycm_semantic_triggers = {
\ 'c' : ['->', ' ', '.', ' ', '(', '[', '&'],
\ 'cpp,objcpp' : ['->', '.', ' ', '(', '[', '&', '::'],
\ 'perl' : ['->', '::', ' '],
\ 'php' : ['->', '::', '.'],
\ 'cs,ja va,ja vascript,d,vim,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'ruby' : ['.', '::'],
\ 'lua' : ['.', ':']
\ }
完成以上所有步骤后,重新启动Vim,YouCompleteMe即可正常工作。如果补全功能无法生效,请首先检查环境变量中Clang的路径是否正确,然后再次运行./install.sh。
