gpt4 book ai didi

unix - 如何从命令行执行可移植、可读和可管道化的逐字符差异?

转载 作者:行者123 更新时间:2023-12-04 12:32:37 24 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




标准的 diff 工具对于在文件中查找不同的行非常有用,但对于逐个字符的差异却不能很好地工作。我经常需要逐个字符(即书面文本,而不是代码)合并在不同计算机上未经同步修改的文本(是的,我知道我不应该,但无论如何它都会发生)。除了添加一两个段落之外,我可能还更改了逗号、拼写错误或之前两个文件共有的文本中的其他一些小改动。

Diff 会告诉我更改了哪些行,但由于每行可能有多个 diff,我必须仔细扫描这些行以找到每行每个物理上很小但很重要的 diff。修复后,我必须重复差异以确保我没有错过任何编辑。如果行是段落格式(即每段一行),并且许多连续的行具有如此小的差异,则情况会变得更糟。

现在我必须承认,我通常只是将这两个文件加载到 Microsoft Word 中并使用其内置的 diff 函数。启动一个像Word这样的大包,只是为了发现一些细微的差异当然是不方便的,但至少它是逐个字符地比较文件的。

我真正想要的是一种 Unix 方式来做到这一点。一个小巧可爱的工具或脚本,可以对文本进行逐字符比较,即不是基于行的,能够忽略行结尾,通过一些合理的 ascii-art 报告,并且完全可以通过管道在命令行的脚本中使用?

还有一个问题,Using 'diff' (or anything else) to get character-level diff between text files ,但是这个问题可以通过一个以基于 Web 的工具为例的库来满足,我更喜欢命令行上的东西。

最佳答案

我不确定这是否符合您的“命令行”标准,但我使用 gvim/vim每天为此目的。

  • 像这样打开你想要比较的文件:
    gvim -d file1 file2
  • 使窗口全屏,以便更容易查看
  • 在内部制作分割窗口 gvim与命令相同的大小:C-w = (即 Control+W 然后是 = )
  • 要更好地查看段落格式的行,请输入 :set wrap ,然后使用 C-w w 切换到另一个拆分窗口(或通过鼠标单击),然后也输入 :set wrap
  • 要在更改之间移动,请使用 [c]c .要合并更改,请使用 dp (“差异放置”)和 do (“差异获取/获取”)。

  • 有差异的线条会突出显示,并且线条内的差异也会用另一种颜色突出显示。我希望这可以满足您的需求。 gvim可以为您做更多事情,例如从一个文件合并到另一个文件。您可以使用命令 :help diff 了解更多信息(在 gvim 内)。

    你也可以试试 kdiff3 ,这可能比学习更容易 vim .

    关于unix - 如何从命令行执行可移植、可读和可管道化的逐字符差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19209765/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com