覚え書き、ブログ代わりなど不定期に書き散らすWiki

WinMerge 日本語版


WinMerge は、ファイルを比較して異なる部分を色付けして表示してくれる
ファイル比較ソフト。
オープンソースで開発されているが、日本語化をしてくれている人がいて、
日本語版ではばっちり日本語に対応している。

そんな WinMerge にファイルフィルタという機能がある。
比較対象のファイルを特定のファイルやディレクトリだけに限定して、
その他のファイルは比較結果のリストに現れないようにする。

例えば同じディレクトリ内にソースファイルとオブジェクトファイルがあって、
ソースファイルだけを比較したいときに有効。
オブジェクトファイルの差異には関心がないのに、
比較結果に大量のオブジェクトファイルが出てきたら、
比較に時間がかかるし見づらくなってしまう。

便利な機能だが、仕様が分かりにくく、混乱するので要点をメモ。

設定ファイルは、普通のテキストエディタで編集する。


注:フィルタの選択画面で「インストール」「新規」などのボタンが現れるが、
  これが分かりにくい。使用しない方がいい。

先ず、設定ファイルを読み込むフォルダが決められているので、
これを確認する。
メニューから「編集」「設定」を開き、カテゴリのシステムにある、
フィルタフォルダのところに表示される。必要ならここで変更できる。

次に、確認したフォルダをエクスプローラで開き、拡張子.flt の名前で
テキストファイルを作成、編集する。例えば test.flt
以下のような内容で保存する。

name: test
desc: 詳しい説明
def: include
f: \.txt$
d: \\tmp$

最初にファイルを作成したときは、一覧画面に反映されないので、
そのときはWinMerge を再起動する。

使用するには、メニューから「ファイル」「開く」又はCtrl-O を入力、
比較するフォルダを選択する画面で、フィルタ欄右の選択ボタンをクリック、
フィルタの一覧が表示されるので、先ほど作成した test を選択する。

name, desc はフィルタ一覧に表示される名前。
def でホワイトリストかブラックリストかを指定する。
f, d, はパターンを指定する。複数記述できる。

include と exclude は意味が逆。


def: のところで選択するinclude と exclude の意味が、
普通の感覚と逆になっている。
def: include と指定すると、設定ファイルで指定されたパターンの
ファイルが比較対象とならない。
def: exclude と指定すると、設定ファイルで指定されたパターンの
ファイルだけが比較対象となる。

f: と d: の意味


f: はファイルのパターンを正規表現で指定する。
d: はディレクトリのパターンを正規表現で指定する。

include のときは、f: 又は d: のいずれかのパターンに該当する
ファイルが比較対象とならない。
exclude のときは、f: 及び d: の両方のパターンに該当する
ファイルだけが比較対象となる。

パターンの書き方

  • ## はコメントで、行末まで無視される。
  • f: \.txt$ などのパターンは、正規表現と解釈され、比較対象の文字列とマッチングされる。
  • “\.txt$” 部分の前後の空白は無視される。
  • パターンは一行で書かなくてはならない。
  • ^ は行頭にマッチする。
  • $ は行末にマッチする。
  • ^や$がないと、比較対象文字列の任意の部分文字列とマッチする。
  • . は任意の文字にマッチする。
  • [1-9] は1〜9の文字にマッチする。1と9の部分は他の文字でもよい。
  • (...) は...部分のパターンをまとめて一つのパターンにする。
  • S? はパターンSと、Sなしの場合の両方にマッチする。例えばA(BC)?D は、AD 又は ABCD にマッチする。
  • \ (バックスラッシュないし円記号)は記号の特殊な意味を打ち消す。

何とパターン比較するか


例として比較するファイルまたはフォルダの指定で以下のように指定したとする。

1: C:\Users\ZZZ\Desktop\AAA\
2: C:\Users\ZZZ\Desktop\BBB\
3(オプション): (指定しない)
フィルタ: [F] test
サブフォルダを含む: チェックする
例えば C:\Users\ZZZ\Desktop\AAA\XXX.txt というファイルがあったとすると
“XXX.txt” という文字列が、ファイルパターンと比較される。
ディレクトリパターンとは比較されないようだ。
例えば C:\Users\ZZZ\Desktop\AAA\SUB\YYY.txt というファイルがあったとすると
“YYY.txt” という文字列が、ファイルパターンと比較される。
“SUB” という文字列が、ディレクトリパターンと比較される。
例えば C:\Users\ZZZ\Desktop\AAA\SUB\SUBSUB\ZZZ.txt というファイルがあったとすると
“ZZZ.txt” という文字列が、ファイルパターンと比較される。(#1)
“SUB” という文字列が、ディレクトリパターンと比較される。(#2)
“SUBSUB” という文字列が、ディレクトリパターンと比較される。(#3)
ここでも、include のときは#1〜#3 のいずれかに該当するとき、比較対象とならない。
exclude のときは、#1〜#3のすべてに該当するとき、比較対象となる。

注: SUB\\SUBSUB のようなディレクトリパターンを記述しても適合しない。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます