编辑器与IDE推荐

建议先阅读:01_下载与安装

原理

IDE/编辑器通过**语言服务器协议(LSP)**与编译器后端通信,提供代码补全、诊断、跳转等功能。LSP 由微软提出,将语言分析逻辑与编辑器 UI 解耦:

graph LR
 Editor[编辑器 VSCode/Vim] -->|LSP| clangd[clangd 语言服务器]
 clangd -->|读取| compile_commands.json
 clangd -->|调用| Compiler[编译器前端]
```cpp

clangd 是 LLVM 项目的 LSP 服务器,使用 Clang 的前端分析代码,因此其错误诊断与编译器完全一致。clangd 依赖 `compile_commands.json` 获取每个源文件的编译选项(头文件路径、宏定义等)。

CMake 生成该文件的方式:
```bash
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -B build
ln -s build/compile_commands.json .
```bash

---

## 语法

### VSCode 配置

必装插件:**C/C++** (Microsoft), **clangd**, **CMake Tools**

`.vscode/tasks.json`:编译任务,`Ctrl+Shift+B` 触发
`.vscode/launch.json`:调试配置,`F5` 触发,`preLaunchTask` 指定先编译后调试
`.vscode/c_cpp_properties.json`:IntelliSense 配置(编译器路径、C++ 标准)

| 快捷键 | 功能 |
|--------|------|
| `Ctrl+Shift+B` | 编译 |
| `F5` | 调试 |
| `F9` | 断点切换 |
| `F10` | 单步跳过 |
| `F11` | 单步进入 |
| `F12` | 跳转到定义 |
| `Ctrl+P` | 快速打开文件 |

### Visual Studio

Windows 旗舰 IDE。安装时勾选"使用 C++ 的桌面开发"工作负载。

| 快捷键 | 功能 |
|--------|------|
| `F5` | 调试 |
| `Ctrl+F5` | 无调试运行 |
| `F9` | 断点 |
| `F10` | 单步跳过 |
| `Shift+F11` | 跳出函数 |

> Community 版对个人/学生/开源项目免费,功能与付费版相同。

### CLion

JetBrains 出品,CMake 原生集成。学生可申请免费 License。

| 快捷键 | 功能 |
|--------|------|
| `Shift+F6` | 重命名重构 |
| `Ctrl+Alt+V` | 提取变量 |
| `Ctrl+Alt+M` | 提取函数 |
| `Double Shift` | 全局搜索 |

### Vim/Neovim

终端编辑器,SSH 远程开发首选。通过 coc.nvim + clangd 实现 IDE 级补全。

```bash
sudo apt install neovim clangd
```cpp

核心配置:安装 vim-plug 插件管理器,安装 `coc.nvim` 插件,执行 `:CocInstall coc-clangd`。

> Vim 学习曲线陡峭,初学者建议从 VSCode 开始。

### 在线编译器

| 工具 | 特点 |
|------|------|
| [Compiler Explorer](https://godbolt.org) | 实时汇编输出,对比多编译器多版本 |
| [Wandbox](https://wandbox.org) | 多语言支持,Boost 库 |
| [OnlineGDB](https://www.onlinegdb.com) | 在线调试(断点、单步) |

---

## 实践

1. 在 VSCode 中配置 tasks.json 和 launch.json,实现一键编译+调试。
2. 在 [godbolt.org](https://godbolt.org) 输入一段简单的循环求和代码,分别用 `-O0`、`-O2`、`-O3` 查看汇编差异。

**工具选择建议**:
| 场景 | 推荐 |
|------|------|
| 初学者入门 | VSCode |
| Windows 大型项目 | Visual Studio |
| CMake 跨平台项目 | CLion |
| SSH 远程开发 | Neovim |
| 快速测试/查看汇编 | Godbolt |

练习: Hello,World! 练习 (用所选编辑器的编译调试功能完成)