A Neovim plugin that provides deep Git integration directly in buffers with signs, hunk actions, blame, and diff features.
gitsigns.nvim is a Neovim plugin that integrates Git functionality directly into text buffers. It displays visual signs for changed lines, enables hunk-based staging and resetting, shows blame information, and provides diff tools, all without leaving the editor. It solves the problem of context switching between the editor and terminal for common Git operations.
Neovim users who frequently work with Git and want a more integrated, visual workflow for managing changes directly within their editor.
Developers choose gitsigns.nvim for its deep buffer integration, performance optimizations using Lua and Neovim APIs, and comprehensive feature set that covers signs, hunk actions, blame, and diffs in one package. It offers a modern alternative to older Vim Git plugins with better customization and smoother integration.
Git integration for buffers
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Displays signs in the sign column for added, changed, and deleted lines, with separate signs for staged changes and optional count displays, as shown in the README preview images.
Enables staging, unstaging, resetting, and previewing hunks directly from the buffer using commands like `:Gitsigns stage_hunk`, and supports partial hunks in visual mode for precise control.
Offers multiple blame formats including virtual text, popups, and full buffer views, with customizable formatters and options like delay and focus behavior, enhancing code review workflows.
Seamlessly integrates with Neovim's status line, quickfix/location lists, text objects, and buffer revision viewing, as detailed in the features and configuration sections.
Requires Neovim >= 0.9.0 and may break on development builds, limiting compatibility with older or unstable Neovim installations, as warned in the requirements section.
Explicitly does not support other version control systems like Mercurial or SVN, as stated in the 'Non-Goals', making it unsuitable for mixed VCS environments.
The setup function has numerous options and requires Lua knowledge for advanced customization, which can be daunting for users unfamiliar with Neovim's Lua API, despite the provided examples.