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.
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.
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
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
.
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.
Vim alternatives:
- git-gutter-vim
- 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.
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.
Copyright Andrew Stewart, AirBlade Software Ltd. Released under the MIT licence.