Vim Git Gutter
A Vim plugin which shows a git diff in the 'gutter' (sign column). It shows whether each line has been added, modified, and where lines have been removed.
This is a port of the Git Gutter plugin for Sublime Text 2.
Screenshot
In the screenshot above you can see:
- Line 15 has been modified.
- Lines 21-24 are new.
- A line or lines were removed between lines 25 and 26.
Installation
If you don't have a preferred installation method, I recommend installing pathogen.vim, and then simply copy and paste:
cd ~/.vim/bundle
git clone git://github.com/airblade/vim-gitgutter.git
Or for Vundle users:
Add Bundle 'airblade/vim-gitgutter' to your ~/.vimrc and then:
- either within Vim:
:BundleInstall - or in your shell:
vim +BundleInstall +qall
Usage
You don't have to do anything: it just works.
If you want vim-gitgutter off by default, add let g:gitgutter_enabled = 0 to your ~/.vimrc.
You can explicitly turn vim-gitgutter off and on:
- turn off with
:DisableGitGutter - turn on with
:EnableGitGutter - toggle with
:ToggleGitGutter.
And you can turn line highlighting on and off (defaults to off):
- turn on with
:EnableGitGutterLineHighlights - turn off with
:DisableGitGutterLineHighlights - toggle with
:ToggleGitGutterLineHighlights.
Furthermore you can jump between hunks:
- jump to next hunk:
:GitGutterNextHunk - jump to previous hunk:
:GitGutterPrevHunk.
You may want to add mappings for these if you use them often.
If you want to define your own highlights, you can turn off vim-gitgutter's with let g:gitgutter_highlights = 0 in your ~/.vimrc.
FAQ
The colours in the sign column are weird.
The syntax highlighting for your sign column is probably set strangely. Either modify your colorscheme or add this to your ~/.vimrc:
highlight clear SignColumn
What happens if I also use another plugin which uses signs (e.g. Syntastic)?
Vim only allows one sign per line. Before adding a sign to a line, vim-gitgutter checks whether a sign has already been added by somebody else. If so it doesn't do anything. In other words vim-gitgutter won't overwrite another plugin's signs. It also won't remove another plugin's signs.
Alternatives
Vim alternatives:
- vim-git-inline-diff
- quickfixsigns_vim (a superset of this functionality)
- iwilldiffer
- svndiff
- sign-diff
- changesPlugin
Other editors:
- Git Gutter for Sublime Text 2
- git-gutter.el for Emacs
Also, this may be of interest:
- fugitive.vim is a full-on Git wrapper. It doesn't show git diffs in the gutter (ha!) but it does a bazillion other git things.
Shameless Plug
If this plugin has helped you, or you'd like to learn more about Vim, why not check out these two screencasts I wrote for PeepCode:
You can read reviews at PeepCode and also on my portfolio.
Intellectual Property
Copyright Andrew Stewart, AirBlade Software Ltd. Released under the MIT licence.
