系统需求:

Win7/Win8/Win10/Win11
32/64位CPU
20MB以上磁盘空间

第三方软件:

如果要使用工程管理,编译,调试,自动补全等功能时,根据具体情况需要用到不同的第三方的软件工具。
编译调试msvc生成的程序需要用到VisualStudio的编译器。(调试器使用操作系统内建的dbgeng,也可以由用户手动从WinDBG中提取)
编译调试gcc生成的程序需要用到gcc的Windows版本,如:msys2/mingw32/mingw-w64。GDB的Windows版本。
编译调试llvm-msvc版本(即llvm官方windows版本)生成的应用需要依赖Windows SDK(VisualStudio中已经包含)。
编译调试llvm-mingw版本生成的应用需要依赖mingw32运行库以及gdb。
编译调试WSL应用时,您需要准备WSL环境,并在环境内安装gcc,gdb,cmake,ninja-build工具。
CMake工程需要用到CMake及Ninja-Build工具。
C/C++语法补全需要用到clangd。(llvm-msvc官方发行的Windows版本中包含,msys2中的版本不稳定经常崩溃)
Ninja-Build v1.10 官方网站
CMake v3.8及以上版本 官方网站
LLVM 官方网站 国内镜像
clangd v11.0以上版本官方网站
VisualStudio 官方网站
MSYS2 官方网站 国内镜像
GIT 官方网站
Intel OneAPI 官方网站 虽然intel的编译器在大多数场景下并没有太大优势,但其中的VTune等工具对于性能优化有非常大的帮助
GCC v12.2 + Binutils 2.38 + GDB v12.1 + LLD v15.0.4 + Ninja-Build 1.10.2  整合包
更新时间: 2022-11-13
此包中gcc,binutils,gdb为私有编译版本。Ninja-Build,LLD由官方发行版中提取。
其中:
gcc整合了msys中gcc12.2-6的所有补丁。整合了mingw-w64-i686及mingw-w64-x86_64 v10.0运行时库,可以生成32/64位Windows桌面应用。
gdb整合了x86/x64/arm/aarch64/avr/risv/risv64/xtensa的pe32,pe32+,elf32,elf64,bin支持,可以调试Windows,Linux及常用的嵌入式/MCU平台目标。
GCC v12.1 + Binutils 2.38 + GDB v12.1 + LLD v14.0 + Ninja-Build 1.10  整合包
更新时间: 2022-05-14
此包中gcc,binutils,gdb为私有编译版本。Ninja-Build,LLD由官方发行版中提取。
其中:
gcc修正了Windows下GCH(gcc的预编译头支持)异常。整合了mingw-w64-i686及mingw-w64-x86_64 v9.0运行时库,可以生成32/64位Windows桌面应用。
gdb整合了x86/x64/arm/aarch64/avr/risv/risv64/xtensa的pe32,pe32+,elf32,elf64,bin支持,可以调试Windows,Linux及常用的嵌入式/MCU平台目标。
GCC v11.2 + Binutils 2.37 + GDB v11.1 + clangd v13 + CMake 3.21 + Ninja-Build 1.10  整合包
此包中gcc,binutils,gdb为私有编译版本。CMake,Ninja-Build, clangd由官方发行版中提取。
其中:
gcc修正了Windows下GCH(gcc的预编译头支持)异常。整合了mingw-w64-i686及mingw-w64-x86_64 v9.0运行时库,可以生成32/64位Windows桌面应用。
gdb整合了x86/x64/arm/aarch64/avr/risv/risv64/xtensa的pe32,pe32+,elf32,elf64,bin支持,可以调试Windows,Linux及常用的嵌入式/MCU平台目标。
拆分包:
GCC v11.2 + Binutils 2.37 下载
GDB v11.1 下载
GDB v11.1 for Win7 下载 (Win7系统用户需单独下载此版本)
clangd v13 + CMake 3.21 + Ninja-Build 1.10 下载

第三方软件配置:

CMake,Ninja-Build,GDB需要添加到系统的PATH环境中。
以下工具会从相应安装路径中自动搜索:
llvm-msvc,clangd会自动从llvm的安装路径中查找。
msvc的编译器及Windows SDK会自动搜索VisualStudio的安装路径。
Intel oneAPI编译器会自动搜索其安装路径。
mingw/msys2会自动搜索C,D,E,F盘下的msys32/msys64/mingw32/mingw64等路径。
WSL会自动搜索已经安装的WSL分发版本。
所有搜索动作会自动进行,无需用户干预。

常用见问题

如何关联文件管理器右键菜单?

菜单栏 > 帮助 > 关联右键菜单

如何关联Win11文件管理器右键菜单?

0.4.0.819版本开始支持Win11右键菜单
但必须打开 系统设置 > 开发人员模式 > 从任意源安装应用 选项
准备好后依次运行以下命令即可:
运行 regsvr32 shell_ext.dll 手工注册文件管理器扩展
运行 powershell -command add-appxpackage -register appxmanifest.xml 注册应用

如何使文件管理器右键菜单打开文件到当前编辑器?

文件 > 编辑配置文件
找到config > global > single_instance
将“enabled”属性改为“true”并保存

如何创建CMake工程?

新建并打开一个空目录
在“工程”面板 的右键菜单中选择 “新建” > “文件”
输入文件名“CMakeLists.txt”并回车
修改并保存自动生成的CMake模板

如何解决更新VS后CMake工程编译失败的问题?

菜单栏 > CMake > 重建缓存

如何一次性折叠/展开所有代码块?

全选 > Ctrl + M, M

如何一次性折叠/展开区块下的所有代码块?

Ctrl + M, L
Ctrl + 鼠标左键 点击要折叠/展开代码块行号后的 "+"

如何快速关闭打开的多个文件?

文本编辑器 > 右键菜单 > 关闭其它文件
将关闭除当前文件外的所有其它文件
工程面板 > 选中目录 > 右键菜单 > 关闭已打开文件
将关闭当前目录下已经打开的所有文件

如何设置CMake工程运行/调试目标的参数?

打开工程根目录中的“settings.lua”文件
project_configs = {
  [".targets"] = {
    ["目标名称写这里"] = {
      cwd = [[运行路径写这里]];
      argument = [[运行参数写这里]];
    };
  };
};						

如何为CMake工程中,不同的工具链设置不同的运行/调试目标的参数?

打开工程根目录中的“settings.lua”文件
project_configs = {
  [".targets"] = {
    ["目标名称写这里"] = {
      cwd = {
        ["工具链名称1"] = [[工作路径1]];
        ["工具链名称2"] = [[工作路径2]];
      };
    };
  };
};						

如何切换文件的编码?

双击状态栏中的当前编码信息,在弹出的编码菜单中选择即可

如何取消正在执行的文件搜索任务?

双击状态栏中的搜索进度即可取消当前的搜索任务

如何中断当前的编译任务?

Ctrl + Pause

mingw32中的gcc编译程序很慢怎么办?

binutils中的ld链接速度很慢,尤其是启用了LTO和调试信息的情况下。
大多数情况下,可以使用llvm中的lld来代替,性能可以提升约50%。
只需要把mingw32/x86_64-w64-mingw32/bin/ld.exe用llvm中的ld.lld.exe覆盖即可。
注意:由于存在兼容性问题。部分程序可能无法正常链接。请保留好备份。
适当的使用预编译头可以节约大量的编译时间。
拆分编译单可以减少修改代码后的编译代码量。但会增加整体编译时间
合理组织代码结构,减少代码依赖关系。有利于减少编译的代码量。
C++中的模板是影响编译速度的重要因素。

为什么C++没有语法提示?

C++的语法提示依赖于clangd。请确保系统中安装了clangd。或clangd在搜索路径里。
如果语言服务中有日志,说明clangd已经启动。
此时,语法提示仍然不正常可能是由于编译器工作不正常。
由于clangd不会自动配置编译器的环境,建议将编译器添加到PATH环境变量中。

快捷键列表:

文件

新建文件 Ctrl + N
打开文件 Ctrl + O
打开目录 Alt + O
打开文件到当前缓冲 Ctrl + Shift + O
关闭当前文件 Ctrl + F4
保存文件 Ctrl + S
另存文件为 Ctrl + Shift + S
保存所有文件 Ctrl + Shift + A

移动光标

移动光标(单个字符)
移动光标(整个单词) Ctrl +
Ctrl +
移动光标到行首 Home
移动光标到行尾 End
行移动光标
整页移动光标 PageUp
PageDown
移动光标到首行 Ctrl + Home
移动光标到尾行 Ctrl + End
移动光标到对应括号 Ctrl + ]
移动光标到指定行号 Ctrl + G
移动光标到前一历史位置 Ctrl + -
移动光标到后一历史位置 Ctrl + Shift + -

选择

全选 Ctrl + A
取消选中区域 Esc
扩展选区(单个字符) Shift +
Shift +
扩展选区(整个单词) Ctrl + Shift +
Ctrl + Shift +
扩展选区到首行 Shift + Home
扩展选区到尾行 Shift + End
向上选中一页 Shift + PageUp
向下选中一页 Shift + PageDown
扩展选区到对应括号 Ctrl + Shift + ]
选中当前单词 Ctrl + W
列选择 Alt + Shift +
Alt + Shift +
Alt + Shift +
Alt + Shift +
Alt + Shift + 鼠标左键单击
Alt + 鼠标左键拖选

编辑

向上插入新行 Shift + Enter
向下插入新行 Ctrl + Enter
删除后一个字符 Delete
删除前一个字符 Backspace
删除整行 Shift + Delete
删除选区 Delete (选中状态)
Backspace (选中状态)
剪切整行 Ctrl + X
剪切选区 Ctrl + X (选中状态)
撤销 Ctrl + Z
复制整行 Ctrl + C
复制选区 Ctrl + C (选中状态)
重做 Ctrl + Y
粘贴 Ctrl + V
循环粘贴 Ctrl + Shift + V
重复整行 Ctrl + D
重复选区 Ctrl + D (选中状态)
增加缩进 Tab (选中状态)
减少缩进 Shift + Tab
格式化 Ctrl + KCtrl + F
Ctrl + KF
注释代码 Ctrl + KCtrl + C
Ctrl + KC
取消注释 Ctrl + KCtrl + U
Ctrl + KU
选中文本转为小写 Ctrl + U
选中文本转为大写 Ctrl + Shift + U

查找替换

查找 Ctrl + F
多文件查找 Ctrl + Shift + F
查找下一项 F3
查找上一项 Shift + F3
增量查找 Ctrl + I
向上增量查找 Ctrl + Shift + I
查找帮助信息 F1

代码提示与导航

列出成员/补全 Alt + .
显示参数信息 Alt + ,
显示符号信息 Ctrl + Q
鼠标悬停
跳转到头文件 Ctrl + Shift + G
跳转到声明/定义 F12
列举当前文件结构 Ctrl + F12
查找实现 Alt + F12
查找引用 Shift + F12
定位当前文件 Alt + L

编译/调试

编译当前项目 Ctrl + B
停止编译 Ctrl + Break
Ctrl + Pause
编译所有项目 Ctrl + Shift + B
重新生成所有项目 Ctrl + Alt + F7
编译并运行 Ctrl + F5
启动调试器 F5
终止调试 Shift + F5
中断运行 Ctrl + F9
步过 F10
步入 F11
步出 Shift + F11
跳转执行点 Alt + F9 (仅对当前栈帧有效,有可能引起帧错误)
切换断点 F9
列举所有断点 Ctrl + Alt + B

窗口

切换到下个文件 Ctrl + Tab
切换到上个文件 Ctrl + Shift + Tab
切换全屏 Alt + Shift + Enter
切换到文本编辑器 Esc (文本编辑器在非焦点状态下)
切换到工程面板 Ctrl + Alt + L
切换到输出面板 Ctrl + Alt + O
切换到查找面板 Ctrl + Alt + F
切换到调试器面板 Ctrl + Alt + D
切换到局部变量 Ctrl + Alt + A
切换到监视面板 Ctrl + Alt + W
切换到调用栈 Ctrl + Alt + C
切换到线程面板 Ctrl + Alt + S
切换到模块面板 Ctrl + Alt + M