Gitsigns.nvim is a Neovim plugin that integrates Git diff visualization, blame annotations, and hunk-based staging directly into the editor buffer. It renders add, modify, and delete indicators in the sign column for tracked files, and provides inline or popup blame annotations showing commit authorship and date for each line. The plugin operates on individual diff hunks as atomic units for staging, reverting, and navigation, all executed asynchronously via Neovim's job control API to avoid blocking the UI.
The plugin distinguishes itself by enabling hunk-level staging and resetting directly from the buffer without requiring a separate terminal or staging tool, including partial selections in visual mode. It offers hunk navigation between changes, previews of original hunk content in floating windows, and the ability to select hunks as text objects for editing operations. Gitsigns also populates Neovim's quickfix or location lists with structured hunk data for batch review, with optional integration with the Trouble plugin for displaying hunk lists.
Beyond core diff and staging capabilities, the plugin supports comparing the current buffer against any Git revision or index with optional intra-line word highlighting, and can open the current file as it existed at any specified commit in a new buffer. It integrates with fugitive revision buffers and provides buffer-local variables with counts of added, removed, and changed lines for status line display. The plugin is configured through Neovim's Lua API and is available via popular plugin managers.