vscode 使用配置指南
vscode设置主要围绕.vscode/目录展开,包括特定语言配置文件和settings.json,文件,以及调试用launch.json文件和tasks.json文件,额外的会在文件夹根目录创建.xxxx等配置文件进行进一步扩展
配置包括:
官网资源:
vscode 配置的关键字指南
vscode配置里的关键字,官网连接:Variables reference
建议看官网解释,有输入和命令关键字,高级用法。
| 变量 | 作用 | 中文 |
|---|---|---|
| ${userHome} | Path of the user’s home folder | 用户home目录 |
| ${workspaceFolder} | Path of the folder opened in VS Code | 打开的文件夹路径 |
| ${workspaceFolderBasename} | Name of the folder opened in VS Code without any slashes (/) | 打开的文件夹名 |
| ${file} | Currently opened file | 当前打开的文件 |
| ${fileWorkspaceFolder} | Currently opened file’s workspace folder | 挡开打开的文件的工作区文件夹名 |
| ${relativeFile} | Currently opened file relative to workspaceFolder | |
| ${relativeFileDirname} | Currently opened file’s dirname relative to workspaceFolder | |
| ${fileBasename} | Currently opened file’s basename | |
| ${fileBasenameNoExtension} | Currently opened file’s basename with no file extension | |
| ${fileExtname} | Currently opened file’s extension | |
| ${fileDirname} | Currently opened file’s folder path | |
| ${fileDirnameBasename} | Currently opened file’s folder name | |
| ${cwd} | Task runner’s current working directory upon the startup of VS Code | |
| ${lineNumber} | Currently selected line number in the active file | |
| ${columnNumber} | Currently selected column number in the active file | |
| ${selectedText} | Currently selected text in the active file | |
| ${execPath} | Path to the running VS Code executable | |
| ${defaultBuildTask} | Name of the default build task | |
| ${pathSeparator} | Character used by the operating system to separate components in file paths | |
| ${/} | Shorthand for ${pathSeparator} |
作用举例:
Suppose that you have the following conditions:
- A file located at /home/your-username/your-project/folder/file.ext opened in your editor;
- The directory /home/your-username/your-project opened as your root workspace.
This leads to the following values for each of the variables:
- ${userHome}:
/home/your-username - ${workspaceFolder}:
/home/your-username/your-project - ${workspaceFolderBasename}:
your-project - ${file}:
/home/your-username/your-project/folder/file.ext - ${fileWorkspaceFolder}:
/home/your-username/your-project - ${relativeFile}:
folder/file.ext - ${relativeFileDirname}:
folder - ${fileBasename}:
file.ext - ${fileBasenameNoExtension}:
file - ${fileExtname}:
.ext - ${fileDirname}:
/home/your-username/your-project/folder - ${fileDirnameBasename}:
folder - ${lineNumber}: line number of the cursor
- ${columnNumber}: column number of the cursor
- ${selectedText}: text selected in your code editor
- ${execPath}: location of Code.exe
- ${pathSeparator}:
/on macOS or linux,\on Windows
c/cpp 优化
c cpp语言优化与支持,需要依赖以下文件:
.vscode\c_cpp_properties.json: c cpp 的intellisence 配置文件,为c语言函数跳转,提示等提供基础的环境和目录以及宏定义等.vscode\settings.json: 更改配置使用.vscode/launch.json: 开启调试.vscode/tasks.json: 执行任务,编译,清理等- 额外的可能还需要以下文件
.clangd: clangd 的动态语法检查,函数提示跳转等强力功能的配置文件,该功能与上述intellisence冲突.clang-format: clang 强大的format配置文件.clang-tidy: clang 静态语法检查
include优化
文件:.vscode\c_cpp_properties.json, 针对无项目管理的项目,比如makafile项目(eclipse), cmake项目建议使用下述的cmake配置提供器;示例内容:
1 | { |
代码跳转、补全等的来源项
文件:.vscode\settings.json,建议设置为cmake项目,非cmake项目需要配置include path才行。内容:
1 | { |
clang 在vscode的使用(非编译)
参考链接:
- VS Code + Clang-format 格式化代码
- format文件
- Clang-Tidy 是什么?如何让你的代码更干净无瑕
- 简单介绍了使用方法
- 没有结合插件,只能命令行
- VSCode中针对C语言的代码格式化配置
- 图形化配置format为clang-format
- 设置里可以直接配置format的格式
- Extra Clang Tools 20.0.0git 文档 - Clang-tidy 文档
- 官网的clangd-tidy文档,生肉
- 使用 Clang-Tidy 进行静态代码分析:完整的配置与 CMake 集成实例
作用:
- clang-format 实现更加全面的代码格式化
- clangd 提供代码检查、跳转、补全等功能
- clang-tidy 提供静态检查
C/Cpp扩展自带clang-format执行程序,和dity, 关于clangd clang-format clang-tidy,针对cmake项目,cmake-tools提供include,intelliSence提供跳转和补全,c/cpp提供format和静态分析;
若安装了clangd一整套且拥有llvm环境,那么推荐使用clangd扩展接管intelliSence 和 c/cpp 功能,clangd 插件与c/cpp插件冲突,只能二选一;cmake-tools只提供include优化。
方案1:只使用c/cpp,和cmake-tools,文件.vscode\settings.json,内容:
1 | { |
方案2:只使用clangd,和cmake-tools,文件.vscode\settings.json,内容:这里只启用了clangd的代码检查未启用格式化,已启用tidy,严格依赖cmake,不然没有compile_commands.json。keil项目有插件可以实现。
1 | { |
总结:电脑够强直接clangd全套。
上述案例中用到的.clang-format文档:
1 | Language: Cpp |
以下是更加完全完整的.clang-format文档
关于tidy的启用
- clangd,项目打开后会非常占用cpu
- cpptools,项目打开后会非常占用cpu,推荐设置里调试
- cmake,推荐cmake结合tidy,编译时检查,编译时非常占用cpu
目前搁置;嵌入式项目暂时不建议启用。
cpp-tools 的 vcformat
针对单独的格式格式化,推荐使用,自定义成都比较高,但是格式化项少。
文件.vscode\settings.json, “C_Cpp.vcformat.xxxxx”项,推荐文件设置,不用设置的ui。
1 | { |
cpp 调试以及调试配置
主要依靠.vscode/launch.json和.vscode/tasks.json文件,一个是启动调试,一个是创建用户任务。
简单项目可以依靠c语言的插件,cpp多文件插件:C/C++ Runner(franneck94);单文件C/C++ Compile Run danielpinto8zz6
有编译过程(makefile)的可以使用tasks和launch
cmake的用cmake
- 这一部分可看vscode中Cpp配置和调试方法
文件.vscode/launch.json,创建调试配置:
1 | { |
文件.vscode/tasks.json配置内容:
1 | { |
调试控制台使用方法
开始调试后,调试控制台直连调试器,使用exec 开头的指令,后跟调试器指令即可,比如exec print a,支持命令简称exec p a。
gdb调试命令 可看GDB调试命令详解:
| 命令 | 作用 |
|---|---|
| (gdb) break (b) | 在源代码指定的某一行设置断点,其中xxx用于指定具体打断点位置 |
| (gdb) run (r) | 执行被调试的程序,其会自动在第一个断点处暂停执行。 |
| (gdb) continue (c) | 当程序在某一断点处停止后,用该指令可以继续执行,直至遇到断点或者程序结束。 |
| (gdb) next (n) | 令程序一行代码一行代码的执行。 |
| (gdb) step(s) | 如果有调用函数,进入调用的函数内部;否则,和 next 命令的功能一样。 |
| (gdb) until (u) (gdb) until (u) location | 当你厌倦了在一个循环体内单步跟踪时,单纯使用 until 命令,可以运行程序直到退出循环体。 until n 命令中,n 为某一行代码的行号,该命令会使程序运行至第 n 行代码处停止。 |
| (gdb) print (p) | 打印指定变量的值,其中 xxx 指的就是某一变量名。 |
| (gdb) list (l) | 显示源程序代码的内容,包括各行代码所在的行号。 |
| (gdb) finish(fi) | 结束当前正在执行的函数,并在跳出函数后暂停程序的执行。 |
| (gdb) return(return) | 结束当前调用函数并返回指定值,到上一层函数调用处停止程序执行。 |
| (gdb) jump(j) | 使程序从当前要执行的代码处,直接跳转到指定位置处继续执行后续的代码。 |
| (gdb) quit (q) | 终止调试。 |
打印数组:
1 |
|
lldb 调试
挖坑
针对不同文件的编码优化
文件:.vscode\settings.json,内容:
1 | { |