按字符区分

按字符区分

Linux 中是否有稳定的工具(现有工具的选项/插件:vimdiff、diff 等)可以按字符方式在两个文本文件之间进行比较?

我希望看到两个文件之间最长的公共子序列突出显示。存在一个经典的多项式时间算法为此,但标准工具似乎只能逐行工作。

答案1

老好人cmp做了字符差异。它成为 UNIX 的一部分已经有大约 40 年了。 https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

不幸的是,它停在第一个不同的字符处,所以我不知道这个答案对您是否有用。

答案2

安装diffcharGithub链接对于那些使用插件自动加载器的人)。从 v4.7 开始,启用插件后,Vim 会自动显示更精确的差异:

在此输入图像描述

  • 您可以按F7(默认键盘映射)在常用键和插件之间切换。重新分配:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    替换<key>为适当的密钥代码。

  • 您可以使用更多颜色:

    let g:DiffColors=100
    

不幸的是,据我所知,这不能跨线工作。然而,公共区域仍然存在联合国-突出显示(如果它们长得太长,则折叠起来),这样您就可以利用它。


复制自我的 Vi 和 Vim Stack Exchange 帖子

相关内容