格式化器
显式启用写入后格式化,设置内置覆盖、自定义命令与文件扩展名。
格式化器默认关闭。启用后,OpenCode 在写入或编辑文件时匹配扩展名,运行适用格式化命令,并应用结果。这会影响最终 diff,不能只审阅模型最初生成的文本。
开启与关闭
formatter: true 启用内置格式化器;formatter: {} 同样保留内置能力,允许后续覆盖或自定义。省略配置时关闭,明确设 false 可关闭其他配置层已经启用的格式化。
要只关闭一个工具,在对应条目设置 disabled: true。例如禁用 Prettier 不等于禁用全部格式化器,也不等于所有同扩展名的工具都关闭。
常用前提
| 格式化器 | 适用示例 | 所需条件 |
|---|---|---|
| prettier | JS/TS、HTML、CSS、Markdown、JSON、YAML | 项目 package.json 中有 prettier |
| biome | JS/TS 与多种 Web 文件 | biome.json 或 biome.jsonc |
| clang-format | C/C++、头文件等 | .clang-format |
| cargofmt / rustfmt | Rust | 对应命令可用 |
| gofmt | Go | gofmt 可用 |
| ruff | Python | 命令可用且有配置 |
| uv | Python | uv 可用 |
| pint | PHP | composer.json 中有 laravel/pint |
| ocamlformat | OCaml | 命令与 .ocamlformat |
| oxfmt | JS/TS,实验性 | 项目依赖及对应实验开关 |
官方还列出 air、cljfmt、dart、dfmt、gleam、htmlbeautifier、ktlint、mix、nixfmt、ormolu、rubocop、shfmt、standardrb、terraform、zig。应按实际扩展名和依赖检查,不因“内置”就假设程序已安装。
自定义条目
每个条目支持 disabled、command、environment 和 extensions。自定义格式化器必须提供命令,内置覆盖则可按需修改。
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}$FILE 被替换为待格式化路径,示例需要可用的 Deno。environment 为命令设置环境变量,与 LSP 配置的 env 字段名称不同。
排查未格式化或多余修改
先确认总开关和最终配置,再检查扩展名、命令、项目依赖和所需配置文件。启用对象并不只启用自己写出的那一个条目,内置格式化器仍保留。
观察真实文件变化,确认格式化符合仓库标准。需要关闭格式化时调整相应条目或总开关,不要只删除模型提示中的格式要求。