{"id":13412976,"url":"https://github.com/sbdchd/neoformat","last_synced_at":"2025-07-30T13:34:25.334Z","repository":{"id":6901576,"uuid":"53912779","full_name":"sbdchd/neoformat","owner":"sbdchd","description":":sparkles: A (Neo)vim plugin for formatting code.","archived":false,"fork":false,"pushed_at":"2025-07-26T16:54:53.000Z","size":537,"stargazers_count":2044,"open_issues_count":131,"forks_count":192,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-07-26T21:32:00.514Z","etag":null,"topics":["formatter","neovim","plugin","vim"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbdchd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-03-15T03:50:00.000Z","updated_at":"2025-07-26T16:54:58.000Z","dependencies_parsed_at":"2023-02-18T17:30:59.957Z","dependency_job_id":"7da84623-a770-4e7d-a7be-104dc390f4c7","html_url":"https://github.com/sbdchd/neoformat","commit_stats":{"total_commits":344,"total_committers":163,"mean_commits":"2.1104294478527605","dds":0.7209302325581395,"last_synced_commit":"b3b38589b39038dc12c2f5a59a828ed43439363a"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/sbdchd/neoformat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fneoformat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fneoformat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fneoformat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fneoformat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbdchd","download_url":"https://codeload.github.com/sbdchd/neoformat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbdchd%2Fneoformat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267875747,"owners_count":24158781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["formatter","neovim","plugin","vim"],"created_at":"2024-07-30T20:01:31.830Z","updated_at":"2025-07-30T13:34:25.311Z","avatar_url":"https://github.com/sbdchd.png","language":"Vim Script","readme":"# Neoformat [![Build Status](https://travis-ci.org/sbdchd/neoformat.svg?branch=master)](https://travis-ci.org/sbdchd/neoformat)\n\nA (Neo)vim plugin for formatting code.\n\nNeoformat uses a variety of formatters for many filetypes. Currently, Neoformat\nwill run a formatter using the current buffer data, and on success it will\nupdate the current buffer with the formatted text. On a formatter failure,\nNeoformat will try the next formatter defined for the filetype.\n\nBy using `getbufline()` to read from the current buffer instead of file,\nNeoformat is able to format your buffer without you having to `:w` your file first.\nAlso, by using `setline()`, marks, jumps, etc. are all maintained after formatting.\n\nNeoformat supports both sending buffer data to formatters via stdin, and also\nwriting buffer data to `/tmp/` for formatters to read that do not support input\nvia stdin.\n\n## Basic Usage\n\nFormat the entire buffer, or visual selection of the buffer\n\n```viml\n:Neoformat\n```\n\nOr specify a certain formatter (must be defined for the current filetype)\n\n```viml\n:Neoformat jsbeautify\n```\n\nOr format a visual selection of code in a different filetype\n\n**Note:** you must use a ! and pass the filetype of the selection\n\n```viml\n:Neoformat! python\n```\n\nYou can also pass a formatter to use\n\n```viml\n:Neoformat! python yapf\n```\n\nOr perhaps run a formatter on save\n\n```viml\naugroup fmt\n  autocmd!\n  autocmd BufWritePre * undojoin | Neoformat\naugroup END\n```\n\nThe `undojoin` command will put changes made by Neoformat into the same\n`undo-block` with the latest preceding change. See\n[Managing Undo History](#managing-undo-history).\n\n## Install\n\nThe best way to install Neoformat is with your favorite plugin manager for Vim, such as [vim-plug](https://github.com/junegunn/vim-plug):\n\n```viml\nPlug 'sbdchd/neoformat'\n```\n\n## Current Limitation(s)\n\nIf a formatter is either not configured to use `stdin`, or is not able to read\nfrom `stdin`, then buffer data will be written to a file in `/tmp/neoformat/`,\nwhere the formatter will then read from\n\n## Config [Optional]\n\nDefine custom formatters.\n\nOptions:\n\n| name               | description                                                                                                                                                   | default | optional / required |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------------------- |\n| `exe`              | the name the formatter executable in the path                                                                                                                 | n/a     | **required**        |\n| `args`             | list of arguments                                                                                                                                             | \\[]     | optional            |\n| `replace`          | overwrite the file, instead of updating the buffer                                                                                                            | 0       | optional            |\n| `stdin`            | send data to the stdin of the formatter                                                                                                                       | 0       | optional            |\n| `stderr`           | capture stderr output from formatter                                                                                                                          | 0       | optional            |\n| `no_append`        | do not append the `path` of the file to the formatter command, used when the `path` is in the middle of a command                                             | 0       | optional            |\n| `env`              | list of environment variable definitions to be prepended to the formatter command                                                                             | \\[]     | optional            |\n| `valid_exit_codes` | list of valid exit codes for formatters who do not respect common unix practices                                                                              | \\[0]    | optional            |\n| `try_node_exe`     | attempt to find `exe` in a `node_modules/.bin` directory in the current working directory or one of its parents (requires setting `g:neoformat_try_node_exe`) | 0       | optional            |\n\nExample:\n\n```viml\nlet g:neoformat_python_autopep8 = {\n            \\ 'exe': 'autopep8',\n            \\ 'args': ['-s 4', '-E'],\n            \\ 'replace': 1, \" replace the file, instead of updating buffer (default: 0)\n            \\ 'stdin': 1, \" send data to stdin of formatter (default: 0)\n            \\ 'env': [\"DEBUG=1\"], \" prepend environment variables to formatter command\n            \\ 'valid_exit_codes': [0, 23],\n            \\ 'no_append': 1,\n            \\ }\n\nlet g:neoformat_enabled_python = ['autopep8']\n```\n\nConfigure enabled formatters.\n\n```viml\nlet g:neoformat_enabled_python = ['autopep8', 'yapf', 'docformatter']\n```\n\nHave Neoformat use \u0026formatprg as a formatter\n\n```viml\nlet g:neoformat_try_formatprg = 1\n```\n\nEnable basic formatting when a filetype is not found. Disabled by default.\n\n```viml\n\" Enable alignment\nlet g:neoformat_basic_format_align = 1\n\n\" Enable tab to spaces conversion\nlet g:neoformat_basic_format_retab = 1\n\n\" Enable trimmming of trailing whitespace\nlet g:neoformat_basic_format_trim = 1\n```\n\nRun all enabled formatters (by default Neoformat stops after the first formatter\nsucceeds)\n\n```viml\nlet g:neoformat_run_all_formatters = 1\n```\n\nAbove options can be activated or deactivated per buffer. For example:\n\n```viml\n    \" runs all formatters for current buffer without tab to spaces conversion\n    let b:neoformat_run_all_formatters = 1\n    let b:neoformat_basic_format_retab = 0\n```\n\nHave Neoformat only msg when there is an error\n\n```viml\nlet g:neoformat_only_msg_on_error = 1\n```\n\nWhen debugging, you can enable either of following variables for extra logging.\n\n```viml\nlet g:neoformat_verbose = 1 \" only affects the verbosity of Neoformat\n\" Or\nlet \u0026verbose            = 1 \" also increases verbosity of the editor as a whole\n```\n\nHave Neoformat look for a formatter executable in the `node_modules/.bin`\ndirectory in the current working directory or one of its parents (only applies\nto formatters with `try_node_exe` set to `1`):\n\n```viml\nlet g:neoformat_try_node_exe = 1\n```\n\n## Adding a New Formatter\n\nNote: you should replace everything `{{ }}` accordingly\n\n1. Create a file in `autoload/neoformat/formatters/{{ filetype }}.vim` if it does not\n   already exist for your filetype.\n\n2. Follow the following format\n\nSee Config above for options\n\n```viml\nfunction! neoformat#formatters#{{ filetype }}#enabled() abort\n    return ['{{ formatter name }}', '{{ other formatter name for filetype }}']\nendfunction\n\nfunction! neoformat#formatters#{{ filetype }}#{{ formatter name }}() abort\n    return {\n        \\ 'exe': '{{ formatter name }}',\n        \\ 'args': ['-s 4', '-q'],\n        \\ 'stdin': 1\n        \\ }\nendfunction\n\nfunction! neoformat#formatters#{{ filetype }}#{{ other formatter name }}() abort\n  return {'exe': {{ other formatter name }}\nendfunction\n```\n\n## Managing Undo History\n\nIf you use an `autocmd` to run Neoformat on save, and you have your editor\nconfigured to save automatically on `CursorHold` then you might run into\nproblems reverting changes. Pressing `u` will undo the last change made by\nNeoformat instead of the change that you made yourself - and then Neoformat\nwill run again redoing the change that you just reverted. To avoid this\nproblem you can run Neoformat with the Vim `undojoin` command to put changes\nmade by Neoformat into the same `undo-block` with the preceding change. For\nexample:\n\n```viml\naugroup fmt\n  autocmd!\n  autocmd BufWritePre * undojoin | Neoformat\naugroup END\n```\n\nWhen `undojoin` is used this way pressing `u` will \"skip over\" the Neoformat\nchanges - it will revert both the changes made by Neoformat and the change\nthat caused Neoformat to be invoked.\n\n## Supported Filetypes\n\n- Arduino\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`astyle`](http://astyle.sourceforge.net)\n- Assembly\n  - [`asmfmt`](https://github.com/klauspost/asmfmt)\n- Astro\n  - [`prettier`](https://github.com/withastro/prettier-plugin-astro/)\n- Bazel\n  - [`buildifier`](https://github.com/bazelbuild/buildtools/blob/master/buildifier/README.md)\n- Beancount\n  - [`bean-format`](https://beancount.github.io/docs/running_beancount_and_generating_reports.html#bean-format)\n- Blade\n  - [`blade-formatter`](https://github.com/shufo/blade-formatter)\n- Bib\n  - [bibtex-tidy](https://github.com/FlamingTempura/bibtex-tidy)\n  - [bibclean](https://github.com/tobywf/bibclean)\n- C\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`astyle`](http://astyle.sourceforge.net)\n- C#\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`astyle`](http://astyle.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html)\n    [`csharpier`](https://csharpier.com/)\n- C++\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`astyle`](http://astyle.sourceforge.net)\n- Cabal\n  - [`cabal-fmt`](https://github.com/phadej/cabal-fmt)\n- Caddyfile\n  - [`caddy fmt`](https://caddyserver.com/docs/command-line#caddy-fmt)\n- CMake\n  - [`cmake_format`](https://github.com/cheshirekow/cmake_format)\n- Crystal\n  - `crystal tool format` (ships with [`crystal`](http://crystal-lang.org))\n- CSS\n  - `css-beautify` (ships with [`js-beautify`](https://github.com/beautify-web/js-beautify)),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`stylefmt`](https://github.com/morishitter/stylefmt),\n    [`stylelint`](https://stylelint.io/),\n    [`csscomb`](http://csscomb.com),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`topiary`](https://topiary.tweag.io)\n- CSV\n  - [`prettydiff`](https://github.com/prettydiff/prettydiff)\n- Cue\n  - [`cue fmt`](https://cuelang.org/)\n- D\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`dfmt`](https://github.com/Hackerpilot/dfmt)\n- D2\n  - [`d2 fmt`](https://d2lang.com/tour/auto-formatter)\n- Dart\n  - [`dartfmt`](https://www.dartlang.org/tools/)\n  - [`dart format`](https://dart.dev/tools/dart-format)\n- Dhall\n  - [`dhall format`](https://dhall-lang.org)\n- dune\n  - [`dune format`](https://github.com/ocaml/dune)\n- Ebuild\n  - [`shfmt`](https://github.com/mvdan/sh)\n    ```vim\n    let g:shfmt_opt=\"-ci\"\n    ```\n- Elixir\n  - [`mix format`](https://hexdocs.pm/mix/master/Mix.Tasks.Format.html)\n- Elm\n  - [`elm-format`](https://github.com/avh4/elm-format)\n- Eruby\n  - [`htmlbeautifier`](https://github.com/threedaymonk/htmlbeautifier)\n- Erlang\n  - [`erlfmt`](https://github.com/WhatsApp/erlfmt)\n- Fennel\n  - [`fnlfmt`](https://git.sr.ht/~technomancy/fnlfmt)\n- Fish\n  - [`fish_indent`](http://fishshell.com)\n- Fortran\n  - [`fprettify`](https://github.com/pseewald/fprettify)\n- F#\n  - [`fantomas`](https://github.com/fsprojects/fantomas)\n- GDScript\n  - [`gdformat`](https://github.com/Scony/godot-gdscript-toolkit)\n- Gleam\n  - [`gleam format`](https://github.com/gleam-lang/gleam/)\n- Go\n  - [`gofmt`](https://golang.org/cmd/gofmt/),\n    [`goimports`](https://godoc.org/golang.org/x/tools/cmd/goimports),\n    [`gofumpt`](https://github.com/mvdan/gofumpt),\n    [`gofumports`](https://github.com/mvdan/gofumpt)\n- GLSL\n  - [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html)\n- GN\n  - [`gn`](https://gn.googlesource.com/gn)\n- GraphQL\n  - [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier)\n- Haskell\n  - [`stylishhaskell`](https://github.com/jaspervdj/stylish-haskell),\n    [`hindent`](https://github.com/chrisdone/hindent),\n    [`hfmt`](https://github.com/danstiner/hfmt),\n    [`brittany`](https://github.com/lspitzner/brittany),\n    [`sortimports`](https://github.com/evanrelf/sort-imports),\n    [`floskell`](https://github.com/ennocramer/floskell)\n    [`ormolu`](https://github.com/tweag/ormolu)\n    ```vim\n    let g:ormolu_ghc_opt=[\"TypeApplications\", \"RankNTypes\"]\n    ```\n  - You must use formatter's name without \"`-`\"\n    ```vim\n    \" right\n    let g:neoformat_enabled_haskell = ['sortimports', 'stylishhaskell']\n    \" wrong\n    let g:neoformat_enabled_haskell = ['sort-imports', 'stylish-haskell']\n    ```\n- HCL\n  - [`hclfmt`](https://github.com/hashicorp/hcl)\n- Toml\n  - [`taplo`](https://taplo.tamasfe.dev/cli/usage/formatting.html),\n    [`topiary`](https://topiary.tweag.io)\n- Puppet\n  - [`puppet-lint`](https://github.com/rodjek/puppet-lint)\n- PureScript\n  - [`purs-tidy`](https://github.com/natefaubion/purescript-tidy)\n  - [`purty`](https://gitlab.com/joneshf/purty)\n- HTML\n  - `html-beautify` (ships with [`js-beautify`](https://github.com/beautify-web/js-beautify)),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff)\n- HTMLDjango\n  - [djlint](https://djlint.com/)\n- Jade\n  - [`pug-beautifier`](https://github.com/vingorius/pug-beautifier)\n- Java\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`astyle`](http://astyle.sourceforge.net),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier)\n- JavaScript\n  - [`js-beautify`](https://github.com/beautify-web/js-beautify),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`esformatter`](https://github.com/millermedeiros/esformatter/),\n    [`prettier-eslint`](https://github.com/kentcdodds/prettier-eslint-cli),\n    [`eslint_d`](https://github.com/mantoni/eslint_d.js),\n    [`standard`](https://standardjs.com/),\n    [`semistandard`](https://github.com/standard/semistandard),\n    [`deno fmt`](https://deno.land/manual/tools/formatter),\n    [`biome format`](https://biomejs.dev)\n- JSON\n  - [`js-beautify`](https://github.com/beautify-web/js-beautify),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`jq`](https://stedolan.github.io/jq/),\n    [`fixjson`](https://github.com/rhysd/fixjson),\n    [`deno fmt`](https://deno.land/manual/tools/formatter),\n    [`topiary`](https://topiary.tweag.io),\n    [`biome format`](https://biomejs.dev)\n- JSONC (JSON with comments)\n  - [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`deno fmt`](https://deno.land/manual/tools/formatter),\n    [`biome format`](https://biomejs.dev)\n- jsonnet\n  - [`jsonnetfmt`](https://github.com/google/jsonnet)\n- just\n  - [`just`](https://github.com/casey/just)\n- KDL\n  - [`kdlfmt`](https://github.com/hougesen/kdlfmt/)\n- Kotlin\n  - [`ktlint`](https://github.com/shyiko/ktlint),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier)\n- LaTeX\n  - [`latexindent`](https://github.com/cmhughes/latexindent.pl)\n    ```vim\n    let g:latexindent_opt=\"-m\"\n    ```\n- Less\n  - [`csscomb`](http://csscomb.com),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`stylelint`](https://stylelint.io/)\n- Lua\n  - [`luaformatter`](https://github.com/LuaDevelopmentTools/luaformatter)\n  - [`lua-fmt`](https://github.com/trixnz/lua-fmt)\n  - [`lua-format`](https://github.com/Koihik/LuaFormatter)\n  - [`stylua`](https://github.com/JohnnyMorganz/StyLua)\n- Markdown\n  - [`remark`](https://github.com/wooorm/remark),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`deno fmt`](https://deno.land/manual/tools/formatter),\n    [`mdformat`](https://github.com/executablebooks/mdformat)\n- Matlab\n  - [`matlab-formatter-vscode`](https://github.com/affenwiesel/matlab-formatter-vscode)\n- Nginx\n  - [nginxbeautifier](https://github.com/vasilevich/nginxbeautifier)\n- Nickel\n  - [`topiary`](https://topiary.tweag.io)\n- Nim\n  - `nimpretty` (ships with [`nim`](https://nim-lang.org/))\n  - [`nph`](https://github.com/arnetheduck/nph)\n- Nix\n  - [`nixfmt`](https://github.com/serokell/nixfmt)\n  - [`nixpkgs-fmt`](https://github.com/nix-community/nixpkgs-fmt)\n  - [`alejandra`](https://github.com/kamadorueda/alejandra)\n- Objective-C\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`astyle`](http://astyle.sourceforge.net)\n- Objective-C++\n  - [`uncrustify`](http://uncrustify.sourceforge.net),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`astyle`](http://astyle.sourceforge.net)\n- OCaml\n  - [`ocp-indent`](http://www.typerex.org/ocp-indent.html),\n    [`ocamlformat`](https://github.com/ocaml-ppx/ocamlformat),\n    [`topiary`](https://topiary.tweag.io)\n- OpenSCAD\n  - [`openscad-format`](https://github.com/Maxattax97/openscad-format)\n- Pandoc Markdown\n  - [`pandoc`](https://pandoc.org/MANUAL.html)\n- Pawn\n  - [`uncrustify`](http://uncrustify.sourceforge.net)\n- Perl\n  - [`perltidy`](http://perltidy.sourceforge.net)\n  - [`perlimports`](https://github.com/perl-ide/App-perlimports)\n- PHP\n  - [`php_beautifier`](http://pear.php.net/package/PHP_Beautifier),\n    [`php-cs-fixer`](http://cs.sensiolabs.org/),\n    [`phpcbf`](https://github.com/squizlabs/PHP_CodeSniffer),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/plugin-php)\n    [`laravel-pint`](https://github.com/laravel/pint),\n- PowerShell\n  - [`PSScriptAnalyzer`](https://github.com/PowerShell/PSScriptAnalyzer),\n    [`PowerShell-Beautifier`](https://github.com/DTW-DanWard/PowerShell-Beautifier)\n- Prisma\n  - [`prettier`](https://github.com/umidbekk/prettier-plugin-prisma)\n- Proto\n  - [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html)\n- Pug (formally Jade)\n  - [`pug-beautifier`](https://github.com/vingorius/pug-beautifier)\n- Python\n  - [`yapf`](https://github.com/google/yapf),\n    [`autopep8`](https://github.com/hhatto/autopep8),\n    [`black`](https://github.com/psf/black),\n    [`pydevf`](https://github.com/fabioz/PyDev.Formatter),\n    [`isort`](https://github.com/timothycrosley/isort),\n    [`docformatter`](https://github.com/myint/docformatter),\n    [`pyment`](https://github.com/dadadel/pyment),\n    [`ruff`](https://github.com/astral-sh/ruff)\n- R\n  - [`styler`](https://github.com/r-lib/styler),\n    [`formatR`](https://github.com/yihui/formatR)\n- Reason\n  - [`refmt`](https://github.com/facebook/reason)\n  - [`bsrefmt`](https://github.com/bucklescript/bucklescript)\n- Rego\n  - [`opa fmt`](https://www.openpolicyagent.org/docs/latest/cli/#opa-fmt)\n- Ruby\n  - [`rufo`](https://github.com/ruby-formatter/rufo),\n    [`ruby-beautify`](https://github.com/erniebrodeur/ruby-beautify),\n    [`rubocop`](https://github.com/rubocop/rubocop),\n    [`standard`](https://github.com/testdouble/standard)\n    [`prettier`](https://github.com/prettier/plugin-ruby)\n- Rust\n  - [`rustfmt`](https://github.com/rust-lang-nursery/rustfmt),\n    [`topiary`](https://topiary.tweag.io)\n- Sass\n  - [`sass-convert`](http://sass-lang.com/documentation/#executables),\n    [`stylelint`](https://stylelint.io/),\n    [`csscomb`](http://csscomb.com)\n- Sbt\n  - [`scalafmt`](http://scalameta.org/scalafmt/)\n- Scala\n  - [`scalariform`](https://github.com/scala-ide/scalariform),\n    [`scalafmt`](http://scalameta.org/scalafmt/)\n- SCSS\n  - [`sass-convert`](http://sass-lang.com/documentation/#executables),\n    [`stylelint`](https://stylelint.io/),\n    [`stylefmt`](https://github.com/morishitter/stylefmt),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`csscomb`](http://csscomb.com),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier)\n- Shell\n  - [`shfmt`](https://github.com/mvdan/sh)\n    ```vim\n    let g:shfmt_opt=\"-ci\"\n    ```\n  - [`topiary`](https://topiary.tweag.io)\n- Solidity\n  - [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier-solidity/prettier-plugin-solidity),\n    [`forge fmt`](https://book.getfoundry.sh/)\n- SQL\n  - [`sqlfmt`](https://github.com/jackc/sqlfmt),\n    `sqlformat` (ships with [sqlparse](https://github.com/andialbrecht/sqlparse)),\n    `pg_format` (ships with [pgFormatter](https://github.com/darold/pgFormatter)),\n    [`sleek`](https://github.com/nrempel/sleek)\n    [`sql-formatter`](https://github.com/sql-formatter-org/sql-formatter)\n- Starlark\n  - [`buildifier`](https://github.com/bazelbuild/buildtools/blob/master/buildifier/README.md)\n- SugarSS\n  [`stylelint`](https://stylelint.io/)\n- Svelte\n  - [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier-plugin-svelte`](https://github.com/UnwrittenFun/prettier-plugin-svelte)\n- Swift\n  - [`Swiftformat`](https://github.com/nicklockwood/SwiftFormat)\n- Terraform\n  - [`terraform`](https://www.terraform.io/docs/commands/fmt.html),\n- TypeScript\n  - [`tsfmt`](https://github.com/vvakame/typescript-formatter),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`prettier-eslint`](https://github.com/kentcdodds/prettier-eslint-cli),\n    [`tslint`](https://palantir.github.io/tslint),\n    [`eslint_d`](https://github.com/mantoni/eslint_d.js),\n    [`clang-format`](http://clang.llvm.org/docs/ClangFormat.html),\n    [`deno fmt`](https://deno.land/manual/tools/formatter),\n    [`biome format`](https://biomejs.dev)\n- Typst\n  - [`typstfmt`](https://github.com/astrale-sharp/typstfmt)\n    [`typstyle`](https://github.com/Enter-tainer/typstyle)\n- V\n  - `v fmt` (ships with [`v`](https://vlang.io))\n- VALA\n  - [`uncrustify`](http://uncrustify.sourceforge.net)\n- Vue\n  - [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier)\n- XHTML\n  - [`tidy`](http://www.html-tidy.org),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff)\n- XML\n  - [`tidy`](http://www.html-tidy.org),\n    [`prettydiff`](https://github.com/prettydiff/prettydiff),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`xmllint`](https://gitlab.gnome.org/GNOME/libxml2)\n- YAML\n  - [`pyaml`](https://pypi.python.org/pypi/pyaml),\n    [`prettierd`](https://github.com/fsouza/prettierd),\n    [`prettier`](https://github.com/prettier/prettier),\n    [`yamlfmt`](https://github.com/mmlb/yamlfmt) (by @mmlb),\n    [`yamlfmt`](https://github.com/google/yamlfmt) (by @google),\n    [`yamlfix`](https://github.com/lyz-code/yamlfix)\n- zig\n  - [`zigformat`](https://github.com/Himujjal/zigformat)\n    [`zig fmt`](https://github.com/ziglang/zig)\n- zsh\n  - [`shfmt`](https://github.com/mvdan/sh)\n    ```vim\n    let g:shfmt_opt=\"-ci\"\n    ```\n","funding_links":[],"categories":["Formatting","Vim Script","Editor support"],"sub_categories":["Comment","Network applications","Folding"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbdchd%2Fneoformat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbdchd%2Fneoformat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbdchd%2Fneoformat/lists"}