テキストファイルの比較とマージ


このトピックでは、WinMerge ファイル比較ウィンドウを使用してテキスト ファイルを比較およびマージする方法について説明します。ここで説明する相違点に関する基本概念を理解するには、最初に ファイル比較とマージの概観 を読むことをお勧めします。 Hex ファイルの関連情報については、Hex形式比較 を参照してください。

1. ファイル比較操作を開始する

ファイル比較操作は、WinMerge ウィンドウまたはコマンド プロンプト ウィンドウから開始できます。

WinMergeウィンドウから

ファイル → 開く をクリックします。 [ファイルまたはフォルダーの選択] ダイアログを使用して、比較する左右のソース ファイルを指定します。 「ファイルまたはフォルダーの選択」ダイアログの詳細については、「ファイルとフォルダーを開く」を参照してください。

コマンドプロンプトウィンドウから

WinMerge インストール ディレクトリにある WinMergeU.exe を実行します。コマンド引数に、比較する左右のファイルを含めます。コマンド ラインの使用の詳細については、「コマンドライン」を参照してください。

2. ファイル比較ウィンドウ

[ファイル比較] ウィンドウには、比較されたファイルが 2 つのファイル ペインに並べて表示されます。 WinMerge ツールバーとコンテキスト メニューには、相違点の表示、移動、およびマージのための機能が用意されています。以下のスクリーンショットは、ファイルの 2 つのバージョンの比較を示しています。

ファイル比較ウィンドウ

2.1. ファイルペイン

左右のファイル ペインには、比較対象の 2 つのファイルのテキスト内容と相違点が表示されます。ファイル ペインは、差異に移動したりマージしたりするためのメイン領域であり、テキストを直接編集することもできます。このセクションでは、これらのアクションをサポートする機能と、ファイル ペインをカスタマイズする方法について説明します。

2.1.1. ファイルペインヘッダー

各ファイル ペインの上部にあるヘッダーには、ソース ファイルのフル パスが表示されます。左右のファイル名は、ファイル ペインの上にある比較ウィンドウのヘッダーでも識別されます。

ファイル ペインの 1 つは常にアクティブです (ヘッダーの背景が暗いことで示されます)。もう 1 つは非アクティブで、ヘッダー バーが明るくなります。 編集できるのはアクティブなペイン内のみです (「ファイルペイン編集機能」 で説明されているように)。どちらかの側をクリックしてアクティブにし、もう一方の側を非アクティブにします。

ヘッダーのファイル名の前にあるアスタリスク (*) は、ファイル内に未保存の変更があることを示します。

ヘッダー バーのコンテキスト メニューには、ファイル情報のコピーと貼り付けに役立つショートカットがあります。

フルパスをコピー

ソース ファイルのフル パスをシステム クリップボードにコピーします。

ファイル名をコピー

ソース ファイル名のみをシステム クリップボードにコピーします。

2.1.2. 差異の強調表示

WinMerge は、ファイル ペインのいくつかの種類の違いを強調表示します。 [オプション] ダイアログの [色] ページでは、ほとんどの相違タイプの背景色とテキスト色のセットを定義し、その状態 (選択されていない、選択されている、削除されている) をバリエーションで示します。このセクションでは、基本的な相違タイプのそれぞれがどのように検出され、表示されるかについて説明します。

差異

差異ブロックには、異なる 1 つ以上の連続した行が含まれます。デフォルトの差異の背景色は金色ですが、空白行は削除された色でマークされます。

このセクションのこの画面と他の画面では、行番号の表示 を有効にして、ソース ファイル内のどの行が比較されているかを表示しました。

差異ブロックの背景色

この比較により、3 つの相違ブロックが検出されます。

  1. 最初の差異は 1 行です。

  2. file2 の空白行には、file1 には対応する空白行がありません。 WinMerge は欠落している空白行を削除された差異として扱い、ここではデフォルトの灰色でマークされます。

  3. 最後の差異ブロックには 2 行が含まれます。

無視される差異

この色は、WinMerge が無視するように構成したコンテンツをマークします。差異ブロックとは対照的に、無視されたコンテンツは比較されず、何が無視されたかを確認しやすくするために強調表示されるだけです。無視される違いには次のようなものがあります。

  • 空白行 ([オプション] ダイアログの [比較] ページで 空白行を無視 を有効にしている場合)。

  • 定義した行フィルタのパターンと一致する相違点 (方法については、フィルターの使用 を参照してください)。

次の例では、Ignore空白行を有効にして前の比較を繰り返します。現在、違いは 2 つだけです。右側の空白行は、無視された差異の色でマークされます。

差異を無視した差異ブロックの色

移動

[オプション] ダイアログの [比較] ページで 移動ブロック検出 が有効になっている場合、移動された相違点は、比較されたファイル内の異なる場所で見つかった同一の行です。 次のスクリーンショットは前の比較を繰り返していますが、今回は移動ブロックの検出が有効になっています。

移動ブロック検出によるブロックの色の差

異なる場所にある 2 つの同一の行 (a と c を含む) が、デフォルトのオレンジ色の移動色でマークされていることに注意してください。この場合の移動ブロック検出のもう 1 つの効果は、最後の 2 行が 1 つの差異ブロックではなく 2 つの別個の差異になることです。

場合によっては、移動された差異を表示すると、ファイル内の変更を視覚化しやすくなります。ただし、移動した行が多すぎると、比較が困難になる可能性があります。ご自身の判断で行ってください。

単語の差異

WinMerge は、変更されたテキストを差異ブロックでマークできます。行の違いは単語の違いの色でマークされます。詳細については、「行内差異の強調表示」 を参照してください。

類似行

[オプション] ダイアログの [比較] ページで 類似行をマッチさせる を有効にすると、WinMerge は差異ブロック内の類似行を整列しようとします。 「similar」 とはどういう意味ですか?一般に、この機能は、強い類似性を持つ行な​​どの単純な場合に最も効果的に機能します。類似した行が検出されると、ファイル ペインで整列するように調整されます。次の図は、類似行をマッチさせ オプションを有効にする前と後の、同じ 2 つのファイルの比較を示しています。

無効: 類似した行を一致させずに比較する 有効: 一致する類似行を比較する

2 番目の比較では、行 「mice」 と 「mice and a」 が類似しているものとして検出されます。 WinMerge は表示に空白行を追加して、これらの行が差異ブロック内の同じレベルに表示されるようにします。

2.1.3. 行内差異の強調表示

場合によっては、差異ブロックだけでなく、変更されたブロック内のテキストも強調表示すると便利です。次の 2 つの方法で無効または有効にすることができます。

  • [オプション] ダイアログの [エディター] ページで、すべての 行の違いを表示 オプションを設定します。

  • 表示 → 線の違いを表示 をクリックして、線の違いのオンとオフを切り替えます。

注意

WinMerge のナビゲーションおよびマージ機能 (次の差異やコピー左など) は、差異ブロック内の行の差異ではなく、差異ブロックに対して機能することに注意してください。

このセクションでは、行の違いがどのように検出され、マークされるかについて説明します。これらのオプションの効果は、「オプション」ダイアログの「比較」ページの現在の空白設定にも影響されることに注意してください。

単語レベルの行内差異

次の例は、各空白設定でワードレベルの行の違いがどのように表示されるかを示しています。

例1 空白を含む行の違い: 比較

WinMerge は、さまざまな単語とスペースをすべて検出します。

空白を比較するワードレベルの行の差異

例2 空白を含む行の違い: 変更を無視

複数のスペースやタブは 1 つのスペースと同じように扱われます。この例では、最後の 2 つの単語間の余分なスペースはマークされていません。

空白の変更がない場合のワードレベルの行の差異

例3 空白を含む行の違い: すべて無視

単語間のスペースは比較されないため、これらの行は同一のものとして扱われます。

空白なしを比較するワードレベルの行の差異

文字レベルの行の違い

文字レベルの行の違いには、単語内の最初と最後の異なる文字、およびそれらの間のすべての文字が含まれます。単一の文字レベルの違いが、隣接する単語にまたがる場合があります。次の例は次のことを示しています。

空白なしを比較する文字レベルの行の差異

注意

単語レベルの行の違いと同様に、文字の強調表示は、WinMerge が単語の区切りを検出するように構成されている方法によって異なります。この例では、file2 内の単語 cure の後の余分なスペースは、空白が比較された場合にのみ強調表示されます。

単語または文字の区切り

行違い内の単語や文字は、空白文字、または空白文字と句読点の組み合わせによって区切ることができます。 空白 (デフォルト) は、ほとんどのテキスト ファイルを比較する場合の一般的な選択肢です。前述の行の違いの例はすべて、単語や文字を区切るために空白を使用しています。

場合によっては、句読点で区切ると便利です。たとえば、次のスクリーンショットは、カンマ区切りのリストを比較しています。意味のある行の違いを強調表示するために、[オプション] ダイアログの [エディター] ページで 空白または句読点で区切る を有効にしました。

空白なしを比較する文字レベルの行の差異

2.1.4. ファイルペイン編集機能

WinMerge はフル機能のエディタまたは IDE ではありませんが、元に戻す と やり直し、検索 と 置換、および 移動 などの基本的な編集機能を提供します。これらの基本的な編集タスクは、多くの場合、マージ中に必要になります (差異内のテキストを変更する場合など)。アクティブなファイル ペインで編集できます (ペインをクリックしてアクティブにすることに注意してください)。ペインを結果ファイルに保存するまで、変更はファイルに書き込まれません。

WinMerge の編集機能には、構文の強調表示も含まれています。このオプション機能は複数のファイル形式をサポートしており、使用する色を構成できます。前のスクリーンショットが示すように、構文の強調表示は差異内には適用されないことに注意してください。

ティップ

「ファイルの再スキャン」 の説明に従って、自動再スキャンが有効になっていることを確認してください。そうでない場合は、ファイルの編集の前後にビューを手動で更新して (F5 キーを押して)、WinMerge の差分検出が最新であることを確認します。

2.1.5. ファイルペインのフォント

表示 → フォントの選択 をクリックすると、ファイル ペインのフォントを選択できます。 WinMerge は固定幅フォントのみをサポートします。

東アジア言語で WinMerge を使用する場合のフォントの推奨事項は次のとおりです。

  • 簡体字中国語: SimSun または SimHei 固定幅フォント
  • 繁体字中国語: MingLiU 固定幅フォント
  • 日本語: MS ゴシック または MS 明朝 等幅フォント
  • 韓国語: GulimChe 固定幅フォント (Gulim ではありません。このバリアントでは、グリッド セルの中心に配置されず、固定幅モードでの位置合わせが不十分な比例間隔グリフが使用されるためです)。

2.1.6. ファイルペインのマージン

ファイル ペインには、行番号といくつかの記号を表示するオプションの灰色の余白があります。余白を表示または非表示にするには、表示 → 余白の表示 をクリックします。複数のファイル比較ウィンドウを使用している場合は、各ウィンドウのマージンを個別に制御できます。マージンには、次の機能の一部またはすべてが表示されます。

  • 行番号 (表示 → 行番号の表示 が有効な場合)。

  • ブックマーク (編集 → ブックマーク が有効な場合)。ブックマークは、行の隣の余白にある青い円で、WinMerge に記憶させて戻ることができます。

    • 行にブックマークを設定するには、その行の余白をダブルクリックします (または Ctrl+F2 を押します)。同じ操作で既存のブックマークも削除されます。

    • ブックマークを移動するには、編集 → ブックマーク をクリックし、次へ または 前 を選択します。

    • 単一のブックマークをダブルクリックして削除します (または、Ctrl+F2 を押します)。

    • 編集 → ブックマーク → すべてのブックマークをクリア をクリックしてすべてのブックマークを削除します。

  • ワードラップ矢印記号 (表示 → 折り返す が有効な場合)。

次のスクリーンショットは、ブックマークとワードラップが有効になっているマージンを示しています。行番号がない場合、余白幅は最小限になります。

ファイル ウィンドウのマージンをブックマークとワードラップで比較します

次のスクリーンショットは、ブックマークと行番号が有効になっているマージンを示しています。余白が広くなっていることに注目してください。実際、マージンは最大行番号に対して十分広いです。したがって、行数が多い大きなファイルの余白は非常に広くなる可能性があります。

ファイル ウィンドウのマージンとブックマークおよび行番号を比較します

2.2. ツールバーとメニュー

WinMerge ツールバーとメニューには、ファイル内の相違点を移動、選択、マージするためのさまざまな機能が用意されています。

注意

WinMerge ショートカットには、フォルダー比較ウィンドウを開いた場合でもファイル比較ウィンドウを開いた場合でも、同じ名前とボタンが付いています。ただし、これらの機能の動作は異なります。ファイル比較ウィンドウでは、機能はフォルダー内の相違点ではなく、ファイル内の相違点に対して動作します。

使用できる差異機能はコンテキストによって異なり、作業中に変化することがよくあります。これは、WinMerge 環境の特定の場所またはその他の条件でその操作が可能な場合にのみ機能が使用可能であることを意味します。たとえば、差異内のテキスト行をクリックすると、ツールバーでいくつかのナビゲーション ボタンとマージ ボタンが有効になることに気づく場合があります。差異内にないテキストの別の領域をクリックすると、これらの機能は使用できなくなります。

差異機能は、WinMerge ツールバーで使用できるほか、次の代替メカニズムでも使用できます。

  • WinMerge メニュー、特に Merge

  • ファイル比較ウィンドウ内のコンテキスト メニュー (テキスト内で右クリックした場合)

  • キーボードショートカット

差異機能については、このトピックの後半の 「差異への移動」 および 「差異のマージ」 で説明します。 クイックスタート と ファイル比較とマージの概観 には、比較とマージの例が示されています。

2.2.1. マージモード

ファイル → マージ モード (または F9 を押す) は、差異マージおよびナビゲート機能用の WinMerge 1.7.1 の単一キーボード ショートカットを復元します。

  • 前の差異 および 次の差異 機能の Up キーと Down キー。

  • 左側にコピー および 右側にコピー 機能の Left キーと Right キー。

マージ モードでは、これらの一般的な操作の Alt キーが省略されます (通常モードよりもすばやく使用できます)。 Shift キーと Alt Arrow キーの組み合わせは、マージ モードでも通常モードと同じように機能することに注意してください。

マージ モードは、ステータス バーに Merge というテキストで示されます。

2.3. マージ結果ペイン

3つのテキストファイルを比較し、マージ結果の出力先を指定した場合(例えば、バージョン管理ツールがコマンドラインオプション /o を指定して WinMerge を起動した場合)、ファイル比較ウィンドウの下部にマージ結果ペインが表示されます。これは KDiff3 のマージ出力ウィンドウと同様に動作します。3つのファイルペインには比較対象のファイルが読み取り専用で表示され、マージ結果ペインにはマージ結果が表示され、自由に編集できます。この機能を使用するには、オプションダイアログの「比較/マージ」ページでマージ結果ペインを有効にする必要があります。

2方向の競合ファイルを ファイル → 競合ファイルを開く で開くと、マージ結果ペインが有効な場合、WinMerge は2つのソースペインを左右に並べて表示し、マージ結果ペインを開きます。2方向の競合ファイルには共通のベースがないため、差異のある各ブロックは未解決の状態で始まります。ブロックを解決するには、左または右のソースを選択します。このモードでは、ツールバーのボタンには 1 と 2 の番号が付けられ、Ctrl+Shift+1 と Ctrl+Shift+2 で、それぞれ左と右のソースを選択できます。未解決のブロックは、標準的な2方向の競合マーカーを使用して保存されます。

ペインを開くと、すべての差異は最初は未解決の状態になり、簡略化された<マージコンフリクト>または<未解決の差異>というプレースホルダー行で表示されます。/al、/am、/arコマンドラインオプション、または自動マージコマンドで自動マージを実行すると、コンフリクトしていない差異は選択したマージ先に従って自動的に解決され、ベースに対して両側で同じ行が変更された真のコンフリクトだけが未解決のまま残ります。

差異を解決するには、その差異を選択し、最上位の マージ結果 メニューから使用するソースを選択します。2方向マージセッションでは 左を選択 と 右を選択 が使用でき、3方向マージセッションでは、さらに 中央を選択 も使用できます。また、マージ結果ペインのコンテキストメニューや、ツールバーの 1 / 2 / 3 ボタンも使用できます。各コマンドは、現在の差異(または現在の選択範囲に含まれるすべての差異)に対して、対応するペインの行の選択と解除を切り替えます。複数のペインを選択すると、選択した順序でそれぞれの行が結合されます(両側で追加された内容をマージ結果に両方とも残したい場合に便利です)。すべてのペインの選択を解除すると、その差異は再び未解決の状態になります。また、未解決の差異を除き、マージ結果ペインに直接入力して修正することもできます。未解決の差異は、テキストを編集する前に、いずれかの「選択」コマンドを使用して解決する必要があります。左右の内容が空白文字のみ異なる競合には、(空白文字のみ) と表示されます。

ペインのマージンには各行の出所が表示されます。左、中央、右のペインから取得した行には、それぞれ1、2、3(ツールバーボタンに対応)が表示され、未解決のコンフリクトセクションには?、手動で変更された差異にはmが表示されます。ペインのステータスバーには、まだ未解決の差異の数が表示されます。ペインを開いている間は、次のコンフリクトおよび前のコンフリクト(Alt+Shift+Down/Alt+Shift+Up)を使用すると、すでに解決された差異を飛ばして、まだ判断が必要な次または前の差異に移動できます。

ファイル → 保存 → マージ結果を保存、保存ツールバーボタン、またはCtrl+Sを使用して、結果を出力先に保存します。未解決の差異が残っている場合、WinMergeは警告を表示します。未解決のコンフリクトはプレースホルダーテキストではなく、標準的なコンフリクトセクションとして保存されます。そのため、ファイルにはコンフリクトしている行のすべてのバージョンが保持され、後で任意のエディターやマージツールで処理を完了できます。コンフリクトしていない未解決の差異は、自動マージされた内容で保存されるため、どのバージョン管理システムも生成しないようなコンフリクトマーカーが出力に含まれることはありません。出力先のファイルをそのまま再度開いても、これらのコンフリクトセクションからマージを再開することはありません。他の3方向マージツールと同様に、WinMergeは常に比較対象の3つのファイルからマージ結果を再構築します。そのため、バージョン管理ツールが/oコマンドラインオプション(たとえばgit mergetool)を指定してWinMergeを再度起動すると、出力ファイルにすでに何が含まれているかにかかわらず、毎回新しいマージが実行されます。以前に部分的に解決したコンフリクトファイルから作業を再開するには、ファイル → コンフリクトファイルを開くを使用します。WinMergeはそのコンフリクトセクションを解析し、未解決の差異として復元するとともに、すでに解決されていたテキストを保持します。ウィンドウを閉じるときには、マージ結果が未保存の場合にもWinMergeは保存を確認します。これは、その時点でマージ結果ペイン自体が非表示になっている場合も同様です。デフォルトでは、各行は元の改行コードを保持して保存されるため、出力は元のファイルとの差異ができるだけ少なくなります(たとえば、バージョン管理での差分を最小限にできます)。出力の改行コードは、マージ結果ペインのステータスバーからWindows、Unix、またはクラシックMac形式に変更できます。エンコーディングは変更を行った側に従い、保存時にはバックアップファイルのオプションと、ファイルを開く際に使用したファイルパッカープラグインが適用されます。

3方向のテキスト比較では、マージ → マージセッションを開始(差異は未解決の状態で開始)またはマージ → 自動マージ(コンフリクトしていない差異は自動的に解決)を使用して、マージを開始することもできます。マージセッションがアクティブな間は、表示 → マージ結果ペインを使用してペインを表示または非表示にできます。マージセッションを終了して通常の3ペインの編集可能な状態に戻すには、マージ → マージセッションを終了を選択します。マージ結果に未保存の変更がある場合、WinMergeは保存を確認し、各ペインの元の読み取り専用状態とヘッダーを復元します。

自動マージで解決に使用するベースペイン(共通の祖先)は、コマンドラインオプションまたはキーボードフォーカスによって決まります。

コマンドラインオプションを使用する場合:

  • 左ペインにマージ(/al):左 = マージ先、中央 = 相手側、右 = ベース

  • 中央ペインにマージ(/am):左 = 相手側、中央 = マージ先、右 = 自分側

  • 右ペインにマージ(/ar):左 = ベース、中央 = 相手側、右 = マージ先

UIからマージ操作(マージセッションを開始または自動マージ)を行う場合: ベースペインは現在のキーボードフォーカスによって決まります。

  • 左ペインにフォーカスがある場合:左 = 自分側、中央 = 相手側、右 = ベース

  • 中央ペインにフォーカスがある場合:左 = 相手側、中央 = ベース、右 = 自分側

  • 右ペインにフォーカスがある場合:左 = ベース、中央 = 相手側、右 = 自分側

2.4. ロケーションペイン

ファイル ペインの左側にあるロケーションペインでは、比較されるファイルの全長が 2 つの垂直バー (左右のファイル ペインに対応) にマップされます。これは、長すぎて [ファイル] ペイン内で簡単に移動できないファイルを操作する場合に特に便利です。

[場所] ペインには、いくつかの種類の項目が表示されます。

ロケーションペインの差異線 差異ブロック

[ファイル] ペインの各差異ブロックは、[場所] ペインで各垂直バーを横切る水平線で示されます。これらの線の太さ、色、位置は、ファイル内のすべての相違点のサイズ (線数)、タイプ、および分布に関する手がかりとなります。たとえば、線の色は、対応する差異ブロックの色と同じです。前のスクリーンショットの [場所] ペインには、多くの基本的な差異 (金色) といくつかの空の差異ブロック (灰色) が表示されます。

ロケーションペインの現在の差異ポインター 現在の差異

差異を選択した場合、「場所」ペインでは、垂直バーの両側にある一対の小さな三角形で現在の差異線をマークします。別の相違点に移動すると、ポインタはその位置に合わせて上下に移動します。ファイル ペインをスクロールしても、ロケーションペイン内の差分ポインタ (または差異行) の位置は変わりません。

ロケーションペインのビューエリアバー 表示領域

[ファイル] ペインに現在表示されているファイルの領域は、[場所] ペイン上の影付き (半透明) ビュー バーで示されます。 エリア バーの高さと位置は、スクロール領域に表示されるファイルの部分に対応します。たとえば、ファイル ペインの高さを変更すると、バーが拡大または縮小することがあります。ロケーションペインのビュー バーとファイル ペインのこの同期により、素早いナビゲーションといくつかの便利なアクションが可能になります。

  • [ファイル] ペインをスクロールすると、[場所] ペインの表示領域も一緒に移動します。

  • 逆に、[場所] ペインの表示領域バーを上下にドラッグして、[ファイル] ペインをスクロールすることもできます。このスクロールバーの親指アクションは、長いファイルをナビゲートする場合に非常に便利です。

  • [場所] ペイン内の任意の場所をクリックすると、[ファイル] ペイン内の対応する場所にジャンプします。

移動された相違点

移動された差異は、異なる場所にある同一の行です。 これらは、[オプション]ダイアログの[比較]ページで[移動ブロックの検出を有効にする]がチェックされている場合にのみ表示されます。 [ファイル] ペインで移動された差異の詳細については、 「差異の強調表示」 を参照してください。ロケーションペインは、左右の場所バーの移動された差異を接続する線を描画します。 例えば:

移動された差異を含むロケーションペイン

[場所] ペインのコンテキスト メニューには、次のショートカットが含まれています:

  • 1 行目に移動: カーソルをファイルの先頭に移動します。

  • Go to: 指定した行にカーソルを移動します (「ナビゲーション機能」 で説明)。

  • 移動ブロックなし: 移動ブロックの移動差色をオフにします。

  • すべての移動ブロック: すべての移動ブロックの移動された差異カラーをオンにします。

  • 現在の差異の移動ブロック: 現在選択されている移動差分の移動差異のみの色をオンにします。

2.5. Diff ペイン

差異ペインには、選択した差異の両側の内容が表示されます。

差異を選択すると、2 つのバージョンが差異ペインの上部と下部にロードされます。このように、差異ペインでは差異にどの行が含まれているかを確認し、ファイルの残りの部分から切り離してそれらの行を調べることができます。

[差異] ペインで差異を直接マージするには、上側または下側を右クリックし、右側にコピー または 左側にコピー を選択します。

2.6. ステータスバー

各ファイル ペインの下部にはステータス バーが含まれています。ステータス バーには、ドキュメントとドキュメント内の位置に関するさまざまな種類の情報を含むいくつかのペインが含まれています。

行の状態
  • Ln: ソースファイルの行番号。

  • Col: カーソルの列位置と行内の列の合計数。

    Col は、タブを n スペースとしてカウントします。n は、WinMerge オプションのエディタ ページで タブ サイズ として定義された文字数です (デフォルトでは 4)。

  • Ch: カーソルの文字位置と行内の文字の総数。

    Ch はタブを 1 つのタブ文字としてカウントします。

  • EOL: 現在の行の改行スタイル (WinMerge オプションのエディター ページで 元の EOL を保持 オプションが有効になっている場合にのみ表示されます)。

読み取り専用ステータス

(「ファイルの保護」 で説明されているように) ファイルが読み取り専用に設定されている場合、RO がペインに表示されます。それ以外の場合、ペインは空になります。

ファイルのエンコーディング

ANSI ファイルのコードページ番号、Unicode ファイルの Unicode エンコード タイプ。

EOLスタイル

ファイルの EOL スタイル: Windows/DOS ファイルの Win (CRLF)、Unix (LF)、Mac (CR)、または Mixed。

注意

行ごとの EOL スタイルが使用されている場合、ファイルの EOL スタイルは表示されません (このペインは空白です)。

ファイル比較ウィンドウが開いているとき、WinMerge ウィンドウのステータス バーには、比較されたファイルに関する次のいずれかのメッセージが表示されます。

  • 同一: ファイルに違いはありません

  • n 件の差異が見つかりました: 検出された差異の数。差異が選択されていない場合にのみ表示されます。

  • 差異 x/n: 差異の総数における選択した差異のシーケンス番号 (1 から始まります)。

3. 差異への移動

このセクションでは、「ファイル比較」ウィンドウで差異をナビゲートして選択する方法について説明します。相違点を選択すると、その相違点は常に 3 つのファイル ペインの両方またはすべてで選択されることに注意してください。

ティップ

時間を節約するには、WinMerge オプションの [全般] ページで 最初の相違点まで自動的にスクロールする を有効にします。そうすれば、最初の相違点に手動で移動して選択する必要がなくなります。

3.1. ナビゲーション機能

[ファイル比較] ウィンドウで相違点をナビゲートするための機能と、ツールバーとメニューのショートカットを次に示します。

現在行/選択行の差異

ファイル ペインの差異内のテキストをクリック (または選択) した場合に有効になります。行内の単語の相違点を選択します。例えば:

行の差異を選択する例

差異ブロック自体を選択したい場合は、代わりに Current Difference を使用します。

ショートカット: 現在の行内差異ボタン ボタン、編集 → 行の差異を選択、F4、差異内のファイルペインのコンテキストメニュー。

次の差異

ドキュメント内の現在のカーソル位置の下にある次の相違点を選択します (必ずしも現在の相違点に相対しているわけではありません)。任意の点から相違点を順番に確認するために使用します。最後の差異が現在選択されている場合を除き、使用できます。

ショートカット: 次の差異ボタン ボタン、マージ → 次の差異、Alt+Down (マージでは Down)モード)。

前の差異

現在のカーソル位置の上にある以前の差異を選択します (必ずしも現在の差異に相対しているわけではありません)。差異を順番に後退するために使用します。最初の差異が現在選択されている場合を除き、使用できます。

ショートカット: 前の差異ボタン ボタン、マージ → 前の差異、Alt+Up (マージ モードでは Up)。

最初の差異

これを使用して、相違点の比較またはマージを開始したり、他の場所から最初の相違点を特定したりできます。最初の差異が現在選択されている場合を除き、使用できます。テキストをダブルクリックして相違点を選択することもできます。

ショートカット: 最初の差異ボタン ボタン、マージ → 最初の違い、Alt+Home。

現在の差異

この機能には 2 つの動作モードがあります。

  • カーソルが差異内にあり、差異が選択されていない場合、この機能は差異全体を選択します。これは、キーボードを使用して違いを選択する非常に便利な方法です。
  • 現在の差異がある場合、その位置にジャンプします。これは、選択した差異をスクロールして見えなくなった場合に、その位置にすぐに戻りたい場合に便利です。

ショートカット: 現在の差異ボタン ボタン、マージ → 現在の差異、Alt+Enter。

最後の差異

現在最後の差異が選択されている場合を除き、有効になります。

ショートカット: 最後の差異ボタン ボタン、マージ → 最後の差異、Alt+End。

移動

行番号または差異番号のいずれかにジャンプできます (たとえば、差異 2 は 2 番目の差異です)。 「移動」ダイアログを開きます。ここで、番号、使用するファイル (左側または右側)、および場所のタイプ (行または差異) を指定します。

ティップ

「行番号に移動」は、1 つのファイルから複数のターゲット ファイルに同じ変更をマージする必要がある場合に役立ちます。 Find を使用してテキストを検索したり、相違点をステップ実行したりするよりも、特定の相違点にジャンプする方が早い場合があります。

ショートカット: 編集 → Go to、Ctrl+G、ファイル ペインおよびロケーションペインのコンテキスト メニュー。

移動した行に移動

他のパネル(2ペイン)上の現在の差異の差異移動元/移動先へジャンプできるようにします。

ショートカット: Ctrl+Shift+G、ファイル ペインおよび差異ペインのコンテキスト メニュー。

左と中央の間の移動ブロックに移動

他のパネル (3 ペイン) の現在の差異の差異の移動元/移動先へジャンプできるようにします。

ショートカット: Ctrl+Shift+G、ファイル ペインおよび差異ペインのコンテキスト メニュー。

中央と右側の間の移動ブロックに移動

他のパネル (3 ペイン) の現在の差異の差異の移動元/移動先へジャンプできるようにします。

ショートカット: Ctrl+Alt+G、ファイル ペインおよび差異ペインのコンテキスト メニュー。

表示を更新

「マージ機能」 を参照してください。

4. 同期ポイント

TBD

5. 差異のマージ

マージすると、一方のファイル ペインからもう一方のファイル ペインに差異が左側から右側、または右側から左側にコピーされます。これは、WinMerge の編集機能 (このトピックで前述した) を使用してテキストを直接編集することとは異なります。

5.1. ファイルの再スキャン

デフォルトでは、WinMerge オプションのエディター ページで 自動再スキャン オプションが有効になっています。再スキャンにより、比較およびマージ操作が最新の状態に保たれます。再スキャンしない場合、WinMerge 差異は、外部エディタなどでファイルを比較しているときにファイルに発生する可能性のある変更を検出しません。

再スキャンは、ファイル比較中に特定のアクション (差異のマージやファイルの編集など) を実行すると発生します。ファイルが変更されている場合、WinMerge は別のアプリケーションがファイルを更新したことを通知するダイアログを表示し、ファイルを再ロードするかどうかを尋ねます。

はいをクリックしてファイルを再ロードしてから続行するか、いいえをクリックして変更を無視し、以前にロードされたファイルのバージョンで作業します。

重要項目

自動再スキャン が無効になっている場合、またはファイルが変更された可能性があると思われる場合は、マージ操作を実行する前 に 更新 を実行することを強くお勧めします。表示 → 更新 または 表示更新ボタン ツールバー ボタンを押すか、F5 を押します。

マージ結果が正しくない場合は、編集 → 元に戻す をクリックするか、Ctrl+Z を押してマージを元に戻します。次に、ファイルを再スキャンして、マージを再試行します。

5.2. マージ機能

マージ機能は、カーソル位置またはテキスト選択に基づいて相違点を暗黙的に選択できます。たとえば、差異内の任意の場所をクリックしてから、ツールバーの 右側にコピー ボタンをクリックすると、差異ブロック全体がマージされます。これにより、多くの小さな違いを簡単にマージできます。同様に、複数の相違点のすべてまたは一部にまたがるテキストを選択すると、含まれるすべての相違点が 1 つのマージ コマンドでマージされます。

マージ操作の結果が期待したものと異なる場合は、元に戻す をクリックして操作を元に戻すことができます。

ツールバーとメニューのマージ機能とそのショートカットは次のとおりです。

右側にコピー

1 つ以上の差異を左側から右側側にコピーします。差異を完全に選択する必要はないことに注意してください。最も簡単に言うと、これは、ターゲット差異のテキストをソース差異のテキストに置き換えることを意味します。ただし、相違点には空の行が含まれる場合もあるため、新しい行が作成または削除される場合があります。

ショートカット: 右側へコピーボタン ボタン、マージ → 右側にコピー、Alt+Right (マージでは Right)モード)、差異内のファイル ペインのコンテキスト メニュー、および差異ペインのコンテキスト メニュー。

左側にコピー

現在の差異を右のファイル ペインから左のファイル ペインにコピーします。詳細については、Copy Right の説明を参照してください。

ショートカット: 左側へコピーボタン ボタン、マージ → 左側にコピー、Alt+Left (マージでは Left)モード)、差異内のファイル ペインのコンテキスト メニュー、および差異ペインのコンテキスト メニュー。

右側にコピーして進む

現在の差異を右側から左のファイル ペインにマージし、次の差異 (存在する場合) を選択します。 1 つのステップの Copy Right と Next Difference に相当します。

ショートカット: 「右側にコピー」ボタンと「進む」ボタン ボタン、マージ → 左側にコピー、Ctrl+Alt+右、コンテキスト メニュー差異内のファイルペイン。

左側にコピーして次に進む

現在の差異を左側から右側にマージし、次の差異 (存在する場合) を選択します。 1 つのステップの Copy Left と Next Difference に相当します。

ショートカット: 左側にコピーして次に進むボタン ボタン、マージ → 左側にコピー、Ctrl+Alt+Left、コンテキスト メニュー差異内のファイルペイン。

すべてを右側にコピー

すべての相違点を左側のファイル ペインから右側にコピーします。 1 つのコマンドで 2 つのファイルを同期するために使用します。同様に、表示更新ボタン [元に戻す] をクリックするか、Ctrl+Z を押すと、マージ全体を取り消すことができます。

ショートカット: [OK]ボタン ボタン、Merge → Copy to Left、Alt+Left、差異内のファイル ペインのコンテキスト メニュー。

すべてを左側にコピー

すべての相違点を右のファイル ペインから左のファイル ペインにコピーします。 事実上、左側のファイル ペインの内容を置き換えます。 All Right と同様を参照してください。

ショートカット: 「すべてを左側にコピー」ボタン ボタン、Merge → Copy to Left、Alt+Left、差異内のファイル ペインのコンテキスト メニュー。

表示更新

ファイルを再スキャンして差異を更新します。自動スキャンが無効になっている場合は、ファイルに変更を加えた後に使用します (詳細については、「ファイルの再スキャン」 を参照)。

ショートカット: 表示更新ボタン ボタン、表示 → 更新、F5。

5.3. コンフリクトファイルの解決

WinMerge を使用すると、一部のバージョン管理システムがマージ操作中に生成する競合ファイルを解決できます。コンフリクトファイルは、マージで自動的に解決できない差異が発生した場合に作成されます。これは、2 つのファイルの不完全にマージされたコンテンツを含む 1 つのファイルです。 WinMerge はコンフリクトファイルを個別のファイルに分割し、それらのファイルをファイル比較ウィンドウで開きます。その後、WinMerge の比較およびマージ機能を使用してコンフリクトを解決し、マージされた結果ファイルを保存できます。

  1. ファイル → コンフリクトファイルを開く をクリックし、開くダイアログを使用してファイル システム内のコンフリクトファイルを選択します。 [ファイル比較] ウィンドウでコンフリクトファイルが開きます。

    • 左側のファイル ペインのファイル ヘッダーのタイトルは、Theirs File です。この側は、通常、バージョン管理システムのリポジトリにあるファイルを表します。通常、このファイルは編集できないため、WinMerge は左側の [ファイル] ペインを読み取り専用に設定します。 これは、差異をこのファイルから他のファイルにのみマージできることを意味します。

    • 右側のファイル ペインには、Mine File というタイトルが付いています。この側はファイルの作業コピーです。すべての変更は、結果ファイルであるこのファイルに対して行う必要があります。

      Mine File 側は、コンフリクトファイルを開いた後に変更されるように設定されます (ファイル ペインのヘッダーにアスタリスクが表示されます)。これにより、変更が必要ない場合は、ファイルをすばやく保存できます。また、ファイルの解決を忘れることがなくなります。ファイルを保存しないことを選択した場合、元のコンフリクトファイルは変更されません。

  2. このトピックで前述した通常の比較およびマージ機能をすべて使用して、[Mine File] ペインのコンフリクトを解決します。

  3. 完了したら、Ctrl+S をクリックして、Mine File 側を結果ファイルとして保存します。デフォルトでは、新しいバージョンは元のコンフリクトファイルを上書きします。または、ファイル → 右に保存 → 名前を付けて保存 をクリックし、別のファイル名を選択することもできます。

多くのバージョン管理システムでは、外部マージ ツールを構成できます。そうであれば、マージコンフリクトが発生したときにバージョン管理システムで WinMerge を自動的に起動できる可能性があります。

また、WinMerge コマンド ラインからコンフリクトファイルを開くこともできます。このコマンド ラインでは、Theirs、Mine、およびオプションで Resolved (コンフリクトファイルとは異なる結果ファイルが必要な場合) の 3 つのファイル名パラメータを受け入れます。詳細については、「コマンドライン」を参照してください。コンフリクトファイルへの単一パスもコマンド ラインで受け入れられます。