Centos 7 安装 vim自动补全神器 YouCompleteMe

1 下载最新的YouCompleteMe

git clone --recursive https://github.com/Valloric/YouCompleteMe.git

检查完整性:git submodule update --init --recursive

yum install python-devel

2. 安装LLVM-clang

clang 是近几年发展得非常好的 C 家族语言 (包括C/C++/Obj-C/Obj-C++) 编译器前端。所谓前端,就是它可以认识 C/C++/Obj-C/ObjC++ 代码,并且把它转化成某种更接近机器指令的形式。理论上说,“某种形式”是语法树,但作为一个工具,clang 实际上会帮助你调用链接器生成可执行代码,这跟 gcc 是一样的。
llvm 是一个通用的编译优化和代码生成平台,它定义了一个中间语言 LLVM IR,只要前端把代码编译成 LLVM IR,就可以使用 llvm 丰富的优化模块和代码生成模块。换句话说,llvm 让“创造一种计算机语言”变成了一个相对容易的事情,这件事情会有深远的影响。libc++ 是针对 clang 特别重写的 C++ 标准库,也算是 clang 的“御用”库了。这就像 libstdc++ 和 gcc 的关系,但 clang 也可以用 libstdc++。
llvm及其套件采用模块化,分布式设计,它的某些组件模块可单独被外部调用完成一些特定功能(例如:clang_complete和YouCompleteMe采用clang来完成自动补全,也是本篇因由)。这与GCC整体设计不同, 这种设计可能也是编译器发展方向。另外听说clang-llvm编译性能更高,生成的代码性能也高,使用范围也越来越大,值得研究一番。官方网站:http://llvm.org/。

下载源码编译安装:

llvm  clang  compiler-rt   clang-tools-extra

wget http://llvm.org/releases/3.7.0/llvm-3.7.0.src.tar.xz
wget http://llvm.org/releases/3.7.0/cfe-3.7.0.src.tar.xz
wget http://llvm.org/releases/3.7.0/clang-tools-extra-3.7.0.src.tar.xz
wget http://llvm.org/releases/3.7.0/compiler-rt-3.7.0.src.tar.xzwget 

tar llvm-3.7.0.src.tar
tar llvm-3.7.0.src.tarmkdir 
mkdir llvm-3.7.0.src/tools/clang/
tar xvf cfe-3.7.0.src.tar
cp -rf cfe-3.7.0.src/* llvm-3.7.0.src/tools/clang/
<p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 15px; line-height: 27px;"><code style="margin: 0px; padding: 0px;">mv clang-tools-extra-3.7.src/ llvm-3.7.src/tools/clang/extra/</code></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 15px; line-height: 27px;">mv compiler-rt-3.7.src/ llvm-3.7.src/projects/compiler-rt/</p>
mkdir llvm-build
cd llvm-build/
../llvm-3.7.0.src/configure --enable-optimized --enable-targets=host-only --prefix=/home/yourname/llvm/install
make 
make install

编译安装cmake:

下载cmake最新源码:

./bootstrap
make
make install
进行安装。

3. 安装

拷贝YouCompleteMe到~/.vim/bundle 目录

新建~/ycm_build,并进入目录执行下面命令:

cmake -G "Unix Makefiles" -DUSE_CLANG_COMPLETER=ON -DPATH_TO_LLVM_ROOT=/home/yourname/llvm/install(LLVM-clang安装位子)~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ -DEXTERNAL_LIBCLANG_PATH=/home/yourname/llvm/build/Release+Asserts/lib/libclang.so(视情况而定)
会生成如下文件和目录:

BoostParts  CMakeCache.txt  CMakeFiles  cmake_install.cmake  compile_commands.json  Makefile  ycm

执行make ycm_core进行编译,提示:Built target ycm_core 编译成功。

make ycm_support_libs  :Built target ycm_support_libs


4.配置

最后在.vimrc 中加入:execute pathogen#infect()

详细配置可以参考官方解释:https://github.com/Valloric/YouCompleteMe#options

部分解释说明:

" 自动补全配置
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=2	" 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0	" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1	" 语法关键字补全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>	"force recomile with syntastic
"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> " 跳转到定义处

5.修改vim高亮颜色

vim默认的语法错误高亮颜色很刺眼而且看不清字,经过一番搜索,找到修改方法。

在末行模式输入:highlight 会显目前所有颜色的配置。

同样可以在后面跟参数,进行相关修改。

通过highlight查看到语法错误的高亮颜色:

FoldColumn     xxx term=standout ctermfg=4 ctermbg=248 guifg=DarkBlue guibg=Grey
DiffAdd        xxx term=bold ctermbg=224 guibg=LightBlue
DiffChange     xxx term=bold ctermbg=225 guibg=LightMagenta
DiffDelete     xxx term=bold ctermfg=12 ctermbg=159 gui=bold guifg=Blue guibg=LightCyan
DiffText       xxx term=reverse cterm=bold ctermbg=9 gui=bold guibg=Red
SignColumn     xxx term=standout ctermfg=4 ctermbg=248 guifg=DarkBlue guibg=Grey
Conceal        xxx ctermfg=7 ctermbg=242 guifg=LightGrey guibg=DarkGrey
SpellBad       xxx term=reverse ctermbg=224 gui=undercurl guisp=Red
SpellCap       xxx term=reverse ctermbg=81 gui=undercurl guisp=Blue
SpellRare      xxx term=reverse ctermbg=225 gui=undercurl guisp=Magenta
SpellLocal     xxx term=underline ctermbg=14 gui=undercurl guisp=DarkCyan
Pmenu          xxx ctermfg=0 ctermbg=225 guibg=LightMagenta
PmenuSel       xxx ctermfg=0 ctermbg=7 guibg=Grey
PmenuSbar      xxx ctermbg=248 guibg=Grey
PmenuThumb     xxx ctermbg=0 guibg=Black
TabLine        xxx term=underline cterm=underline ctermfg=0 ct

左边那一列就是可针对其进行设置的关键词,中间是样式的效果,右边是设置的具体参数。其中gui/guibg等是对gvim的设置,如果不用gvim可忽略。

:highlight SpellBad term=reverse ctermbg=170 gui=undercurl guisp=Red
修改后就不那么刺眼了。
如果想长久生效,需要将命令加入到:~/.vimrc 或者/etc/vimrc中

6.自动不全C++

cd /usr/include/c++/4.8
ctags -R --c++-kinds=+l+x+p --fields=+iaSl --extra=+q --language-force=c++ -f stdcpp.tags

然后,让 OmniCppComplete 成功识别标签文件中的标准库接口。C++ 标准库源码文件中使用了 _GLIBCXX_STD 名字空间(GNU C++ 标准库的实现是这样,如果你使用其他版本的标准库,需要自行查找对应的名字空间名称),标签文件里面的各个标签都嵌套在该名字空间下,所以,要让 OmniCppComplete 正确识别这些标签,必须显式告知 OmniCppComplete 相应的名字空间名称。在.vimrc中增加如下内容:

let OmniCpp_DefaultNamespaces = ["_GLIBCXX_STD"]

最后,在 vim 中引入该标签文件。在 .vimrc 中增加如下内容:

set tags+=/usr/include/c++/4.8/stdcpp.tags





### 回答1: CentOS 7 中的 Vim 插件 youcompleteme安装步骤如下: 1. 安装必要的依赖包: ``` sudo yum install cmake gcc-c++ python3-devel ``` 2. 安装 Vim 和 Vundle(一个 Vim 插件管理器): ``` sudo yum install vim git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim ``` 3. 在 Vim 配置文件中添加以下内容: ``` set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim 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 following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'Valloric/YouCompleteMe' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " 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 ``` 4. 在 Vim安装插件: 打开 Vim,输入`:PluginInstall`,回车即可。 5. 安装 YouCompleteMe: ``` cd ~/.vim/bundle/YouCompleteMe python3 install.py --all ``` 6. 重启 Vim,即可使用 YouCompleteMe 插件了。 注意:如果你需要 C++ 补全功能,还需要安装 Clang,详情请参考 YouCompleteMe 的官方文档。 ### 回答2: 在CentOS 7上安装vim插件YouCompleteMe,您可以按照以下步骤进行操作: 1. 首先,确保您的CentOS 7系统已经安装vim和cmake。如果没有安装,可以使用以下命令安装: ``` sudo yum install vim cmake ``` 2. 安装YouCompleteMe插件依赖的一些软件包。打开终端,运行以下命令: ``` sudo yum install python-devel python3-devel ``` 3. 下载YouCompleteMe插件的源代码。您可以在GitHub的YouCompleteMe项目页面上找到源代码的下载链接。使用git命令克隆源代码库到本地: ``` git clone https://github.com/ycm-core/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe ``` 4. 切换到插件的目录,并构建插件。进入YouCompleteMe目录: ``` cd ~/.vim/bundle/YouCompleteMe ``` 5. 使用下面的命令来构建YouCompleteMe插件: ``` python3 install.py --clangd-completer ``` 6. 构建完成后,启动vim编辑器。在vim中,输入以下命令来安装插件的管理工具vim-plug(如果您已经安装了其他插件管理工具,您可以使用该工具): ``` curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim ``` 7. 编辑您的vim配置文件,并按照以下示例添加YouCompleteMe插件的配置: ``` call plug#begin('~/.vim/plugged') Plug 'ycm-core/YouCompleteMe' call plug#end() ``` 8. 保存并退出vim配置文件后,重新打开vim并执行以下命令,安装插件: ``` :PlugInstall ``` 9. 插件安装完成后,您可以使用YouCompleteMe插件来提供自动补全和代码建议。 ### 回答3: 在CentOS 7上安装YouCompleteMe插件,需要进行以下步骤: 1. 首先,确保已经安装vim和python-devel: ``` sudo yum install vim python-devel ``` 2. 安装CMake(用于编译YouCompleteMe的依赖项): ``` sudo yum install cmake ``` 3. 使用git克隆YouCompleteMe仓库: ``` git clone https://github.com/ycm-core/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe ``` 4. 进入YouCompleteMe目录,并编译插件: ``` cd ~/.vim/bundle/YouCompleteMe python3 install.py --clang-completer ``` 这里使用了`--clang-completer`选项来启用C/C++代码补全。如果需要其他语言的补全支持,可以查阅YouCompleteMe的文档并添加相应的选项。 5. 最后,编辑vim配置文件,添加YouCompleteMe插件的设置: ``` vi ~/.vimrc ``` 在文件中添加以下内容: ``` set nocompatible set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'Valloric/YouCompleteMe' call vundle#end() ``` 6. 保存并退出vim,然后重新打开vim。运行`:PluginInstall`命令,安装YouCompleteMe插件: ``` :PluginInstall ``` 这样,YouCompleteMe插件就成功安装CentOS 7下的vim中了。您可以根据需要自定义配置,以适应您的开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值