diff.nvim
Flexible diffing for Neovim: one :Diff command compares arbitrary sources — buffers, files, git revisions, URLs, whole directories — against each other and delivers the result however you like: split, inline, prompt, file, clipboard, or a one-line stat summary.
- status
- beta — Beta stage — active development. This repository is past its first shape and in active use, but the surface is not frozen: breaking changes are still possible. Pin a commit or tag if you depend on it.
- category
- Debug & inspect
- neovim
- 0.9+
- repo
- github.com/StefanBartl/diff.nvim
- commits
- 138
- help
- :help diff
demo
demos/diff.tape in a clean Neovim — re-recorded weekly
what is shown when
- :Diff target=file - this buffer against a file
- ]c and [c - jump between hunks
install
{
"StefanBartl/diff.nvim",
opts = {},
} docs/
- BINDINGS.md
- CONTRIBUTING.md
- FEATURES.md
- README.md
- WORKFLOW.md
- api.md
- architecture.md
- around-it.md
- commands.md
- configuration.md
- installation.md
- quickstart.md
- testing.md
- three-way-diff.md
- url-sources.md
git log
- fix notify: route keymaps.lua's shortcut warnings through diff.util.notify
- feat notify: request popup delivery explicitly in diff.nvim's notifier
- docs link back to the wkd family site
- feat core.git: resolve() via lib.nvim.git.show_async, not a hand-built vim.system call (GS-14)
- ci bump JohnnyMorganz/stylua-action to v5 (Node-20 deprecation)
- docs TESTS: align run.lua header examples with the ci.yml -n/-i NONE invocation
- test run: restore stubbed globals after every spec
- ci publish ci-verified fail-closed and with a lease on the compared tip
- ci publish the verified commit as the ci-verified branch
- test history: derive the expected root from the buffer name, not realpath; drop the 404 diagnostic
- test compare the buffer-name fallback against the resolved root (macOS /private/var)
- ci bump the failure-log upload to actions/upload-artifact@v7 (Node 24)