如何将 prediffer 应用于 WinMerge,使其在 diff 中的所有文件上运行?

How to apply a prediffer to WinMerge such that it runs on all files in the diff?

TL;DR:我如何自动对所有差异结果应用 PrediffLineFilter,而不是仅对打开的文件手动应用?

WinMerge 2.16.4.0 支持使用插件 prediffers 等 diff,同时忽略符合正则表达式指定条件的项目*。但是,您似乎必须在执行 diff 之后手动应用 prediff(是吗?),如果它与文件过滤器不匹配,则必须在每个文件上手动应用 prediff。帮助手册指出 PrediffLineFilter.sct 的文件过滤器是 *.txt 并且没有提供更改指南。

我有数千个文件,其中唯一的区别可能是遵循可预测模式的服务器名称。 (示例:server01、server02 等)我已经找出了该模式的正则表达式以及在 diff 工作后手动应用 PrediffLineFilter。但我不能对数千个文件执行此操作。

如何在所有差异结果上自动应用 PrediffLineFilter,而不是仅在打开的文件上手动应用?我只想查看差异有意义的文件。

*感谢 WinMerge : how to ignore specific words in a comparison?

学到了这个

在您的 winmerge 安装文件夹中,转到 MergePlugins,然后编辑 PrediffLineFilter.sct。然后将 get_PluginFileFilters 的 return 更改为您希望此插件运行的文件。例如,您希望此插件适用于 html 和 txt 文件:

Function get_PluginFileFilters()
    get_PluginFileFilters = "\.html$;\.txt$"
End Function

完成这些更改后,select 比较文件夹中的所有文件 window 然后右键单击 > 插件设置 > Prediffer 设置 > 自动 Prediffer,然后刷新。 顺便说一句,在更高版本 (2.16.10) 中,您可以在插件设置中执行此操作 window.