ホーム > テキスト処理・検索 > vimdiff

vimdiff: ファイルの差分比較とマージ

vimdiffは、強力なテキストエディタであるVimをベースに、2つ以上のファイル間の差分を視覚的に比較し、マージすることができるツールです。ファイル間の変更点を容易に特定し、一方のファイルの変更を他方のファイルにインポートまたはエクスポートできるため、コードレビューやバージョン管理のコンフリクト解決に非常に役立ちます。

概要

vimdiffは、Vimエディタのdiffモードを活用して複数のファイルを並べて表示し、変更された部分を自動的にハイライトして表示します。ユーザーはVimの強力な編集機能をそのまま活用して差分を探索し、必要に応じて変更を容易にマージできます。

主な特徴

  • サイドバイサイド(Side-by-side)または上下(Top-bottom)でのファイル比較
  • 差分の自動ハイライトと同期スクロール
  • 変更点の探索と選択的なマージ機能
  • 最大8ファイルまでの同時比較をサポート
  • Vimの全ての編集および探索機能を利用可能

主なオプション

vimdiffは基本的に 'vim -d' コマンドを呼び出すため、Vimの様々なコマンドラインオプションを活用できます。以下は、vimdiff使用時に役立つ主なオプションです。

ファイルの指定

起動設定

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`vimdiff` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

vimdiffを使用してファイルを比較し、マージする様々なシナリオを見てみましょう。

2つのファイルを比較

vimdiff file_original.txt file_modified.txt

最も基本的な使い方で、2つのファイル間の差分を視覚的に比較します。

3つのファイルを比較

vimdiff file_version1.txt file_version2.txt file_version3.txt

3つのファイルを同時に比較し、各ファイル間の差分を一目で把握できます。

起動時に特定オプションを適用

vimdiff -c 'set diffopt=filler' fileA.txt fileB.txt

vimdiffを起動する際に `diffopt` 設定で空行を埋める方式で比較を開始します。これはファイル間の行数が大きく異なる場合に便利です。

読み取り専用でファイルを比較

vimdiff -R file_old.txt file_new.txt

ファイルの内容を変更する意図がなく、単に差分だけを確認したい場合に使用します。

インストール

vimdiffはVimエディタパッケージの一部として提供されます。ほとんどのLinuxディストリビューションにはVimがデフォルトでインストールされているか、パッケージマネージャーを通じて簡単にインストールできます。

Debian/Ubuntu

aptパッケージマネージャーを使用してVimをインストールします。

  • コマンド: sudo apt update && sudo apt install vim

CentOS/RHEL/Fedora

yumまたはdnfパッケージマネージャーを使用してVimをインストールします。

  • コマンド (CentOS/RHEL): sudo yum install vim
  • コマンド (Fedora): sudo dnf install vim

macOS

Homebrewを使用してVimをインストールします。

  • コマンド: brew install vim

ヒントと注意点

vimdiffをより効率的に使用するためのヒントと注意点です。

主なVimdiff内部コマンド

vimdiffセッション内で使用できる便利なコマンドです。

  • `[c` または `:diffget` (前の差分へ移動)
  • `]c` または `:diffput` (次の差分へ移動)
  • `dp` (diffput): 現在のバッファの変更を他のバッファに適用
  • `do` (diffget): 他のバッファの変更を現在のバッファに取り込む
  • `:diffupdate`: 手動で差分を更新 (ファイルを編集した後などに便利)
  • `:qa` または `:qall`: 全てのdiffウィンドウを閉じて終了

スクロール同期

デフォルトでは、全てのdiffウィンドウはスクロールが同期されます。`set noscrollbind` コマンドで特定のウィンドウのスクロール同期を解除できます。再度同期するには `set scrollbind` を使用します。

Diffオプション設定 (`diffopt`)

`set diffopt=<オプション>` コマンドを使用して、diffの表示方法を細かく制御できます。例えば、`set diffopt=filler,context:3` は空行を埋め、3行のコンテキストを表示します。


同じカテゴリのコマンド