gitsigns.nvim: git info in neovim

gitsigns.nvim: Super fast git decorations implemented purely in lua/teal.


  • 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

Shows signs for added, modified, and removed lines
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