vim-gitgutter is a Vim plugin that shows git diff markers in the sign column and allows staging, previewing, and undoing individual hunks.
The plugin solves the problem of tracking which lines in your buffer have been added, modified, or removed by displaying visual indicators in the sign column. It runs diffs asynchronously where possible and keeps signs up to date without ever saving your buffer. Beyond basic diff visualization, it enables you to stage or undo individual hunks, preview changes with intra-line highlighting, stage partial hunks, and jump quickly between changed sections. It also provides a hunk text object for use in mappings and commands.
You should choose this tool if you work exclusively with git and want real-time diff feedback integrated directly into your editor. It suits any project where you benefit from seeing which lines differ from the index or a specific commit. The plugin is fully customizable, allowing you to adjust signs, highlights, and mappings to your preference. If you use other version control systems, the README recommends vim-signify as an alternative. The tool integrates with vim-airline for easy status line integration and works with fish shell in addition to standard shells. It requires that your terminal reports focus events, though this can be disabled if needed.
Development activity shows consistent maintenance with regular updates addressing edge cases and compatibility. The project handles complex scenarios including file renames, git's assume-unchanged bit, CRLF line ending conversion, and clean/smudge filters. Support extends back to Vim 7.4 and includes modern features like optional line number highlighting for recent Vim and Neovim versions. The maintainer actively preserves compatibility with other plugins' signs and integrates with established tools in the Vim ecosystem.