vim-codefmt is a syntax-aware code formatting plugin for Vim that provides a unified interface to many best-in-class formatters across languages. It exposes simple commands to format either a selected range or an entire buffer, and integrates cleanly into everyday editing workflows. The plugin ships with a registry of built-in formatters and a pluggable architecture, allowing other plugins to register additional formatters without friction. Configuration is handled through maktaba and Glaive flags, so you can choose per-filetype tools, pass custom options, or point to specific formatter executables. Autoformat can be enabled via standard Vim autocommands, making it easy to format on filetype or on write while still allowing opt-out on a per-buffer basis. With broad language coverage—from C, C++, Java, Python, and Go to Kotlin, Rust, Swift, Bazel, Markdown, and more—vim-codefmt helps teams maintain consistent style across heterogeneous codebases.
Features
- Unified commands to format a range or the entire buffer via :FormatLines and :FormatCode
- Large catalog of built-in formatters covering many languages and ecosystems
- Pluggable registry so other plugins can register new formatters without forking
- Fine-grained configuration through Glaive flags, including executable paths and options
- Easy autoformat setup using Vim autocommands, with per-buffer opt-out via :NoAutoFormatBuffer
- Works seamlessly with external tools like clang-format, prettier, gofmt, rustfmt, ktfmt, buildifier, black, yapf and more