VSCode C/C++环境
VSCode
官网:https://code.visualstudio.com/
下载页面:https://code.visualstudio.com/#alt-downloads
介绍
- 开源:代码https://github.com/microsoft/vscode
- 跨平台:支持macOS,Linux,Windows,远程开发,容器开发(docker)
- 更新快:一月一更
- 插件:插件数量多,而且质量高
VSCode的定位:
UI外观
- Editor Groups:编辑区
- Side Bar侧边栏:
- 项目
- 全局搜索
- 版本管理
- 调试Debug
- 插件管理
- Status Bar状态栏:
- git相关信息
- 错误和警告Problems
- 光标位置
- indent对齐信息
- 文件编码格式
- 文件结束符号
LF
(Linux)/CRLF
(Windows) - 当前文件的编程语言
- Activity Bar:
- Panels面板:(
ctrl + J
显示和隐藏)- Terminal终端
- Debug相关信息
- 错误和警告Problems
常用快捷键
VSCode中最最最最最重要的快捷键:Ctrl+Shift+P / F1
Command Pattern
这个窗口能执行VSCode所有操作/命令:
- 设置:VSCode设置,主题设置,语言设置...
- 格式化代码
- Debug控制:
- git操作:切换分支,新建tag,
- ...
设置
- 默认设置(不能修改,提供初始设置,模板的作用)
- 用户设置👍
- 项目设置:项目根目录下
.vscode
一般改用户配置就可以了,项目具体需要可以去添加项目设置
修改设置有两种方式:UI修改和直接修改settings.json
文件,本质都是修改settings.json
文件
命令Preferences:Open Settings
主题设置
上千种主题
命令Preferences:Color Theme
图标设置
增加文件辨识度
命令Preferences:File Icon Theme
语言设置
VSCode默认是英文版本,可修改成中文
命令:Configure Display Language
键盘设置
VSCode + Vim:能提供最高效的编辑代码方式
命令:Preferences:Keymaps
基本使用
- 代码导航
- 多光标编辑
- 列选中
- 查找和替换
- 智能提示
- 格式化
- 代码折叠
代码导航
- 文件转跳
- 直接左侧打开
Ctrl+P
搜索打开
- 文件内转跳
- 左侧Outline
- 跳到Symbol(函数,全局变量,枚举,宏)
Ctrl+Shift+O
- 搜索转跳
Ctrl+F
- 通过
minimap
转跳,滚动 - 按住
Alt
键,加速窗口滚动
- 转跳到定义,在对应的变量上,右键
Go to Definition
或F12
多光标编辑
Alt+Click
列选中
按住Shift+Alt
,同时按鼠标左键
查找与替换
- 查找:
- 当前文件查找
Ctrl+F
- 项目里面查找(大项目可能有问题,用grep替代)
Ctrl+Shift+F
- 当前文件查找
- 匹配
- 大小写匹配
- 匹配整个单词
- 使用正则表达式匹配
格式化
配置文件自动保存,保存时并格式化
{
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 100, // 延时100ms保存文件
"editor.formatOnSave": true // 保存时格式化代码
}
代码折叠
Snippets
作用: 生成代码模板
使用:Tab
键补全,Tab
键在定义的光标转跳
配置Snippets
每个语言有对应的json配置文件;比如c语言对应的配置文件是c.json
命令Preferences: Configure User Snippets
回车,选择c.json
{
"init main": {
"prefix": "main",
"body": [
"#include <stdio.h>",
"#include <stdlib.h>",
"#include <string.h>",
"",
"int main(int argc, char *argv[])",
"{",
" $0",
" return 0;",
"}"
],
"description": "Basic main function"
}
// ...
}
配置解释:输入prefix里面的内容,Tab补全生成body中的模板
Terminal终端
打开方式:
- 快捷键
Ctrl+`
(Tab键上的按键) - 菜单栏:View > Terminal
功能:
- 多窗口
- 分屏
- 最大化
配置:设置选中同时复制
{
"terminal.integrated.copyOnSelection": true
}
Debug调试
需要安装插件:CodeLLDB
配置文件.vscode/launch.json
,将<my program>
替换成你的debug版本程序
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<my program>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
![](/assets/VSCode_debugging_hero.B52-AwuD.webp)
VSCode命令行
配置:将code
命令添加到环境变量
命令:Shell Command: install code command in PATH
# 1.打开目录或文件
# 语法:code <file or dir>
$ code linux-kit
# 2.简单对比文件差异
# 语法:code -d <file> <file>
$ code -d file1 file2
插件
推荐插件列表:
- clangd:c/c++插件
- CodeLLDB:debug插件
- CMake:CMake语法插件
- CMake Tools:CMake工具插件
- Code Runner:一键运行插件(c/c++:单个源文件)
- GitLens:Git增强插件
- gitignore:Git ignore插件
- Doxygen Documentation Generator:生成注释模板插件
其它美化插件:
- Error Lens:把错误和警告显示在编辑区
- vscode-icons:文件图标增强插件
- Todo Tree:显示项目中的todo列表,高亮todo
- Color Highlight:颜色值高亮
插件安装:
- 打开上面插件的链接地址,转跳到浏览器
- 复制插件的安装命令,类似
ext install llvm-vs-code-extensions.vscode-clangd
(仅Linux,其它平台有安装按键,点击即可) - 在VSCode按
Ctrl+P
,然后粘贴上面内容,回车即可
clangd:c/c++插件
功能:
- 代码补全
- 自动导入头文件
- 编译错误和警告
- 代码转跳
- 代码格式化
- 简单重构(经量少用)
F2
配置:
clangd的提示依赖于
compile_commands.json
文件
生成compile_commands.json文件:
- CMake项目:编译时开户
CMAKE_EXPORT_COMPILE_COMMANDS
- 命令行添加:
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- CMakeLists.txt中添加
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
- 命令行添加:
- Makefile项目:执行
make clean; bear -- make
clangd整合了代码格式化工具clang-format,代码静态检查工具clang-tidy
clang-format配置:
在项目根目录下添加.clang-format
文件
clang-tidy配置:
在项目根目录下添加.clangd
文件
CodeLLDB:debug插件
配置文件.vscode/launch.json
,将<my program>
替换成你的debug版本程序
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<my program>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
CMake:CMake语法插件
提供CMake语法高亮,简单提示
CMake Tools:CMake工具插件
简单项目演示:
- CMake:Quick Start 新建项目
- 选择编译器(可以先不选)
- 项目名字
- 选择生成库还是可执行程序
- CMake:Select Variant 选择编译版本
- CMake:Configure 配置(生成其它编译系统的配置文件)
- CMake:Build 编译
Code Runner:一键运行插件(c/c++:单个源文件)
原理:提供了一种触发机制
c语言会触发下面cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
的shell命令
Code Runner中的一段配置:
{
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\\php\\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
"go": "go run",
"html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
}
}
GitLens:Git增强插件
文档:https://github.com/eamodio/vscode-gitlens
gitignore:Git ignore插件
简化.gitignore
文件编写,提供了不同语言,不同项目的.gitignore
模板
- 命令
Add gitignore
,没有.gitignore
会创建,有可以选择追加或覆盖
Doxygen Documentation Generator:生成注释模板插件
输入/**
,然后按Tab
键生成注释模板
如果tab无法生成模板,注意在上面空行
Error Lens:把错误和警告显示在编辑区
默认错误和警告在panel面板里面,查看不方便
vscode-icons:文件图标增强插件
配置演示图:
Todo Tree:显示项目中的todo列表,高亮todo
![](/assets/VSCode_screenshot.CcIYhk02.webp)
Color Highlight:颜色值高亮
'#FFFF00' '#FF00FF' '#FF0000' '#0000FF'
配置文件
VSCode设置文件:settings.json
Snippets配置文件:c.json
,cpp.json
代码格式化文件:.clang-format
代码静态分析文件:.clangd
常见问题:
1.VSCode遇到了Bug:
重新加载VSCode
2.插件遇到了Bug:
安装老版本,或者用过的相对稳定的版本的插件
![](/assets/image-20210709005511695.CoubdtiK.webp)
3.大项目全局搜索失效:
解决方式:
- 配置只搜索哪些文件,和配置不搜索哪些文件
![](/assets/VSCode_image-20210422011735490.XJeJfL_p.webp)
- 使用grep做为替代
4.大项目文件更新或者创建了VSCode不显示:
项目文件过多,vscode无法跟踪目录下所有文件变化
解决方式:
- 配置VSCode不去跟踪哪些目录或文件的变化,来减少VSCode跟踪文件的数目
// todo
{
"files.exclude": {
"**/.git": false,
"**/.idea": true,
"**/.classpath": true,
"**/.settings": true,
"**/.project": true,
"**/.factorypath": true,
"**/node_modules": true
}
}
- 手动刷新
![](/assets/VSCode_image-20210422004320976.CmwqC2AS.webp)