【问题标题】:In Beyond Compare set a line as unimportant on both sides based on text在 Beyond Compare 中,根据文本在两边设置一条线为不重要
【发布时间】:2018-01-28 09:43:34
【问题描述】:

在 Beyond Compare 中,如何根据右侧的文本忽略两边的线?

例如

文件 1

if (a==b)
{
    c++;
    d--;
    //e--;
    f--;
}

文件 2

if (a==b)
{
    c++;
    //d--; /* GG2018 */
    e--;
    //f--;  
}

我想通过比较来显示 d-- 的线有微小的差异。 e-- 和 f-- 线应显示为主要差异。这是基于GG2018

这个词

我已经尝试过语法和重要性,但仅对于第 d-- 行,一侧显示为不重要。左侧显示为红色,没有细微差别。

编辑: 文件在 C 中,语法规则是

GG2018=Text matching ^.*GG2018.*

GG2018 set as unimportant.

还为不重要的文本创建了一条规则——

^.*GG2018.*

Edit2:在上面的示例中添加了 e-- 和 f-- 行。

另外,如果可以简化规则,可以修改标识符GG2018评论位置。

** 方法二 **

//d--; /* GG2018 */  changed to         /* GG2018 */ //d--; 

预期结果与之前相同。

【问题讨论】:

    标签: beyondcompare beyondcompare4


    【解决方案1】:

    您没有展示您的语法和重要性设置,因此很难给出答案。但是代码看起来像 Java 或 C。所以我的回答是基于您使用默认 Java File Format of BC4 的假设。

    我认为您忽略了第二个文件中的 //。有了这个注释标志,这不是小区别,而是一个非常重要的区别:

    如果您删除文件 2 中的注释标志,如果您设置了 Java 规则,您只会得到微小的更改。

    【讨论】:

    • 额外注释的目的是不显示带有注释GG2018的所有行。此评论表明这些行已经过审查,并且预计会有差异。所以,即使有其他一些重要的变化,也应该忽略差异。
    【解决方案2】:

    即使文本相同,如果语法元素类型不同,那么Beyond Compare也会显示为不同。

    文本比较在窗口底部的状态栏中显示当前光标位置的语法元素类型。如果将光标移动到左侧d--; 行中的d,则显示左侧语法元素为Identifier,右侧语法元素为Comment。这总是会有所不同,因为元素类型不同。

    使用不重要的语法无法忽略示例中的差异。如果您拥有 Beyond Compare Pro 许可证,则可以使用文本替换来忽略差异。

    在文本比较中加载文件,左侧为d--;,右侧为//d--; /* GG2018 */

    1. 单击“规则”工具栏按钮(裁判图标)。
    2. 转到“替换”选项卡。
    3. 单击 + 添加替换。
    4. 要查找的文本:(\s+)//(.*) /* GG2018 */
    5. 替换为:$1$2
    6. 检查正则表达式。
    7. 设置边:向右。

    () 中的表达式被分组并保存在变量 $1 到 $9 中。

    【讨论】:

    • 感谢您的回答,但是我认为在上述方法中,其他差异将被掩盖。例如文件 1 -> e--;文件 2 -> \\e--; .....在这种情况下,需要看到差异。
    • 根据您更新的示例,您需要使用文本替换而不是定义不重要的语法。请参阅我的答案中的更新说明。请注意,文本替换是 Beyond Compare 的专业版功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2014-04-28
    相关资源
    最近更新 更多