vim插件配置
https://github.com/chxuan/vimplus vimplus开源地址
我这里只是介绍了cpp插件的详细安装,其余请参考vimplus开源地址 readme文件,适用centos、ubuntu64位。
1 下载源码
这里由于我的linux环境是纯净版的,没有配置git,所以直接下载的zip压缩包,如果有配置了git在linux环境下,请直接执行下面的命令
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
我是下载了压缩包然后将其源码放到了~/.vimplus目录下
mkdir -p ~/.vimplus
cd ~/.vimplus
此时在~/.vimplus目录下有一个install.sh安装脚本
然后执行下面的命令等待脚本执行结束,这里需要给脚本赋予执行权限,不建议直接777,
chmod u+x install.sh
./install.sh
安装过程中会有选择是使用python3还是python2 这里输入3 回车即可。
这里可能时间较长因为需要安装一些必备的软件,比如python等一些依赖项。
我这里用了8分钟,因为我的网路比较卡,实际应该在5-8分钟左右
~/.vimrc
#为vimplus的默认配置,一般不做修改
~/.vimrc.custom.plugins
#为用户自定义插件列表,用户增加、卸载插件请修改该文件
~/.vimrc.custom.config
#为用户自定义配置文件,一般性配置请放入该文件,可覆盖~/.vimrc里的配置
2 配置cpp-mode插件、
2.1 YouCompleteMe
这是一个代码补全工具,首先我们需要安装它的依赖项,我自己测试过,即使不安装,后面编译构建成功后即使编译报错,也还是不会影响代码补全,不过应该是无法自动生成.ycm_extra_conf.py 文件,我这里是没有安装依赖项,后面手动添加的ycm的配置文件。
注意:如果有时候你看到你的vim里面提升ycm的问题,大概率是因为你还没有编译YCM
安装依赖:
sudo apt-get install cmake python3 python3-dev
提示:/root/.vim/plugged/YouCompleteMe/下的README详细讲解了各类语言的代码补全以及示例,但是是纯英文。
开始编译
cd ~/.vim/plugged/YouCompleteMe
python3 install.py --all
这里编译结束后如果有报错可以先不用管,有的是一些防火墙因素倒置有些服务无法访问但不会影响配置(个人理解因为这个错误我没有在意过)
继续进行下一步
2.2 配置 .vimrc
如果没有生成.ycm_extra_conf.py文件那么需要手动设置
def Settings( **kwargs ):
return {
'flags': [ '-x', 'c++', '-Wall', '-Wextra', '-Werror' ],
}
vim ~/.vimrc
let g:ycm_global_ycm_extra_conf = '~/.vim/plugged/YouCompleteMe/.ycm_extra_conf.py'
let g:ycm_filetype_blacklist = {}
对应ycm_filetype_blacklist 来说是一个文件类型的黑名单,表示哪些文件不需要ycm去启动自动补全功能,按理说我们需要对一些.log txt加入ycm黑名单,从而提升文件的操作效率。但也不会有太大的影响我这里没有加入文件黑名单。
然后随便用vim打开一个文件,在命令行模式执行下面的命令
:YcmRestartServer
2.3 配置cpp-mode
vim ~/.vimrc.custom.plugins
#添加下面一行代码 里面也有相应的有注释
Plug 'chxuan/cpp-mode'
#在命令行执行
:PlugInstall
2.4 使用
-
:CopyCode
拷贝函数或变量,和
:PasteCode
结合使用 -
:PasteCode
生成函数实现或变量定义,和
:CopyCode
结合使用 -
:GoToFunImpl
转到函数实现,该功能可替代ycm提供的转到函数实现(因为ycm转到函数实现经常不成功)
-
:Switch
c++头文件和实现文件切换
-
:FormatFunParam
格式化函数参数,用于函数参数列表过多的情况
-
:GenTryCatch
生成try-catch代码块
请将以下配置加到 ~/.vimrc
,如果不喜欢以下映射,可根据个人喜好更改。
nnoremap <leader>y :CopyCode<cr>
nnoremap <leader>p :PasteCode<cr>
nnoremap <leader>U :GoToFunImpl<cr>
nnoremap <silent> <leader>a :Switch<cr>
nnoremap <leader><leader>fp :FormatFunParam<cr>
nnoremap <leader><leader>if :FormatIf<cr>
nnoremap <leader><leader>t dd :GenTryCatch<cr>
xnoremap <leader><leader>t d :GenTryCatch<cr>
更加详细请参考CPP-MODE github仓库:
https://github.com/chxuan/cpp-mode