Форматтеры
ZubrCode может форматировать файлы после того, как их изменили инструменты
write, edit или patch. Форматтеры по умолчанию выключены — включаются
конфигурацией:
{ "formatter": true}Включение
Заголовок раздела «Включение»formatter: true включает все встроенные форматтеры: каждый запускается,
когда доступны его команда и нужные файлы проекта. Объект включает
встроенные и позволяет их переопределить или добавить свои; пустой объект
сохраняет унаследованные настройки, а true возвращает встроенные.
Встроенные
Заголовок раздела «Встроенные»| Форматтер | Расширения | Требование |
|---|---|---|
gofmt |
.go |
команда gofmt |
mix |
.ex, .exs, .eex, .heex, .leex, .neex, .sface |
команда mix |
oxfmt |
.js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, .cts |
зависимость oxfmt в package.json |
prettier |
.js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, .cts, .html, .htm, .css, .scss, .sass, .less, .vue, .svelte, .json, .jsonc, .yaml, .yml, .toml, .xml, .md, .mdx, .graphql, .gql |
зависимость prettier в package.json |
biome |
те же расширения, что у prettier |
biome.json или biome.jsonc и бинарь @biomejs/biome |
zig |
.zig, .zon |
команда zig |
clang-format |
.c, .cc, .cpp, .cxx, .c++, .h, .hh, .hpp, .hxx, .h++, .ino, .C, .H |
команда clang-format и .clang-format |
ktlint |
.kt, .kts |
команда ktlint |
ruff |
.py, .pyi |
команда ruff и конфиг Ruff или запись зависимости |
air |
.R |
команда air (форматтер R) |
uv |
.py, .pyi |
команда uv с поддержкой uv format |
rubocop |
.rb, .rake, .gemspec, .ru |
команда rubocop |
standardrb |
.rb, .rake, .gemspec, .ru |
команда standardrb |
htmlbeautifier |
.erb |
команда htmlbeautifier |
dart |
.dart |
команда dart |
ocamlformat |
.ml, .mli |
команда ocamlformat и .ocamlformat |
terraform |
.tf, .tfvars |
команда terraform |
latexindent |
.tex |
команда latexindent |
gleam |
.gleam |
команда gleam |
shfmt |
.sh, .bash |
команда shfmt |
nixfmt |
.nix |
команда nixfmt |
rustfmt |
.rs |
команда rustfmt |
pint |
.php |
laravel/pint в composer.json |
ormolu |
.hs |
команда ormolu |
cljfmt |
.clj, .cljs, .cljc, .edn |
команда cljfmt |
dfmt |
.d |
команда dfmt |
Свои и изменённые
Заголовок раздела «Свои и изменённые»Именованная запись меняет встроенный форматтер или добавляет свой. Своему
нужны command и extensions:
{ "formatter": { "prettier": { "environment": { "NODE_ENV": "development" }, "extensions": [".js", ".ts"] }, "deno-markdown": { "command": ["deno", "fmt", "$FILE"], "extensions": [".md"] } }}| Поле | Тип | Поведение |
|---|---|---|
disabled |
boolean |
true — убрать этот форматтер |
command |
string[] |
заменить команду встроенного или задать свою |
environment |
объект | переменные окружения поверх окружения процесса |
extensions |
string[] |
список расширений (с точкой) |
Все поля необязательны: запись встроенного форматтера наследует пропущенные значения, а новая запись без команды или расширений не запускается.
command — массив аргументов, а не строка оболочки: $FILE заменяется на
абсолютный путь файла, команда выполняется в активной папке проекта.
Порядок подбора
Заголовок раздела «Порядок подбора»Файл сравнивается с extensions по последнему расширению, регистр важен
(.part.md не подходит к notes.part.md — у него расширение .md). Если
подходит несколько форматтеров, они пробуются в порядке регистрации, пока
один не завершится успешно; неудачный логируется, и пробуется следующий.
Выключение
Заголовок раздела «Выключение»Форматирование выключено, пока ни один файл конфигурации не задал
formatter. Выключить его поверх более общего файла:
{ "formatter": false}Один встроенный форматтер, не трогая остальные:
{ "formatter": { "prettier": { "disabled": true } }}