## 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][st2gg] plugin for Sublime Text 2. ### Screenshot ![screenshot](https://raw.github.com/airblade/vim-gitgutter/master/screenshot.png) 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][pathogen], and then simply copy and paste: ``` cd ~/.vim/bundle git clone git://github.com/airblade/vim-gitgutter.git ``` ### 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. ### 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 ``` > Lines removed below a modified line are not shown. True. This plugin uses Vim's signs which require a sign to be on a line (not between two lines) and only permit one sign per line. Removed lines are signed with an underscore on the line above. If that line has also been modified, the plugin has to choose whether to show the removed-lines sign or the modified-line sign. It prefers the latter. > 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 I'm not aware of any other Vim plugins which (only) show git diffs in the gutter. However these may be of interest: * [quickfixsigns_vim][qf] has a large superset of this functionality. * [fugitive.vim][fugitive] 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: * [Smash Into Vim I][siv1] * [Smash Into Vim II][siv2] You can read reviews at PeepCode and also on my [portfolio][]. ### Intellectual Property Copyright Andrew Stewart, AirBlade Software Ltd. Released under the MIT licence. [st2gg]: https://github.com/jisaacks/GitGutter [pathogen]: https://github.com/tpope/vim-pathogen [qf]: https://github.com/tomtom/quickfixsigns_vim [fugitive]: https://github.com/tpope/vim-fugitive [siv1]: https://peepcode.com/products/smash-into-vim-i [siv2]: https://peepcode.com/products/smash-into-vim-ii [portfolio]: http://airbladesoftware.com/portfolio#vim