vimdiff を使おう

テキストファイルを比較するときに便利なvimdiff
比較だけでなく、行単位で差分をどちらかのファイルに適用したりも出来るので、知っておくと便利です。

案外、vimdiffを知らない人がいたので、ここに記載しておく。

vimdiffコマンドは、vimがインストールされていれば既に使えるようになっているはずだ!
なぜなら、vimdiffコマンドの実態は、vim -d という Diff Mode で起動するようにシンボリックリンクが貼られているだけだからです。(*1)

vimdiffの使い方

vimdiff a.txt b.txt 

として使う。

起動すると左にa.txt 右にb.txt が表示されているはずだ。
そして、差分のある行だけが色付きで表示される。

ウィンドウ移動

vim のウィンドウの移動は、Ctrl + w を押したあと、hjkl の移動で切り替えられる。

左右に分割されているので、<C-w>h で左のウィンドウに
<C-w>l で右のウィンドウに移動ができるというわけだ。

差分の反映

差分のある行で、do, dp を使うと
差分のかたまりをどちらかのテキストに反映する事ができる。

コマンド 説明
do (diff obtain) 自身側(カーソルのあるウィンドウ)に他方の差分行を持ってくる。
dp (diff put) 自身側(カーソルのあるウィンドウ)から、他方へ差分行を置きにいく。

というイメージ。

:help diff

                            *do*
[count]do   範囲のない ":diffget" と同じ。"o" は "obtain" の意味 ("dgg" と
        区別できないので、"dg" は使えない)。Note: これはビジュアル
        モードでは機能しない。
        [count] を与えた場合、それは ":diffget" に対して [bufspec]引数
        として用いられる。

                            *dp*
[count]dp   範囲のない ":diffput" と同じ。Note: これはビジュアルモードでは
        機能しない。
        [count] を与えた場合、それは ":diffput" に対して [bufspec]引数
        として用いられる。

おしまい

とりあえず、vimdiff で開いて、do, dp を使えば、便利に差分を確認しながら扱えるよ。

注釈1

vimdiff というvimのシンボリックリンクが、Diff Modeで起動する理由についてはこの記事が参考になります。
argv[0] をみて、コマンド名がvimdiffならという事をしているようです。
http://d.hatena.ne.jp/pneumaster/20081111/1226351072

コメントを残す