Bug#736939: ITP: vim-fugitive -- A Git wrapper so awesome, it should be illegal
Package: wnpp
Severity: wishlist
Owner: Andrea Capriotti <capriott@debian.org>
* Package name : vim-fugitive
Version : 2.0
Upstream Author : Tim Pope <vim.org@tpope.org>
* URL : http://www.vim.org/scripts/script.php?script_id=2975
* License : Vim license
Programming Lang: Vim
Description : A Git wrapper so awesome, it should be illegal
I'm not going to lie to you; fugitive.vim may very well be the best Git
wrapper of all time. Check out these features:
View any blob, tree, commit, or tag in the repository with :Gedit
(and :Gsplit, :Gvsplit, :Gtabedit, ...). Edit a file in the index and write to
it to stage the changes. Use :Gdiff to bring up the staged version of the file
side by side with the working tree version and use Vim's diff handling
capabilities to stage a subset of the file's changes.
Bring up the output of git status with :Gstatus. Press - to add/reset a file's
changes, or p to add/reset --patch that mofo. And guess what :Gcommit does!
:Gblame brings up an interactive vertical split with git blame output. Press
enter on a line to edit the commit where the line changed, or o to open it in
a split. When you're done, use :Gedit in the historic buffer to go back to the
work tree version.
:Gmove does a git mv on a file and simultaneously renames the buffer. :Gremove
does a git rm on a file and simultaneously deletes the buffer.
Use :Ggrep to search the work tree (or any arbitrary commit) with git grep,
skipping over that which is not tracked in the repository. :Glog loads all
previous revisions of a file into the quickfix list so you can iterate over
them and watch the file evolve!
:Gread is a variant of git checkout -- filename that operates on the buffer
rather than the filename. This means you can use u to undo it and you never
get any warnings about the file changing outside Vim. :Gwrite writes to both
the work tree and index versions of a file, making it like git add when called
from a work tree file and like git checkout when called from the index or a
blob in history.
Use :Gbrowse to open the current file on GitHub, with optional line range (try
it in visual mode!). If your current repository isn't on GitHub, git instaweb
will be spun up instead.
Add %{fugitive#statusline()} to 'statusline' to get an indicator with the
current branch in (surprise!) your statusline.
Last but not least, there's :Git for running any arbitrary command, and Git!
to open the output of a command in a temp file.
Reply to: