上周装了Ubuntu16.04,接下来打算在上面学习点C++开发,所以得先配个环境,打算配置一下Vim以及装一些插件,接下来就搞一下。
Vim升级
用的时候发现ubuntu默认的Vim、g++和gcc版本都偏低了,先更新一下,把Vim升级到8以上,g++更新升级到4.8.5以上以支持c++11。
1 | 安装依赖 |
Vim-Plug基本使用
Vim-plug 是一个自由、开源、速度非常快的、极简的 vim 插件管理器。
安装
安装很简单,执行以下命令即可:
1 | curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ |
插件安装
安装插件也很方便,主要有以下几步:
- 在
~/.vimrc
中声明需要安装的插件,这里以ligntline.vim
插件为例,如下图所示
配置如下:
1 | let g:lightline = { |
- 重新打开vim,使用
:PlugStatus
命令查看插件状态,如图:
- 接着输入
:PlugInstall
完成插件安装
更新插件
更新插件就运行:PlugUpdate
即可,更新插件后,可以按d
查看更改,或者也可以之后输入:PlugDiff
审查插件
有时候更新的插件会有问题或不能正常工作,要解决这个问题就可以回滚,输入:PlugDiff
的命令按回车键查看上次的更改,然后在每个段落上按X
将每个插件回滚到前一个状态。
删除插件
- 首先将
~/.vimrc
文件中对应的插件配置plug命令删除或者注释,然后重启Vim编辑器,如图:
- 然后在Vim里输入
:PlugClean
命令,接着按y
,就可以删除已经不存在配置文件中的插件了。
升级Vim-Plug本身
输入:PlugUpgrade
就可以升级Vim-Plug本身了。
安装ctags
需要重新安装ctags,使用Universal CTags,默认的Exuberant CTags太旧了。
1 | sudo apt install autoconf |
在.vimrc
里添加set tags=./tags;,tags
然后再用sudo apt install global
安装gtags,这时已经可以通过在项目根目录运行ctags -R *
来生成tags文件,就可以用了。
自动生成tags
使用vim-gutentags插件。
.vimrc
里加入Plug 'ludovicchabant/vim-gutentags'
然后加入以下配置:
1 | " gutentags 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归 |
现在只要项目根目录里有'.root', '.svn', '.git', '.hg', '.project'
这些文件,当使用vim编辑文件的时候就会自动生成.tag文件了,该文件可以在~/.cache/tags
里看到。
现在就可以使用ctrl+]
进行跳转了,但是建议使用ctrl+w+]
用新窗口打开或者ctrl+w+}
使用预览窗口,:pclose
关闭预览窗口。
安装AsyncRun
Vim8以后,利用异步模式,可以让编译更方便,用AsyncRun插件,配置如下:
1 | Plug 'skywind3000/asyncrun.vim' |
安装代码检查ALE
配置:
1 | Plug 'dense-analysis/ale' |
这个插件比较大,装的比较久,成功后如图:
安装YouCompleteMe
这个也有点麻烦,走了不少坑,首先要对git做下设置,否则git clone的时候会不能获取到一些国外的repo,原因嘛……
1 | git config --global http.proxy 'socks5://127.0.0.1:1080' |
运行上述两条命令,结合之前已经搞好的科学上网,就可以正常clone啦,而且速度好快哦~
配置如下:
1 | let g:ycm_global_ycm_extra_conf='~/.vim/plugged/YouCompleteMe/third_party/ycmd/.ycm_extra_conf.py' |
应该没问题了,但如果出现YouCompleteMe unavailable no module named builtins
错误,则cd到YouCompleteMe目录下运行git submodule update --init --recursive
,这个问题应该是因为网速问题没下完整。
如果出现The ycmd server SHUT DOWN (restart with ':YcmRestartServer'). Unexpected exit code 1.
类似问题,则cd到YouCompleteMe目录下运行/usr/bin/python install.py
。
NerdTree
目录树,配置如下,按F3就可以打开目录树:
1 | Plug 'scrooloose/nerdtree' |
vim-cpp-enhanced-highlight
C++语法高亮插件,直接加入即可,不需多余配置。
Plug 'octol/vim-cpp-enhanced-highlight'
nerdcommerter
注释的插件,快捷键<leader>cc
和<leader>c<space>
。
LeaderF
函数列表插件,配置如下:
1 | Plug 'Yggdroot/LeaderF', { 'do': './install.sh' } |
echodoc.vim
显示参数列表,配置:
1 | Plug 'Shougo/echodoc.vim' |
当用YCM的tab补全函数名后,输入左括号即可显示参数信息,和YCM配合结果如图:
Vim所有配置
1 | set number |