2012年11月10日土曜日

[git] diffはvimdiffで開こうよ

背景


diffはvimdiffで開きたい。


やり方


やりかたは、ほとんど以下のまんま。
vimdiffの開き方だけちょっと変えた。
Git Diff with Vimdiff


① .gitconfigに設定

以下を.gitconfigに書いておけば、
git diffした時、git_diff_wrapperが呼ばれることになる。

[diff]
    external = git_diff_wrapper
[pager]
    diff =

もしくは、以下をコマンドラインで叩いても可。
git config --global diff.external git_diff_wrapper
git config --global pager.diff ""


② git_diff_wrapperを準備


以下を、git_diff_wrapperという名前で、PATH通っているところに置いておく。


変更点1:折りたたまれないようにする。

ただ、普通にvimdiff開くと、どうしても折りたたまれてしまう。
.vimrcにnofoldable書いても効果なし。
無理やり開くとき設定するようにした。


変更点2:タグファイルを読み込む

プロジェクト毎の読み込むtagファイル変更しているが、
その際、開くファイルのパスを見て、どのtagファイルを読むか切り替えている。
でも、vimdiffでtmpファイル開くとtagが読み込まれないため、
tmp側ではジャンプできなくなってしまう。

コレまた無理やりだけど、gitrootの取得して、その下にあるtagファイルを読み込む用にした。
これでtmpで開いてる側でもジャンプできるようになった。


#!/bin/sh

BRANCH=$(git branch --no-color | sed -n -e 's/^\* //p')
gitroot="$(git rev-parse --show-toplevel)/"

vim -c 'set nofoldenable' \
    -c 'wincmd p'         \
    -c 'set nofoldenable' \
    -c 'wincmd p'         \
    -c 'noremap J ]c'     \
    -c 'noremap K [c'     \
    -c "set tags+=.tags;${gitroot}"  \
    -d "${2}" "${5}"

0 件のコメント:

コメントを投稿