フィルターの使用


ファイルやフォルダー比較の際、比較範囲を限定するためにファイルフィルターを使用することができます。 これは、比較結果から、あなたが興味のない差異を取り除きたい場合に便利です。 フィルターは、正規表現を元に規定します。 WinMerge は、ポピュラーな PCRE (Perl Compatible Regular Expressions) 正規表現エンジンを使用しています。

フィルターの基本機能はシンプルです。 通常比較されるであろう、それぞれのアイテム(フォルダー、ファイル、ファイル中の行)を評価し、 対象のアイテムがフィルター式にマッチした場合、フィルターを適用します。 フィルタータイプにより、アイテムは、比較に含められるか、除外されるかのどちらかです。

フォルダー比較用とファイル比較用の異なる WinMerge フィルターがあります。

フォルダー比較: ファイルマスクとファイルフィルター

単純なファイルマスク、または、より複雑なフィルターにより、 ファイルフィルター中で指定された複数の規則を適用することで、 フォルダー比較中に含めるファイルを指定することができます。 ファイルマスクとファイルフィルターの両方を、同一の操作中で適用することができます。

フィルターされるファイルやフォルダーは、デフォルトで隠されます。 それは、典型的にあなたが望むものでしょう。フィルターされたアイテムを表示するには、 表示スキップされた項目の表示をクリックしてください。 しかし、フォルダー比較ウィンドウは、それらについて最小限の情報しか表示しません。 例えば、あなたは、スキップされたファイルがテキストファイルかバイナリファイルか判らないでしょう。

ファイル比較: 行フィルターと置換フィルター

行フィルターは、ファイル比較操作のみに適用されます。 それにより、単一行の差異を無視することができます。

置換フィルターは、ファイル比較操作のみに適用されます。 置換フィルターは、diffブロック内の文字列を指定された文字列に置換して比較し、 結果が一致する場合はそのdiffブロックを無視します。 これは、興味のない多数の変更を無視するのに役立ちます。

1. ファイルマスクの使用

フォルダー比較中に含める拡張子を指定する、1つか複数の ファイルマスクを使用することができます。 その他すべてのファイルは、選択から省かれます。

1.1. ファイルマスクと定義と適用

フォルダー比較操作を実行時に、ファイルマスクを定義し適用する:

  • ファイルまたはフォルダーの選択ダイアログを使用しているなら、 1(左)2(右)のフォルダー選択後、 フィルターフィールドへ、 1つか複数のファイルマスクを入力してください。 マスクは、フォルダー比較操作を開始した時に適用されます。

  • WinMergeのコマンドラインを使用している場合は、ファイルマスクを指定する -fフラグ(次のセクションの例を参照)を使用してください。

フィールドやコマンドラインで、ファイルマスクとファイルフィルターの、 両方を指定することはできないことを憶えておいてください。

1.2. ファイルマスクの文法と例

このシンタックスは、ファイルマスク用です:

[!](*.[拡張子]|フォルダーマスク\)[区切り文字[!](*.拡張子|フォルダーマスク\) ...]

有効な区切り文字はスペース、カンマ、コロン、セミコロンです。

拡張子なしのマスク(*.)は、 README の様な、拡張子なしのファイルを選択します。

2.16.19 以降、感嘆符(!) をマスクの前に付加した場合、そのマスクに一致したファイルは除外されます。 また、バックスラッシュ(\)をマスクの後に付加した場合、 そのマスクはファイルではなくフォルダーが対象となります。

例1 ファイルマスク

このコマンドラインの例では、フォルダー比較操作は、拡張子 xmltxtのファイルのみを含みます。 その他すべてのファイルは省かれます:

WinMergeU c:\project\docs c:\temp /f *.xml;*.txt


例2 フォルダーの除外(2.16.19以降)

このコマンドラインの例では、フォルダー比較操作は、 .git.vsフォルダーを除外します:

WinMergeU c:\project\docs c:\temp /f !.git\;!.vs\


2. ファイルフィルターの使用

ファイルフィルターは、拡張子 fltのテキストファイルです。 これらは、フォルダー比較用の複数のフィルタールールを適用することを可能にします。 ファイルマスクと異なり、ファイルフィルターは、含むか除外、どちらかにマッチすることができます。

WinMergeは、たくさんの定義済ファイルフィルターをインストールします。 もし、必要なフィルターが、これらのファイルフィルターで提供されていなかったら、 自分自身で作成することができます。 タスクをもっと簡単にするために、WinMergeは、 FileFilter.tmplという名前のテンプレートも提供しています。 このセクションは、比較にファイルフィルターを適用する方法と、ファイルフィルターの文法を説明します。 「フィルターダイアログの使用」では、フィルターの追加、編集、管理方法について説明します。

2.1. ファイルフィルターの場所

WinMergeは、次の場所のファイルフィルターを自動的に検出します:

WinMerge インストールフォルダーのFilters フォルダー

ここには、定義済ファイルフィルターがインストールされています。例えば、 C:\Program Files\WinMerge\Filters。 システム上のすべてのユーザーに有効にするために、 ここにファイルフィルターを作成、または、コピーすることができます。

新しいファイルフィルターを作る前に、定義済フィルターに必要なものが含まれているか確認してください。 含まれていない場合、定義済ファイルの中から役立つルールが見つかるかもしれません。

デフォルトプライベートフィルターフォルダー

このフォルダーの場所は、WinMerge オプションの、システムページで定義されています。 デフォルトでは、あなたのユーザープロファイルフォルダーのサブフォルダーとして指定されています (Windows 10なら、Documents\WinMerge\Filters)。 通常、ここに作成、または、コピーされたフィルターは、 あなただけが見ることができます。 新しいファイルフィルターを作成したら、それらをプライベートにするために、 ここにコピーすることができます。

その他のフォルダーにあるファイルフィルターを適用する前に、 それらをインストールしなければなりません。

2.2. ファイルフィルターの適用

次のいくつかの方法で、ファイルフィルターを適用することができます:

  • ファイルまたはフォルダーの選択ダイアログから、フォルダー比較を起動した時:

    1. 1(左)2(右)のフォルダー選択後、 フィルターフィールドの隣にある 選択ボタンをクリックしてください。

    2. フィルターダイアログで、ファイルフィルターを選択し、 フィルターフィールドへロードするには、ファイルフィルタータブを使用します。

      注意

      ファイルフィルターが有効になっている(訳注: 何れかのファイルフィルターが選択されている状態)場合、選択されたファイルフィルターは、 フィルターフィールドへ既にロードされています。

    3. 比較操作を続けてください。操作を開始した時、 フィルターフィールドのファイルが適用されます。

  • フォルダー比較操作起動後(違うフィルターを適用した、 または、フィルターを無効にしてしまった時など)にファイルフィルターを変更するには:

    1. ツールフィルターをクリックしてください。

    2. フィルターダイアログで、新しいフィルターを設定し、 OKをクリックしてください。

    3. フィルターダイアログを閉じた時、新しいフィルターは自動では適用されません: フォルダー比較ウィンドウ中で新しい結果を見るには、 F5を押下してください。

  • WinMerge コマンドラインから、 フォルダー比較起動時にファイルフィルターを指定するには、 -fフラグを使用してください。

フィールドやコマンドラインで、 ファイルマスクとファイルフィルターの両方を指定する ことはできないことを思い出してください。

2.3. ファイルフィルターの文法

このセクションは、WinMerge ファイルフィルターの文法と、記述のためのガイドラインの提供について説明します。

コメント記号は、 ##です。 コメント記号の後にある、行内のすべての文字は無視されます。 WinMergeは、ルール中のほとんどの空白文字を無視します。 しかしながら、通常は、コメントの前に1つか複数の空白文字(スペースかタブ)が置かれるでしょう。 ルール中で、 ##を文字列として使用するには、後ろの空白文字を取り除いてください。

ファイルフィルターで、まずはじめに必要な2行は:

name

ファイルダイアログに表示されるフィルター名です

def

適用されるフィルタータイプです。次の値のうち、1つを指定してください:

include

指定されたルールにマッチしたアイテム以外はすべて含めます。

exclude

指定されたルールにマッチしたアイテム以外はすべて除外します。

exclude メソッドを選択した時は、サブフォルダーを指定する d(ディレクトリ)ルールも追加しなければなりません。 このように、すべてのサブフォルダーを指定するのは、通常良いアイデアです:

d: \\*$ ## Subfolders

ティップ

これらの用語で混乱しないでください。ファイルフィルターの includeルールは、「何を含めるか」を指定するわけではありません。 「何を含めない」かを指定します。 同様に、excludeルールは、「何を除外する」かを指定するわけではありません。 「何を除外しないか」を指定します。

次に、フィルターファイルは、1つ以上のフィルタールールを含むべきです。 あなたは、たくさんのルールを好きなだけ追加できます。 1行には1つのルールがあるべきで、それぞれのルールは、 それぞれ1行にあるべきです(ルール中での改行は許可されません)。 (訳注: 回りくどいですが、「ルールは1行で記述してください」ということです。) それぞれのルールは、タイプデザイナー f:d:を含み、その後に、正規表現が続きます:

f: regexp

ファイルにマッチ、または、

d: regexp

フォルダーにマッチ

2.16.19 以降、 f:d: でマッチしたファイルまたはフォルダーの一部を除外するためのタイプデザイナー f!:d!: が使用できます。

多くの正規表現の特殊文字の中で、次の文字は、ファイルフィルターでは特に重要です:

^ (行頭)

ルールが正しく動作するために頻繁に必要になります。

$ (行末)

ルールが正しく動作するために頻繁に必要になります。例えば:

\.c$ ## 拡張子 
              cのファイルのみにマッチします。
              \.c ## cppcomのような、拡張子が 
              cで始まるファイルにマッチします。
\ (エスケープ)

通常の文字を、特殊文字にマッチさせるために使います。 例えば、フォルダー名にマッチするために、 フォルダー区切り文字のバックスラッシュの前に、 バックスラッシュを置きます(\\)。 ファイル名中のドットにマッチするために、 バックスラッシュを指定し、その後にドットを置きます(\.)。

特殊文字やワイルドカードは、ファイル名とマッチさせるためには、使用されません。 ある型のすべてのファイル名にマッチするためには、単にファイル名を省略します。

ルールは、大文字・小文字を区別しません。例えば、 f: \.bat$は、 winmerge.batcompare.BATにマッチします。

例3 ファイルフィルタールールの例

シンプルなファイルフィルタールール:

f: \.cpp$ ## *.cppファイルにマッチ
          f: \.h$ ## *.hファイルにマッチ
          f: ^My ## My*.*ファイルにマッチ
          f: Dlg\. ## *Dlg.*ファイルにマッチ
          d: \\test$ ## testフォルダーにマッチ
          d: ^\\Build$ ## Buildフォルダーマッチ
          d: Temp$ ## *Tempフォルダーにマッチ (例:FirstTemp)
          d: Src ## *Src*フォルダーにマッチ

いくつかのルールは、もっと複雑な正規表現です:

          f: ^\.#.*$ ## .#filename.versionファイル
          f: Dlg\.c(pp)?$ ## *Dlg.c*Dlg.cppファイル
          f: ^I.*\.h$ ## I*.hファイル
          f: Srv[1-9]\.def$ ## *Srv1.def から *Srv9.defファイル
          f: ^[h,k,m] ## h*.*d、k*.*m*.*ファイル

3. 行フィルターの使用

ファイル比較で単一行を無視するために、行フィルターを使用することができます。 例えば、コメント、生成されたコードの決まった型や、 バージョン管理システムのタイムスタンプの様なものを無視するために、 行フィルターを使うかもしれません。各行フィルターは1つのルールです。 ファイル比較のために、たくさんの行フィルターを使用することができます。

フィルターの追加、編集、管理については、 「フィルターダイアログの使用」を参照してください。

3.1. 行フィルターの適用

次の方法で、行フィルターを適用することができます:

  • ファイルまたはフォルダーの選択ダイアログから、 ファイル比較を起動する場合

    1. 1(左)2(右)のファイル選択後、 フィルターフィールドの隣の 選択をクリックしてください。

    2. フィルターダイアログで、使用したい行フィルターを有効化するため、 また、現在どの行フィルターが有効かを確認するには、行フィルタータブを使います。

      注意

      フィルターフィールドは、 どの行フィルターが有効化されているかを表示しません。

    3. ファイル比較操作を続けてください。 操作を開始した時に、有効化された行フィルターが適用されます。

  • 既に、ファイル比較操作を起動後 (違うフィルターを適用した、または、フィルターを無効にしてしまった時など)は、

    1. ツールフィルターをクリックしてください。

    2. ファイルフィルタータブを開いてください。

    3. あなたが適用したい行フィルターの行にチェックしてください。 また、適用したくないフィルターは、チェックを外してください。

      新規編集削除ボタンを使用して、 フィルターを追加、編集、削除することもできます。

    4. 行フィルター機能を有効にするには、 行フィルターを有効にするにチェックしてください。 行フィルター機能を無効にするには、チェックを外してください。

    5. OKをクリックして、 ファイルフィルターダイアログを閉じてください。

    6. F5を押下して変更を適用し、 ファイル比較ウィンドウをリフレッシュしてください。

3.2. 行フィルターの文法

行フィルターは、行フィルタールールが有効化されている場合、 比較ファイル中の単一行の差異毎に評価されるルールです。 単一行の差異にルールがマッチした時、その差異は無視されます。

無視された差異は、ファイル比較ウィンドウ中では、 無視された差異の色(WinMergeオプションの色ページで定義されている) でマークされます。 これは、その他のタイプと無視された差異を区別できるようにします。 しかし、無視された差異は、選択やマージすることができません。

行フィルターマッチは、2つの考えに基づいて記述されるかもしれません:

  • ルールが、行のある部分にマッチした時、差異全体が無視されます。 つまり、行の一部だけをフィルターすることはできません。 例えば、2つのファイルに、次の単一行の差異があると仮定した場合:

    File1: 

    # Jean Sibelius

    File2: 

    # Janne Sibelius

    フィルターなしの場合、行は差異として検出されます。 しかし、行フィルターを ^#の式とともに適用する場合、その行は同一であると評価されます。 なぜなら、式は、両方のファイルにマッチする最初の文字のみを指定しているからです。

  • ルールは、すべての行にマッチした場合に、複数行差異に適用されます。 例えば、次の2行の差異を考えてみてください:

    File1: 

    # Jean Sibelius
    # Pekka Himanen

    File2: 

    # Janne Sibelius
    Pekka Himanen

    同じ ^#ルールは、1行目にマッチしますが、2行目にはマッチしません。 したがって、差異は無視されません。

ティップ

パターンの正確さを制御するために、 行頭(^)と行末($) 記号を使用することは、大抵、良い習慣です。 なぜなら、式が、行のある部分にマッチした場合に、 ルールが適用されるからです。

例4 行フィルターサンプル

^MYTAG$

厳密に、 MYTAGにマッチする行をフィルターします

^::

::で始まる行をフィルターします

^/\*.*\*/$

/*で始まり、 */で終わる行をフィルターします

^[1-5]00

数字の、100、200、300、400、500 で始まる行をフィルターします


例5 CVS の Id 行にマッチする行フィルタールール

CVS の Id 行は、次の様なものです:

// $Id: Filters.xml 7591 2013-01-20 15:47:42Z christianlist $

そしてこれは、次のルールでフィルターできます:

^// \WId: .*\$

例6 poファイルの行コメントフィルター

poファイルの行コメントは、次の様なものです:

#: src/filename.c:766

そしてこれは、次のルールでフィルターできます:

^#

4. Using substitution filters

TBD

5. フィルターダイアログの使用

このセクションは、ファイルフィルターと行フィルターの作成・管理機能を提供する、 フィルターダイアログの説明をします。

フィルターダイアログを開くには、次の何れかの方法を使用してください:

  • ファイルまたはフォルダーの選択ダイアログで、 フィルターフィールドの右にある、 選択ボタンをクリックしてください。 フォルダー比較用のファイルフィルターを適用したい時は、方法を使用してください。

  • ツールフィルターをクリックしてください。 この方法は、ファイルまたはフォルダーの選択ダイアログを開いている時以外に使用可能です。

フィルターダイアログには、それぞれの WinMergeフィルター用のタブがあります:

ファイルフィルター

フォルダー比較用のファイルフィルターを設定するには、このタブを選択してください。

Line Filters

ファイル比較用の行フィルターを設定するには、こちらのタブを使用してください。

Substitution Filters

Choose this tab to work with substitution filters for file compare operations.

5.1. ファイルフィルタータブの使用

このタブの主要部分は、フォルダー比較用に利用可能なファイルフィルターの一覧です。 このリストは、共有、個人、そして、 「ファイルフィルターの場所」で説明されている、 WinMergeが知り得るインストール済みのファイルフィルターを含んでいます。

5.1.1. ファイルフィルターの有効化と無効化

ファイルフィルターが、フォルダー比較操作で、それを有効にすること、 また、フィルターが使用され始めてから、 現在のフィルターを止めるために無効にすることを可能にしなければなりません:

  1. まだ、フィルターダイアログを開いていない場合は、開いてください

  2. ファイルフィルターを選択、もしくは、リストから <なし>を選択しくてださい。

  3. OKをクリックして、 フィルターダイアログを閉じてください。

ファイルフィルターを有効にした後でそれらを適用する方法が、いくつかあります。 詳細は、 「ファイルフィルターの適用」を参照してください。

5.1.2. ファイルフィルターの設定

ファイルフィルターリストの管理と フィルターの新規作成には、これらのボタンを使用してください:

テスト

フィルターがどのように動作するか素早く確認するには、 リスト中のファイルフィルターを選択し、 テストをクリックしてください。 詳細は、 「ファイルフィルターのテスト」を参照してください。

インストール

ファイルフィルターを配置し、フィルターリストへ追加することができます。 ファイルフィルターは、それらをインストールしない限り、 共有フォルダー、デフォルトのプライベートフォルダーのどちらでも検出されません。

新規

共有フォルダーかプライベートフィルターフォルダーのどちらかに、 ファイルテンプレートの新しいコピーを作成します。 「ファイルフィルターの作成」で説明されているように、 テンプレートを編集、ルールの追加を行ってください。

編集

デフォルトエディターでファイルを開くには、リスト中のファイルフィルターを選択し、 編集をクリックしてください。

削除

ファイルを削除しリストから取り除くには、 リスト中のファイルフィルターを選択し、 削除をクリックしてください。 これで、本当にファイルは削除されました。

OKをクリックして、 フィルターダイアログを閉じた時、変更は保存されます。 行フィルターは、Windowsのレジストリに保存されます。

5.1.3. ファイルフィルターの作成

WinMergeにインストール済のファイルフィルターが、 お望みのフィルターを提供していないなら、あなた自身で作成することができます:

  1. ツールフィルターをクリックしてください。 または、ファイルまたはフォルダーの選択ダイアログから、 フィルターフィールドの右にある、 選択ボタンをクリックしてください。

  2. フィルターダイアログのファイルフィルタータブの、 新規ボタンをクリックしてください。

  3. 共有/プライベートフィルターダイアログで、 共有フィルター、または、 プライベートフィルター (これらを何に使用するかは、 「ファイルフィルターの場所」を参照してください)を選択し、 OKをクリックしてください。

    お使いのシステムの共有、または、プライベートフォルダーが、 「新しいフィルターのファイル名を指定してください」ダイアログに開きます (プライベートフォルダーが存在しない場合は、WinMergeが作成します)。

  4. 「新しいフィルターのファイル名を指定してください」ダイアログで、 ファイル名を入力し 保存をクリックしてください。

    注意

    既存のファイル名を選ばないでください: 既存のファイルを編集するには、 2に戻って、 「新規」の代わりに、「編集」をクリックしてください。

    WinMergeは、新しいファイルを、テンプレート: FileFilter.tmplを用いて作成し、 デフォルトのテキストエディターでそれを開きます。

  5. テンプレートの編集は、テンプレートの指示に従って、 プレースホルダー名と説明の更新、 「ファイルフィルターの文法」で説明されている、 フィルタールールの追加を行ってください。 テキストエディターでファイルを保存してください。

    ティップ

    あなたが作成中のルールを、素早くテストしたい場合は、 フィルターダイアログの「テスト」ボタンをクリックしてみてください。 詳細は、「ファイルフィルターのテスト」を参照してください。

  6. 標準の フィルターフォルダーに 、ファイルフィルターを作成したにも関わらず、 フィルターダイアログがその新しいファイルフィルターを表示しない場合は、 一度、OKをクリックしてダイアログを閉じてください。 次に、 ツールフィルターをクリックし、再度ダイアログを開いてください。 ファイルフィルターリストは、 新しいファイルフィルターを含んでいるでしょう。

    お使いのシステム上の、別の場所にファイルを保存した場合、 あなたがインストールしない限り、WinMergeは、それを検出することができません。 システム上のどこかにあるファイルフィルターを検出させるには:

    1. フィルターダイアログの インストールをクリックしてください。

    2. 「インストールするファイルフィルターの位置」ダイアログで、システム上の fltファイルを選択し、 開くをクリックしてください。 ファイルフィルターリストは、インストールされたファイルフィルターを含んでいるでしょう。

5.1.4. ファイルフィルターのテスト

新しいルール作成や既存のルールの理解を補助するため、 サンプルデータに対し素早くファイルフィルターをテストするには、 テストフィルターダイアログを使用してください。 それは、フルで比較操作を走らせるより簡単です。

フィルターダイアログから始めます:

  1. ファイルフィルタータブで、テストしたいファイルフィルターを選択してください。

  2. テストするルールを確認したい場合は、 編集をクリックしてください。 ファイルが開き、次のステップの間、内容を確認することができます。

  3. テストをクリックしてください。

  4. フィルターのテストダイアログで、テストするルールの型を選択してください:

    • ファイルフィルター中のファイルルール、 f:をテストするには、 フォルダー名オプションのチェックを外してください。

    • フォルダールール、 d:をテストするには、 フォルダー名オプションにチェックを入れてください。

  5. テスト用のテキストを入力してください。

    テキストは、テストするルールの型に適したものであるべきです。 例えば、フォルダー名オプションをチェックした場合、 あなたは「\temp」の様なフォルダー名を入力したいでしょう。

    結果欄は、入力したテキストを、 次のどちらかのステータスと共に表示します: passed、または、 failed

5.2. 行フィルタータブの使用

ファイル比較用の行フィルターの設定と有効化には、このタブを使用してください。 タブは、ルールの一覧を持っています。それぞれのルールは、1つの正規表現を含みます。 ファイル比較用に、リストから複数のルールを組み合わせて適用することができます。

5.2.1. 行フィルターの設定

下の 正規表現リストには、 いつでもルールの追加、編集、削除に使うことのできる、編集欄とボタンがあります。

新しいルールを追加するには:

  1. 新規ボタンをクリックしてください。 カーソルが自動的に編集欄へ移動します。

  2. 正規表現リストの下にある、編集欄に式を入力してください。

  3. 保存をクリックし、リストへ式を読み込んでください。

既存のルールを編集するには:

  1. 行を選択し、 編集をクリックしてください。

  2. 編集欄の式を編集してください。

  3. 編集が完了したら、 保存をクリックしてください。

ルールを削除するには、ルールを選択(チェック)し、 削除ボタンをクリックしてください。

5.2.2. 行フィルターの有効化と無効化

  1. 正規表現リストで、 適用したいフィルターにチェックを入れ、適用したくないフィルターはチェックを外すだけです。

  2. 行フィルターを有効にするオプションに チェックを入れるか、外してください。 行フィルターを有効にした場合、 正規表現リストで、現在チェックされているすべてのルールが使用されます。 行フィルターを無効にした場合、たとえそれらがチェックされていても、ルールは使用されません。

  3. OKをクリックして、フィルターダイアログを閉じ、設定を保存してください。

それらを有効にした後にファイルフィルターを適用する、いくつかの方法があります。 詳細は、 「行フィルターの適用」を参照してください。

5.3. Using the Substitution Filters tab

TBD

5.3.1. Configuring substitution filters

TBD

5.3.2. Enabling and disabling substitution filters

TBD

6. 正規表現のヘルプ

正規表現は、非常に複雑になり得ます。幸い、WinMerge のほとんどのファイルフィルターは、このトピックの例からもわかるように、シンプルな範囲の表現です。 WinMergeと共にインストールされるフィルターファイルは、多くの役に立つ例を含んでいます。

最後に、Web上には、正規表現を手助けする、これらのサイトを含むたくさんの情報源があります: