vim-users.jp

Hack #219: Gitを使う2 – Fugitive.vim

Posted at 2011/06/19
このエントリーをはてなブックマークに追加

Vim の中で Git を快適に使うためのプラグインがいつくかあります。 その中から Time Pope さん作の Fugitive.vim を紹介します。

motemen さんの git.vim については Hack #67: Gitを使う を参照してください。 今回の記事は対比のためフォーマットを似せています。

インストール

plugin は github から入手可能です。 https://github.com/tpope/vim-fugitive

また Vundle でもインストール可能です。

:BundleInstall tpope/vim-fugitive

使い方

以下のコマンドが定義されます。

  • Git arg: git コマンドと同様の機能を有し、自分で定義した alias も使用出来ます。

Git コマンドを使用した場合は結果を pager に表示します。 以下のコマンドを使用すると結果は状況に応じてバッファ内、quickfix list 等に表示されます。 また、diff を vimdiff で表示したり、blame もハイライトされた状態で表示されたりと、それだけでも利用価値があると筆者は考えます。

  • :Gdiff[ rev]: git diff[ --cached] {編集中のファイル}
  • :Gstatus: git status
  • :GlLog[ rev]: git log {編集中のファイル}
  • :Gwrite: git add {編集中のファイル}
  • :Gread[ rev]: git checkout {編集中のファイル}
  • :Gcommit: staged なファイルがあれば git commit なければ git status
  • :Gblame[ rev]: git blame {編集中のファイル}

上記以外にも Git を扱ううえで有用なコマンドが多数定義されます。:help fugitive を参照してください。

Gstatus 時の挙動について

:Gstatus を使用すると、Window が split され git status の結果が表示されます。

定義されたいくつかの mapping を利用することで、更に便利になります。

  • : カーソル下にあるファイルを edit
  • -: カーソル下にあるファイルを git add
  • p: カーソル下にあるファイルを git add -p
  • D: カーソル下にあるファイルを git diff[ --cached]
  • C: git commit

応用

筆者は以下のように mapping して利用しています。

" for Fugitive {{{
nnoremap <Space>gd :<C-u>Gdiff<Enter>
nnoremap <Space>gs :<C-u>Gstatus<Enter>
nnoremap <Space>gl :<C-u>Glog<Enter>
nnoremap <Space>ga :<C-u>Gwrite<Enter>
nnoremap <Space>gc :<C-u>Gcommit<Enter>
nnoremap <Space>gC :<C-u>Git commit --amend<Enter>
nnoremap <Space>gb :<C-u>Gblame<Enter>
" }}}

参照資料

Sixeight

もどる
blog comments powered by Disqus