Skip to content
FunCoding

Search

Search docs, Skills and MCP

格式化器

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

This page has not been translated into English yet. The original Chinese version is shown below.

格式化器默认关闭。启用后,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 字段名称不同。

排查未格式化或多余修改

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

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