本文介绍如何配置 vim,搭建一个简易的 c/c++编码环境,主要配置:树形目录文件查看、代码格式化、代码自动补全、括号配对

安装 vim(要求 8.0 以上)

sudo apt install vim -y
# 安装vim  vim
# 查看vim版本
# 其它安装
# 安装git:vimplug插件执行的时候需要git
# unzip:解压zip包用
sudo apt install git unzip -y

插件安装

因为 git 拉取网速很慢,我安装插件都是用离线的方法安装的,就是先下载 github 仓库的 zip 包下来,然后自己解压放到指定的文件夹就可以了,这样压缩包可以反复使用。下面的所有插件都是基于 vim-plug 插件来管理的,用 vim-plug 插件管理其它插件。

安装 vim-plug:插件管理器(必备)

github 地址:https://github.com/junegunn/vim-plug

安装方式:下载 vim-plug 仓库下的plug.vim文件放到~/.vim/autoload/目录下,就安装成功了。

nerdtree:树形目录插件

github 地址:https://github.com/preservim/nerdtree

安装方式:下载 nerdtree 插件的 github 仓库源码,解压放到~/.vim/目录下,然后修改 vimrc 配置文件

call plug#begin() "vimplug插件开始
Plug '~/.vim/nerdtree-master' "主要添加这一行,路径就是刚才解压的路径
call plug#end()    "vimplug插件结束

" nerdtree插件的快捷键设置,按ctrl n就可以显示、隐藏目录
map <C-n> :NERDTreeToggle<CR>

vim-autoformat:代码格式化插件

github 地址:https://github.com/vim-autoformat/vim-autoformat

安装方式:下载 vim-autoformat 插件的 github 仓库源码,解压放到~/.vim/目录下,然后修改 vimrc 配置文件,主要在 vimplug 插件的内部添加解压好的路径,在外部添加快捷键设置

call plug#begin()
Plug '~/.vim/vim-autoformat-master' "主要添加这一行,路径就是刚才解压的路径
call plug#end()

" Autoformat插件的快捷键设置,按F3自动格式化
noremap <F3> :Autoformat<CR>

" Autoformat插件设置,保存时自动格式化
au BufWrite \* :Autoformat

修改 vimrc 配置完成之后,还要安装 clang-format,不然代码格式化插件没法工作

# 安装clang
sudo apt install clang clang-format -y
# 生成.clang-format文件
clang-format -style=LLVM -dump-config > .clang-format

安装完 clang-format,并且生成 clang-format 文件之后,vim 的代码格式化插件才可以正常工作

另:单独使用 clang-format 命令去格式化代码,语法如下

clang-format 源代码.c -style=llvm
# -style指定要用什么样式去格式化代码
# 可选项有:GNU、LLVM、 Google、Chromium、 Mozilla、WebKit.
# 我一般用LLVM

coc.vim:代码自动补全插件

coc.vim基于 nodejs,所以需要安装 nodejs,这里使用绿色版方式安装 nodejs(即:解压文件、添加到环境变量)

注意,解压文件,添加到环境变量这种方式安装 nodejs,在 ubuntu server 上似乎没有效果,在 desktop 版本下可以正常使用,server 版本可以用 apt 方式安装 nodejs

coc.vim相当于另一个插件管理,安装完之后,要用coc.vim去安装自动补全插件,比如 clangd 之类的。

这里的逻辑是:先安装 vim-plug 插件,用vim-plug插件安装coc.vim,然后用coc.vim安装各种代码自动补全的功能。

安装代码补全、括号配对等插件步骤:

  1. 安装 nodejs
  2. 安装 coc.vim
  3. 安装代码补全、括号配对等功能

前面两个步骤只需执行一次,之后需要安装什么功能,只需要用 coc.vim 去安装就可以了。

  • 1.安装 nodejs

nodejs 压缩包下载:https://nodejs.org/dist/

我目前使用 18.13.0 版本
# 创建一个目录,存放解压的文件
mkdir -p ~/programs/

# 解压文件到该目录
tar xvf node-v18.13.0-linux-x64.tar.xz -C ~/programs/

# 添加bin路径到环境变量
sudo ln -s /home/${USER}/programs/node-v18.13.0-linux-x64/bin/npm /usr/local/bin/npm
sudo ln -s /home/${USER}/programs/node-v18.13.0-linux-x64/bin/node /usr/local/bin/node

# 这里也可以使用apt安装nodejs,只不过不好指定版本
# sudo apt install node npm -y
# 切换为淘宝镜像
npm config set registry https://registry.npm.taobao.org

# 安装yarn,可不装
# npm install -g yarn
  • 2.安装 coc.vim 插件

github:https://github.com/neoclide/coc.nvim

安装方式:下载源码压缩包,解压到~/.vim/目录下

# 安装coc.vim,即解压到.vim目录下即可
unzip coc.nvim-0.0.82.zip -d ~/.vim/

然后修改 vimrc 配置文件

call plug#begin()
Plug '~/.vim/coc.nvim-0.0.82' " 添加插件路径
call plug#end()
" coc.vim插件配置
" utf-8
set encoding=utf-8
" 不自动备份,某些服务器的备份文件有问题
set nobackup
set nowritebackup
" 代码补全更新时间,毫秒
set updatetime=300
" 始终显示符号列,否则每次都会移动文本
set signcolumn=yes
" tab键补全
inoremap <silent><expr> <TAB>
                        \ coc#pum#visible() ? coc#pum#next(1) :
                        \ CheckBackspace() ? "\<Tab>" :
                        \ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" 回车键补全
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
                        \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

function! CheckBackspace() abort
        let col = col('.') - 1
        return !col || getline('.')[col - 1]  =~# '\s'
endfunction
" 按住光标时高亮显示符号及其引用
autocmd CursorHold * silent call CocActionAsync('highlight')
  • 3.安装代码补全、括号自动配对等功能
# 1.安装 C/C++/Objective-C扩展,vim下输入
# 在vim的命令模式下输入以下代码,
:CocInstall coc-clangd # 代码补全
:CocInstall coc-pairs # 括号自动配对

安装 clangd 代码补全依赖(代码补全必备)

sudo apt install clangd -y

其它 vimrc 配置

" 其它设置
" 开启行号显示
set nu
" 语法高亮
syntax on
" 自动缩进
set autoindent
" 调整tab键宽度
set tabstop=4

shell 脚本一键安装

把压缩包和 shell 脚本放到同一个目录下,执行以下脚本

#!/bin/bash
# 安装vimplug插件管理器
mkdir -p ~/.vim/autoload/
unzip vim-plug-master.zip -d ~/Downloads/
cp ~/Downloads/vim-plug-master/plug.vim ~/.vim/autoload/
# 清理解压的垃圾文件
rm -r  ~/Downloads/vim-plug-master/

# 安装插件
# nertree插件:树形目录插件,配置ctrl+n快捷键调用
unzip nerdtree-master.zip -d ~/.vim/
# vim-autoformat:自动格式化插件,配置 F3 快捷键调用,保存时自动调用
unzip vim-autoformat-master.zip -d  ~/.vim

# 安装clang-formater,自动格式化插件需要
sudo apt install clang clang-format -y

# 生成.clang-format文件
clang-format -style=LLVM -dump-config > .clang-format

然后手动修改 vimrc 配置,代码补全插件还是手动安装吧。