跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

格式化器

显式启用写入后格式化,设置内置覆盖、自定义命令与文件扩展名。

格式化器默认关闭。启用后,OpenCode 在写入或编辑文件时匹配扩展名,运行适用格式化命令,并应用结果。这会影响最终 diff,不能只审阅模型最初生成的文本。

开启与关闭

formatter: true 启用内置格式化器;formatter: {} 同样保留内置能力,允许后续覆盖或自定义。省略配置时关闭,明确设 false 可关闭其他配置层已经启用的格式化。

要只关闭一个工具,在对应条目设置 disabled: true。例如禁用 Prettier 不等于禁用全部格式化器,也不等于所有同扩展名的工具都关闭。

常用前提

格式化器适用示例所需条件
prettierJS/TS、HTML、CSS、Markdown、JSON、YAML项目 package.json 中有 prettier
biomeJS/TS 与多种 Web 文件biome.json 或 biome.jsonc
clang-formatC/C++、头文件等.clang-format
cargofmt / rustfmtRust对应命令可用
gofmtGogofmt 可用
ruffPython命令可用且有配置
uvPythonuv 可用
pintPHPcomposer.json 中有 laravel/pint
ocamlformatOCaml命令与 .ocamlformat
oxfmtJS/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 字段名称不同。

排查未格式化或多余修改

先确认总开关和最终配置,再检查扩展名、命令、项目依赖和所需配置文件。启用对象并不只启用自己写出的那一个条目,内置格式化器仍保留。

观察真实文件变化,确认格式化符合仓库标准。需要关闭格式化时调整相应条目或总开关,不要只删除模型提示中的格式要求。