[The End] Linux C++ 开发环境搭建指南
工欲善其事,必先利其器
《论语·卫灵公》
本文主要包含两部分内容,Vim 配置(配色、定义跳转、自动补全等)以及 编译环境配置。网络环境比较好的话大概 20 到 30 分钟就能配置完毕。
首先上一下整体的配置方案:
在这套方案中,我们使用 NeoVim(下文简称 nvim)作为编辑器,vim-plug 作为插件管理器管理所有的插件(包括 airline、leaderF、Coc.nvim等),再用 Coc.nvim 安装 coc-ccls 作为自动补全和定义跳转工具,由 ccls 提供语义分析支持。
其中 nvim 是 Vim 的替代品,相比 Vim 会有一些更激进的 Feature,同时和 Coc.nvim 的配合也更好(毕竟一开始就是基于 nvim 开发的),对于普通用户来说用法完全相同,不必关注其中的细节。
vim-plug 则是一款轻量级的 vim 插件管理器,支持全异步、多线程并行安装插件,支持git分支、标签等,可以对插件进行回滚更新、还支持按需加载插件,加快 vim 启动速度,同样也适配 nvim
Coc.nvim是一款针对nvim 所开发的智能感知插件,设计目标是基于微软的 language server protocol (LSP) 协议,为用户提供全面、可靠的智能感知体验。其本身是受 vim-plug 管理的一个插件,同时也是作为一个插件管理平台,可以安装 coc-ccls、coc-snippets 等优秀的插件用于提高用户的代码编写体验。
下面就正式的开始安装和配置过程:
首先是配置代理
echo "export http_proxy=ip:port" >> .bashrc
echo "export https_proxy=$http_proxy" >> .bashrc
接着是配置 epel 源,这一步为我们添加了一个更全面的软件仓库
yum install epel-release
安装 git cmake 和 wget 等工具
yum install git cmake wget
安装 python3 及 dev 环境,这是 Coc.nvim 以及很多其他优秀插件的依赖,这里选择的版本是 3.8.x
yum install python38 python38-devel
#设置默认 python
which python3
sudo alternatives --set python /usr/bin/python3
接下来正式安装第一个重要的部分,也就是编译环境,我们使用 gcc-toolset,这也是红帽系操作系统中最常用的,包含了 gcc、gdb 等我们常用的编译调试工具,尤其替换升级时非常的友好。
yum install gcc-toolset-10
#启用 gcc-10
echo "#enable gcc-10" >> ~/.bashrc
echo "source /opt/rh/gcc-toolset-10/enable" >> ~/.bashrc
就这样我们的编译环境就安装好了,是不是非常简单呢。接着就是稍微复杂一点的部分,也就是 nvim 的安装和配置
首先下载 nvim,这里我们直接通过 github 下载最新的 release 版本
wget https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage && ./nvim.appimage
mv nvim.appimage /usr/bin/nvim
接着创建一下 nvim 的配置文件
mkdir -p ~/.config/nvim
touch ~/.config/nvim/init.vim
安装 nodejs
dnf module list nodejs
dnf module install nodejs:12
npm install -g neovim
稍微解释一下这里之所以要选择安装的版本是因为 nodejs 默认的版本比较低,而 Coc.nvim 所需要的最低版本是 12
接着安装 pynvim
pip3 install -U neovim
nodejs 和 pynvim 安装完成后我们打开 nvim,执行:checkhealth 应该就可以看到对应项了,类似下面这样:
## Python 3 provider (optional)
- INFO: `g:python3_host_prog` is not set. Searching for python3 in the environment.
- INFO: Executable: /usr/bin/python3
- INFO: Python version: 3.8.6
- INFO: pynvim version: 0.4.3
- OK: Latest pynvim is installed.
## Node.js provider (optional)
- INFO: Node.js: v14.16.1
- INFO: Nvim node.js host: /usr/local/lib/node_modules/neovim/bin/cli.js
- OK: Latest "neovim" npm/yarn package is installed: 4.10.0
## Python virtualenv
- OK: no $VIRTUAL_ENV
接着安装 vim-plug 作为我们的插件管理器
curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
安装 ccls 提供语义解析支持
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
#配置 snap 代理
systemctl edit snapd
#添加以下内容
[Service]
Environment="http_proxy=ip:port"
Environment="https_proxy=ip:port"
#如果提示 error: too early for operation... ,稍等一会儿再尝试
snap install ccls --classic
#将 snap 安装位置加入 $PATH
export PATH="/var/lib/snapd/snap/bin:$PATH"
安装 Coc.nvim(和一些其他插件)
将以下内容加入 ~/.config/nvim/init.vim 中,重启 nvim 并执行 :PlugInstall 以安装 Coc.nvim 和其他插件
call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'vim-airline/vim-airline'
Plug 'morhetz/gruvbox'
Plug 'preservim/nerdtree'
Plug 'preservim/nerdcommenter'
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' }
Plug 'Yggdroot/indentLine'
Plug 'honza/vim-snippets'
call plug#end()
接着配置 Coc.nvim
:CocInstall coc-json
#编辑 coc-setting.json 配置文件
:CocConfig
#添加内容如下
{
"diagnostic.displayByAle":true,
"languageserver": {
"ccls": {
"command": "ccls",
"filetypes": ["c", "cc", "cpp", "c++"],
"rootPatterns": [".ccls", "compile_commands.json", ".git/", ".root"],
"initializationOptions": {
"cache": {
"directory": ".cache/ccls"
},
"highlight": {"lsRanges": true }
}
}
}
}
#安装 coc-ccls
:CocInstall coc-ccls
#如果提示 [coc.nvim] Unable to load global extension at /home/p...
cd ~/.config/coc/extensions/node_modules/coc-ccls
ln -s node_modules/ws/lib lib
全部插件安装完成后需要回到 ~/.config/nvim/init.vim 文件添加插件的相关配置,然后重新打开 nvim 即可。
到这里配置过程就结束了,如果你喜欢的话不妨点赞支持一下~
完整的配置文件在这里: