セクション

2つのテキストファイルの差分を取る

作者: 小見 拓 最終変更 2009年12月05日 19時17分

vimエディタを使用して、2つのテキストファイルの差分を表示する方法を紹介します。 このテクニックは、主にファイルの比較をする場合に使用します。 (Windows, Mac)

概要

vimエディタを使用して、2つのテキストファイルの差分を表示する方法を紹介します。
このテクニックは、主にファイルの比較をする場合に使用します。

指定のファイルとの差分のとり方

「diffsplit」コマンドを使う

vimエディタでは「diffsplit」コマンドで、 今エディタで開いているファイルと、指定したファイルとの差分を表示できます。
「diffsplit」を使ってファイルの差分を取る場合、コマンドの書式は次のようになります。

:vertical diffsplit 差分を取りたいファイル

差分を取りたいファイルの名前が「theother.txt」なら、コマンド例は次の通りです。

:vertical diffsplit theother.txt
2つのテキストファイルの差分表示(横並べ)

Note

「vertical」コマンドは「ウィンドウを横2つに分割しろ」という指定です。
このオプションを外した場合、ウィンドウは縦2つに分割された後、 各差分がそれらのウィンドウに表示されます。

" 差分を取りたいファイルが「theother.txt」の場合のコマンド例
:diffsplit theother.txt
2つのテキストファイルの差分表示(縦並べ)

「VDSplit」コマンドを使う

Kaoriya 版パッチのあたっているvimエディタなら、 「vertical diffsplit」と同様の機能を持つコマンドとして、 「VDSplit」というコマンドが組み込まれています。
この「VDSplit」コマンドを使用すると、 より少ないキーストロークで2つのファイルの差分を表示できます。

:VDSplit 差分を取りたいファイル

" 差分を取りたいファイルが「theother.txt」の場合のコマンド例
:VDSplit theother.txt
2つのテキストファイルの差分表示(横並べ)

Note

「VDSplit」コマンドは Kaoriya 版パッチのあたっているvimエディタでのみ、 使用できるコマンドです。

指定のバッファとの差分のとり方

差分を取りたい2つ目のファイルがバッファに入っている時(既にエディタで読み込んでいる時)、
そのバッファは「# + バッファの番号」という書式で指定できるので、 次のような方法でも差分をとることができます。
この方法は大抵、ファイル名を指定した場合よりもキーストロークが少なくて済むので、 覚えておくと役に立ちます。

:VDSplit 差分を取りたいバッファ

" 差分を取りたいバッファの番号が5の場合のコマンド例
:VDSplit #5
2つのテキストファイルの差分表示(横並べ)

Note

バッファの番号を知るには「buffers」コマンドか、「ls」コマンドを実行してください。
vimエディタのコマンドの中で「# + バッファの番号」と記述すると、 その番号のバッファを指定したことになります。

:buffers
「buffers」コマンドの実行結果
ドキュメントアクション
コメント
{no}. {user_name}  {posted}
{message_body}

(必須)
氏名を入力してください。
Eメールアドレスを入力してください。
(必須)
送りたいメッセージを入力してください。
Recent Comment
EnhCommentify.vim : 複数のファイルタイプに対応したソースコメントアウト、コメントアウト解除スクリプト — 名無しのvim使い
==> anonymous [2010/03/22 06:32:47]
vimエディタから外部のプログラムやコマンドを実行する。 — 名無しのvim使い
==> 通りすがりnoです [2010/02/04 18:28:49]
==> 通りすがりの者です [2010/02/04 18:30:28]
==> 通りすがりのものです2 [2010/02/04 18:41:38]
PCに昨日初めてさわった人でもわかるgvim超々入門 (Windows、vim6) — 名無しのvim使い
==> anonymous [2009/11/05 11:57:11]
==> 佐藤 よしお [2009/11/27 15:53:34]
==> 小見 拓 [2009/11/27 18:40:42]
==> anonymous [2010/01/06 19:48:09]
Update Feed
RSS1.0 / RSS2.0 / ATOM