gitsigns.nvim: Super fast git decorations implemented purely in lua/teal.
Features
- Signs for added, removed, and changed lines
- Asynchronous using luv
- Navigation between hunks
- Stage hunks (with undo)
- Preview diffs of hunks (with word diff)
- Customisable (signs, highlights, mappings, etc)
- Status bar integration
- Git blame a specific line using virtual text.
- Hunk text object
- Automatically follow files moved in the index.
- Live intra-line word diff
- Support for yadm
Comparison with vim-gitgutter
Feature | gitsigns | gitgutter | Note |
---|---|---|---|
Shows signs for added, modified, and removed lines | ✅ | ✅ | |
Asynchronous | ✅ | ✅ | |
Runs diffs in-process (no IO or pipes) | ✅ * | * Via lua or FFI. | |
Only adds signs for drawn lines | ✅ * | * Via Neovims decoration API | |
Updates immediately | ✅ | * | * Triggered on CursorHold |
Ensures signs are always up to date | ✅ * | * Watches the git dir to do so | |
Never saves the buffer | ✅ | ✅ ❗ * | * Writes buffer (and index) to short lived temp files |
Quick jumping between hunks | ✅ | ✅ | |
Stage/reset/preview individual hunks | ✅ | ✅ | |
Stage/reset hunks in range/selection | ✅ | ✅ ❗ * | * Only stage |
Stage/reset all hunks in buffer | ✅ | ||
Undo staged hunks | ✅ | ||
Word diff in buffer | ✅ | ||
Word diff in hunk preview | ✅ | ✅ | |
Stage partial hunks | ✅ | ||
Hunk text object | ✅ | ✅ | |
Diff against index or any commit | ✅ | ✅ | |
Folding of unchanged text | ✅ | ||
Fold text showing whether folded lines have been changed | ✅ | ||
Load hunk locations into the quickfix or location list | ✅ | ✅ | |
Optional line highlighting | ✅ | ✅ | |
Optional line number highlighting | ✅ | ✅ | |
Optional counts on signs | ✅ | ||
Customizable signs and mappings | ✅ | ✅ | |
Customizable extra git-diff arguments | ✅ | ||
Can be toggled globally or per buffer | ✅ * | ✅ | * Through the detach/attach functions |
Statusline integration | ✅ | ✅ | |
Works with yadm | ✅ | ||
Live blame in buffer (using virtual text) | ✅ | ||
Blame preview | ✅ | ||
Automatically follows open files moved with git mv | ✅ | ||
CLI with completion | ✅ | * | * Provides individual commands for some actions |
Open diffview with any revision/commit | ✅ |
As of 2021-07-05