Rekord
文章31
标签23
分类4
配置 vim + c/cpp 开发环境

配置 vim + c/cpp 开发环境

前置提示

由于整个过程中涉及到很多 Git 网络操作,请务必保持“网络通畅”
笔者配置的环境为 wsl(ubuntu) ,如果你也和我一样,可以参考这篇解决WSL下使用Clash for Windows的记录文章对网络的可访问性进行优化。

具体操作下来就是在shell中执行以下命令配置好代理。

export http_proxy='http://192.168.3.4:7890'  # 根据实际IP和端口修改地址
export https_proxy='http://192.168.3.4:7890'
export all_proxy='socks5://192.168.3.4:7890'
export ALL_PROXY='socks5://192.168.3.4:7890'
git config --global http.proxy "http://192.168.3.4:7890"
git config --global https.proxy "https://192.168.3.4:7890"

代码补全

笔者这里选用的是YouCompleteMe,应该还有针对 c/cpp 更加轻量化或者专有化的 vim 插件,欢迎留言推荐。

由于我已经使用了 vim-plug 作为 vim 插件管理器,所以这里详细讲解一下如何使用 vim-plug 安装、配置 YouCompleteMe。其实官方更推荐的是使用 Vundle 插件管理器,不过安装配置方式也大同小异。

首先在 vim 配置文件中加入如下行:

" vim-plug
call plug#begin('~/.vim/plugged')

" youcompleteme
Plug 'ycm-core/YouCompleteMe'

" Initialize plugin system
call plug#end()

然后在 vim 中执行:PlugInstall(不同的插件管理器有不同的安装命令,具体差异请查阅文档)。这时如果一切正常,那么 YouCompleteMe 的源码仓库应该被克隆到了 ~/.vim/plugged/ 目录(如果是使用 vundle,那么安装目录应当是 ~/.vim/bundle/)。

紧接着进入本地的 YouCompleteMe 目录(如上所述),并在该目录下依次执行:

git submodule update --init --recursive
# 安装依赖
sudo apt install build-essential cmake vim-nox python3-dev
sudo apt install mono-complete golang nodejs openjdk-17-jdk openjdk-17-jre npm
python3 install.py --clangd-completer

由于我这里主要需要的是 C-family languages,所以使用了 --clangd-completer 编译选项,如果需要全部安装,可以使用 --all 选项,详细的语言选项可参考ycm编译参数

命令执行完毕后,代码应该就能自动补全了,可以使用 ctrl+n/p/TAB 在补全选项中进行切换选择。


改用coc.nvim

使用了ycm一段时间后发现,ycm稍显笨重,配置起来并不方便,搜索一番后故改用coc.nvim

coc.nvim类似于一个lsp管理平台,需要什么lsp就安装什么插件,通过它的一些内置命令从而能够便捷的管理各种lsp插件。

使用coc.nvim配置C/C++开发环境时,后端仍然是clangd

clangd是这样识别配置文件的:

  • 寻找当前文件的父目录
  • 寻找当前文件的父目录下的build子目录

然后在这两个目录中寻找compile_commands.jsoncompile_flags.txt文件。其中前者优先级比后者高,存在前者将忽略后者。

这里面存在一个小坑,当打开.h文件时,clangd会认为这是一个C文件,从而不支持C++语法,此时可以通过修改编译参数为-xcxx强制识别。

本文作者:Rekord
本文链接:https://sxrekord.com/build-cpp-dev-env/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×