🍣

WinMerge Tips

2023/08/17に公開

WinMergeとはコード差分を比較するツールである。
他に差分を比較するツールは例えばLinuxではMeldなどが存在するがWinMergeライクのモノがなく、ほぼ一強となっている(個人的な感想)。
vs codeにも差分比較ツールはあるが、かゆいところに手が届かない。


インストール方法

以下からインストール
https://winmerge.org/?lang=ja


使い方

ツール自体の日本語対応がしっかりしているので直感的に操作できるので使い方については
以下のドキュメントを参照。
https://manual.winmerge.org/jp/


Tips

フィルタについて

WinMergeでは差分比較する際に比較対象を指定するフィルタを使用することができる。
詳細については以下を参照。
https://manual.winmerge.org/jp/Filters.html

ちなみに%localappdata%\Programs\WinMerge\Filtersにあらかじめいくつかのファイルフィルタがプリインストールされている。自作する場合は上記ドキュメントとこれらのプリインのフィルタを参考にするとよい(各フィルタの先頭には記述例が簡単にだが記載されている)。以下でフィルタを作成する際の注意点を記載する。

  • def: includeは以降で記載するファイル・ディレクトリを検索対象外とする定義
    感覚とは逆となっているので注意
  • 正規表現を使わない場合は指定した文字列の前後はワイルドカード(*)扱いとなる。
    • 例えばd: Srcと記載した場合は、*Src*フォルダにマッチする。
  • 上記までの規則を踏まえて、例えば差分比較対象プロジェクト内.gitフォルダを対象外としたい場合はd: \\\.git$と記述する必要がある。
    • 最初の\はエスケープ、2つ目の\はフォルダ区切り、3つ目の\もエスケープでファイル名中の.をマッチさせるために記述している。$は正規表現で文末を表す。
  • 差分比較対象プロジェクトのルート.gitフォルダのみを対象外としたい場合は
    ^\\.git$と記述する。^は正規表現で先頭を表す。

保存していないファイルの比較

以下の手順で実行することでファイルとして保存していなくてもコピペした文字列を比較することができる。

  1. ctrl+N で新規作成
  2. 左右のペインで文字列をペースト
  3. F5で更新

Linuxサーバーのファイルを差分比較したい

WinMergeはツールの名前通り、Windowsでしか提供されていないのでLinux環境では使うことができない。
しかし、sambaなどを使ってLinuxマシンにWindowsエクスプローラからアクセスすることでLinuxマシンでもWinMergeを使うことができる。
ネットワークドライブとしてマウントしておくと差分比較が非常にスムーズとなる。
※UNC形式で差分比較できたかは不明、後日確認する。

ネットワークドライブとしてマウントしておくとLinux間で差分比較も可能。
Linuxマシンにsambaが導入されていないし、管理者でないから導入できないという人は以下の記事を参照。sambaを導入せずともssh接続できる状態であればネットワークドライブとしてマウントすることができる。
https://zenn.dev/kabec_dev/articles/b88fba46be871a
https://zenn.dev/kabec_dev/articles/4199b774f95e76


検索後のハイライト表示を解除したい

検索機能でヒットした単語はハイライト表示されるが、検索画面を閉じても
ハイライトが維持されてしまう。以下の手順で解除可能(マーカーという機能でハイライトしている)

  1. 編集タブをクリック
  2. マーカーをクリック
  3. マーカーを有効にするのチェックを外す

※マーカー機能自体はctrl + shift + mで呼び出し可能


references

Discussion