入门 Zed Industries 2026-09-14 17:42:19 · 0 阅读

第60章 Zed 编辑器 C 语言开发指南:配置 Clangd 与格式化

Zed 原生支持 C 语言开发。

Clangd:强制识别为 C 语言

Clangd 默认假设项目是 C++/C 混合编写的。如果仅使用 C 语言,可以指示 clangd 将文件作为 C 语言处理,方法是使用 -xc 标志。具体做法是在项目根目录创建 .clangd 文件,内容如下:

# yaml-language-server: $schema=https://json.schemastore.org/clangd.json
CompileFlags:
  Add: [-xc]

通常情况下,clang 和 gcc 会将 *.C*.H(大写后缀)识别为 C++ 而非 C,Zed 也遵循这一惯例。如果正在处理纯 C 项目(例如包含旧式大写路径 FILENAME.C 的项目),可以通过在设置中添加以下配置来覆盖此行为:

{
  "file_types": {
    "C": ["C", "H"]
  }
}

格式化

默认情况下,Zed 会利用 clangd 语言服务器对 C 代码进行格式化,行为类似于 clang-format 命令行工具。通过添加 .clang-format 文件即可进行配置,例如:

# yaml-language-server: $schema=https://json.schemastore.org/clang-format-21.x.json
---
BasedOnStyle: GNU
IndentWidth: 2
---

完整的选项列表参见 Clang-Format Style Options

可以通过快捷键 {#kb editor::Format} 或从命令面板中调用 {#action editor::Format} 操作来触发格式化,也可以启用“保存时自动格式化”。

可以在设置({#kb zed::OpenSettings})中的 Languages > C 下配置格式化选项,或在设置文件中添加以下内容:

  "languages": {
    "C": {
      "format_on_save": "on",
      "tab_size": 2
    }
  }

编译指令(Compile Commands)

某些项目使用 Clangd 时需要 compile_commands.json 文件才能正确分析代码。该文件包含编译数据库,告诉 clangd 项目应该如何构建。

CMake 编译命令

使用 CMake 时,只需在 CMakeLists.txt 中加入下面这行,即可自动生成 compile_commands.json

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

构建项目后,CMake 会在构建目录中生成 compile_commands.json,clangd 会自动识别它。

调试

你可以使用 CodeLLDB 或 GDB 调试原生二进制文件。(注意构建时需给 C 编译器传入 -g 参数,让生成的二进制文件包含调试信息。)以下是可添加到 .zed/debug.json 的调试配置示例。

构建并调试二进制文件

[
  {
    "label": "Debug native binary",
    "build": {
      "command": "make",
      "args": ["-j8"],
      "cwd": "$ZED_WORKTREE_ROOT"
    },
    "program": "$ZED_WORKTREE_ROOT/build/prog",
    "request": "launch",
    "adapter": "CodeLLDB"
  }
]

评论 (0)