You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tim Pope 6d42c7df44 Fix fugitive#isdirectory() with trailing slash 1 week ago
autoload Fix fugitive#isdirectory() with trailing slash 1 week ago
doc Revert "Add documentation for --relative-date in :Gblame" 2 months ago
ftdetect Extract ftdetect file 1 year ago
plugin Only activate Projectionist if config file exists 2 weeks ago
syntax Support expanding inline diffs in :Gstatus 5 months ago
.gitattributes Add .gitattributes 1 year ago
.gitignore Ignore tags file that Vim generates. 9 years ago
CONTRIBUTING.markdown Add a note about options 1 year ago
README.markdown Trailing whitespace 4 months ago

README.markdown

fugitive.vim

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 an enhanced version of git status with :Gstatus. Press - to add/reset a file’s changes, or = to expand an inline diff and operate on individual hunks. Use :Gcommit % to commit the current file, editing the commit message inside the currently running Vim.

: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. :Gdelete 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 the web front-end of your favorite hosting provider, with optional line range (try it in visual mode!). Plugins are available for popular providers such as GitHub, GitLab, Bitbucket, and Gitee.

Add %{FugitiveStatusline()} 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.

Screencasts

Installation

If you don’t have a preferred installation method, one option is to install pathogen.vim, and then copy and paste:

cd ~/.vim/bundle
git clone https://github.com/tpope/vim-fugitive.git
vim -u NONE -c "helptags vim-fugitive/doc" -c q

FAQ

Why don’t any of the commands exist?

Fugitive cares about the current file, not the current working directory. Edit a file from the repository. To avoid the blank window problem, favor commands like :split and :tabedit over commands like :new and :tabnew.

Here’s a patch that automatically opens the quickfix window after :Ggrep.

This is a great example of why I recommend asking before patching. There are valid arguments to be made both for and against automatically opening the quickfix window. Whenever I have to make an arbitrary decision like this, I ask what Vim would do. And Vim does not open a quickfix window after :grep.

Luckily, it’s easy to implement the desired behavior without changing fugitive.vim. The following autocommand will cause the quickfix window to open after any grep invocation:

autocmd QuickFixCmdPost *grep* cwindow

Self-Promotion

Like fugitive.vim? Follow the repository on GitHub and vote for it on vim.org. And if you’re feeling especially charitable, follow tpope on Twitter and GitHub.

License

Copyright © Tim Pope. Distributed under the same terms as Vim itself. See :help license.