反省はしても後悔はしない

Vim とか備忘録とか。それと関数型言語勉強中

fugitive.vim をもっと使いこなす

この記事は Vim Advent Calendar 2013 の 16 日目の記事です。 昨日は id:deris さんの Vimmerなら2013年中に試しておきたい海外産Vim plugin 8選 - derisの日記 でした。知らないプラグインあったので時間ができたら試してみたいですね。

進捗ダメです

すみません。本当は自作プラグインを大々的に紹介するつもりだったのですが、進捗ダメでした。今日は fugitive.vim の小ネタについて書きます。 次回作にご期待ください。

fugitive.vim について

Vim から Git を便利に使うプラグインです。詳しくは

みたいなところを参照してください。 とりあえず、git status 見たり、git add -pVim の diff 機能を使って実行できたりしてとても便利です。

リポジトリのルートに cd する

あまり知られていないような気がしているのですが、

:Gcd

リポジトリのルートに :cd することができます。

:Gedit を使って違うリビジョンのファイルを開く

git を使っていると、違うブランチにあるファイルを開きたくなりますね。Gedit でできます。

:Gedit feature-branch:path/to/file

<リビジョン>:<ファイル名> で特定のリビジョンの特定のファイルを閲覧することができます。ただ、このコマンドは :edit 相当なので現在のウィンドウで開きます。他には :vsplit 相当の :Gvsplit などがあります。

: の前はリビジョンを指定します。ブランチ名や HEAD^ のような指定の仕方以外にも fugitive.vim が定義する便利な記法が使えます。

例えば、~3 だけで HEAD~3 と同様の意味になります。詳しくは :help fugitive-revision

そして、これらのコマンドはブランチ名およびファイル名の補完が効きます。ファイル名の補完に至っては、現在のワーキングディレクトリになくても入力したリビジョンにあれば補完されます。

:Gdiff で違うリビジョンとの diff を取る

:Gdiff といえば、git add -p がとても便利ですが、別リビジョンにある同ファイルとの diff を取ることもできます。

:Gdiff feature-branch

例えば、:Gdiff developdevelop ブランチとの diff を取ったり、:Gdiff ~3 で 3 つ前のコミットと diff 取ったりできます。

おわりに

  • 進捗ダメです
  • fugitive.vim は内部の実装汚いけど便利

明日は @cocopon さんです。