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