【问题标题】:Is there a way to configure vimdiff to ignore whitespace on lines that have a non-whitespace diff?有没有办法将 vimdiff 配置为忽略具有非空白差异的行上的空白?
【发布时间】:2013-08-01 14:40:01
【问题描述】:

在 vim 中区分两个文件时(例如 vim -d file1 file2),我希望忽略所有空格。

我在这个问题中遵循 Adam Katz 的建议几乎实现了这一点: Is there a way to configure vimdiff to ignore ALL whitespaces?

该建议导致 diff 命令获取 -w 选项,因此它不包括结果中只有空格差异的行。

如果一行中同时存在空格差异和非空格差异,则 diff 会正确返回这些差异。但是 vim 也将空格突出显示为不同之处。

例如如果有差异的两行是:

File 1: a,b,c,d
File 2: a, b, c, e

然后突出显示的差异将是b, c, e,而不是我想要的e

有什么方法可以告诉 vim 在高亮过程中忽略空格?

我正在使用 vim 7.3 (gvim)。

【问题讨论】:

    标签: vim diff vimdiff


    【解决方案1】:

    diff 作用于行,而不是字符或单词,因此-b-w 确定要忽略哪些。如果没有忽略一行,只要涉及到非空白更改(除非您忽略大小写或明确忽略匹配某些正则表达式的行),diff 将始终输出如下内容:

    1c1
    < a,b,c,d
    ---
    > a, b, c, e
    

    更改 diffopt 甚至 diffexpr 只会影响 Vim 调用 diff 的方式,而不影响它处理接收到的差异的方式。由于-b-w 都不会改变上述差异,因此Vim 将显示相同的结果。因此,您正在寻找的是一种改变 Vim 如何准确突出它接收到的差异的方法,我认为这是不可能的。

    【讨论】:

    • 我猜你是对的,这是不可能的。至少在当前版本的 Vim 中没有。谢谢
    【解决方案2】:

    文件 1 = f1, 文件 2 = f2

    删除另一个临时文件中的空格怎么样?

    vim -c "s/\s//g" -c "wq! f2.tmp" f2
    

    然后

    vimdiff f1 f2.tmp
    

    【讨论】:

    • 这是一个有趣的解决方法。在某些情况下它可能会很好地工作,但会使阅读/理解更改的上下文更加困难。谢谢!
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多