VimmerなGit使いはfugitive.vimを今すぐ入れたほうがいい
fugitiveはvim用のgitラッパープラグインだ。
fugitiveを使うとgitを操作するためにいちいちvimから抜ける必要が劇的に減る。
例えばaddやcommitだけでなく、ソースの変更箇所をパッチ形式でなくvimdiffで簡単に表示できるのは非常に便利だ。
みんなが大好きなgit-blameもコマンド1つでvim上で綺麗に表示してくれる。
Vim+Gitな方は是非fugitive.vimを使ってみて欲しい。
github: https://github.com/tpope/vim-fugitive
コマンド早見表
これらのコマンドは全てgitリポジトリ内でのみ操作可能だ。
- :Gstatus
- 新しい窓を作ってgit statusを表示
- :Gwrite
- 現在開いているソースをgit add
- :Gread
- 現在開いているソースの直前のコミット時のソースを表示
- :Gmove destination/path
- 現在開いているソースをgit mvする
- :Gremove
- 現在開いているソースをgit rmする
- :Gcommit
- git commit
- :Gblame
- 現在のソースをgit blame。vimが色づけしてくれる
- :Gdiff
- 現在のソースの変更点をvimdiffで表示
この他にもいくつかコマンドがあるので、:help fugitiveを実行していただきたい。
Gstatus
:Gstatusを使うと、vimを使いながら手軽にgit-statusを確認することが可能となる。
git-statusの窓はあくまでもvimであるから、そこに表示されているファイル名にカーソルを合わせ「gf」とタイプするだけで、即座に変更されているファイルを開くこともできる。:Gwriteや:Gdiffと組み合わせるとさらに大きな威力を発揮するだろう。
追記:
- :Gstatus上の変更のあったファイルにカーソルを合わせた状態で
- Dで:Gdiff起動(差分表示)
- -でaddとresetの切り替え
- pでパッチを表示
- Enterでファイル表示
- :Gstatusの画面上で
- Cでcommit
- :help :Gstatus
Gwrite
:Gstatusに続けて、変更があったファイルを開いた状態で:Gwriteを使った。git-statusの窓が変化していることがわかる。
:Gwriteを使うとvimから簡単にgit-addを呼ぶことができる。:Gwriteは引数にgit-addしたいファイルへのパスを設定できる。省略したら現在開いているファイルが対象となる。
Fugitive.vimで指定するパスは全て相対パスだった場合は現在のディレクトリから、そして、絶対パスの場合はファイルシステムのホームディレクトリではなく、リポジトリのホームディレクトリから設定される。
:Gwqを使うと:Gwriteしたあとに:wqが呼ばれる。
Gread
現在開いているソースの直前のコミット時のソースを表示してくれる。表示されたファイルは上書きされているのではなく、バッファに展開されているだけなので、心配無用。
revisionも指定できるので1つ前のコミット時の様子をみたければ:Gread HEAD^でいける。
現在との差分を表示したい場合は:Gdiffを使おう。
Gmove
git-mvを呼び出すためのものだ。
:Gmove destination/pathと指定することによって、開いているファイルをgit-mvする。
パスは現在のディレクトリからの相対パスか、リポジトリホームからの絶対パスで指定できる。/で始まると絶対パスになる。
移動した後は自動的に移動した後のファイルを開いてくようになっている。
Gcommit
git-commitを呼び出す。コミット画面が表示された新しい窓が作成されるはずだ。
git-commitに-vオプションを付けたい場合はそのまま:Gcommit -vとすればいい。
Gdiff
:Gdiffは現在開いているファイルに加えられた変更をvimdiffでみせてくれる。
しかも、引数にrevisionを指定できる。たとえばmasterブランチとの差分をみたいなら:Gdiff masterだ。