准备:升级到vim8,升级到gcc最新版本,安装一些依赖
yum install python python3 python3-devel gcc gcc-c++ cmake -y
首先卸载原先的vim:
yum remove vim
因为github下载vim源码过慢,所以通过wget的方式来下载:
wget https://github.com/vim/vim/archive/master.zip
&& unzip master.zip
&& cd vim-master
&& src
&& ./configure --with-features=huge --enable-pythoninterp=yes --enable-cscope --enable-fontset \
--with-python-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu \
--enable-pythoninterp=yes --enable-python3interp=yes
&& make && make install
&& alias vim='/usr/local/bin/vim'
首先下载源码:
$ wget http://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
然后解压并进入该目录:
tar -zxvf gcc-8.3.0.tar.gz && cd gcc-8.3.0
利用源码包里自带的工具下载所需要的依赖项:
$ ./contrib/download_prerequisites
编译:这一步较久,可以先去吃饭
mkdir build && cd build && $ ../configure --enable-checking=release \
--enable-languages=c,c++ --disable-multilib && make && make install
确认:
gcc --version
编译时还是会报错版本过低,原来是因为没有更改软连接(文件位置自行find):
cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64/
rm libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
之后编辑~/.vimrc便可添加管理的插件,其格式如下:
" vim插件下载目录
call plug#begin('~/.vim/plugged')
" vim插件列表,对应github项目地址
Plug 'tpope/vim-sensible'
Plug 'junegunn/seoul256.vim'
" 结束列表
call plug#end()
因为我们是通过vim-plug来管理插件,所以把源码下载到~/.vim/plugged下面:
cd ~/.vim/plugged && git clone https://github.com/Valloric/YouCompleteMe.git && \
cd YouCompleteMe
一些文章可能直接让你git submodule update --init --recursive,但是先不要着急,因为这个命令非常的慢!先做一点工作来帮它加速: 1. 运行git submodule update --init,这个过程需要等待一下。 2. 输入vim .gitmodules,然后你会看到一些github的网址,在每个github.com后加上.cnpmjs.org,然后保存退出 3. 输入git submodule sync更新子项目的url 4. git submodule update --init --recursive 然后在YCM目录下安装:cd YouCompleteMe && ./install.py --clang-completer 最后在~/.vimrc中加入一行:Plug 'Valloric/YouCompleteMe'
YCM的配置: 重点是配置.ycm_extra_conf.py和.vimrc中关于YCM的部分 首先来配置.ycm_extra_conf.py,这个文件就是用来告诉YCM如何操作的 可以把YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py直接mv到~/.,然后对其进行修改,主要修改flags这个变量,把常用的头文件目录设置对即可,如果YCM找不到头文件,那么大概率是这里配置有问题了。 然后来配置.vimrc中YCM的部分,可以参考我的,也可以在网上搜其他配置方法,文末会给出链接。
" 全局YCM配置文件路径
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
let g:ycm_confirm_extra_conf = 0 " 不提示是否载入本地ycm_extra_conf文件
let g:ycm_min_num_of_chars_for_completion = 2 " 输入第2个字符就罗列匹配项
" Ctrl+J跳转至定义、声明或文件
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|
" 语法关键字、注释、字符串补全
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_complete_in_comments = 1
let g:ycm_complete_in_strings = 1
" 从注释、字符串、tag文件中收集用于补全信息
let g:ycm_collect_identifiers_from_comments_and_strings = 1
let g:ycm_collect_identifiers_from_tags_files = 1
" 禁止快捷键触发补全
let g:ycm_key_invoke_completion = '<c-z>' " 主动补全(默认<c-space>)
noremap <c-z> <NOP>
" 输入2个字符就触发补全
let g:ycm_semantic_triggers = {
\ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
\ 'cs,lua,javascript': ['re!\w{2}'],
\ }
let g:ycm_show_diagnostics_ui = 0 " 禁用YCM自带语法检查(使用ale)
set completeopt=menu,menuone
let g:ycm_add_preview_to_completeopt = 0
" 防止YCM和Ultisnips的TAB键冲突,禁止YCM的TAB
""let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
""let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
参见:这里
YouCompleteMe unavailable: requires Vim compiled with Python 3.6 support:编译vim时需要加入python3的支持 如./configure --with-features=huge --enable-pythoninterp=yes --enable-cscope --enable-fontset --with-python-config-dir=/usr/lib64/python3.6/config-3.6m-x86_64-linux-gnu --enable-pythoninterp=yes --enable-python3interp=yes
常用命令
LeaderF
CTRL+P 在当前项目目录打开文件搜索,CTRL+N 打开 MRU搜索,搜索你最近打开的文件,这两项是我用的最频繁的功能。接着 ALT+P 打开函数搜索,ALT+N 打开 Buffer 搜索
NERDTree
;;键打开当前目录文件列表
s以窗口切分的方式打卡指定文件
ctrl+w+w在窗口之间切换
最后贴一张配置好的效果图,看起来还是过的去的