关于差异

关于差异

所以我们都diff默认安装了该命令。我当然不知道如何使用它出色地。但我希望有一些合理的默认用法。然而,当我打字时,diff file1 file2我得到......一个文本......我必须在脑海中解析它......这是两个文本的奇怪组合,而这两个文本本身又非常复杂,这一事实无济于事。

所以我寻找一个图形解决方案,例如meld。开箱即用的效果要好得多。

但我更愿意一直呆在命令行上。是否有一个相当标准的命令:

  • 默认使用颜色,可以采用语法高亮
  • 呈现并排差异并默认进行 3 路合并
  • 在命令行上工作,例如通过libncurses
  • 既不依赖于 IDE vimemacs也不依赖于 IDE
  • 可以就地修改编辑过的文件吗?

如果没有,为什么不呢?我查了一下,colordiff但并没有完全解决问题。

答案1

听上去像三角洲将满足其中许多要求:

https://github.com/dandavison/delta

总结特点:

  • 语言语法高亮...
  • 字级差异突出显示...
  • 带换行的并排视图
  • 改进了合并冲突显示
  • 代码可以直接从差异中复制(默认情况下删除 - / + 标记)。
  • GitHub/GitLab/Bitbucket 页面(--超链接)。文件路径还可以格式化为超链接,以便在操作系统中打开。

...

上面链接的示例屏幕截图:

在此输入图像描述

答案2

我担心这个答案不会让您满意,但我认为您提出了相互矛盾的限制。

关于差异

但首先我必须捍卫经典的 diff 工具:它的主要目的是生成应该由机器在应用程序上处理的软件补丁。此外,这些补丁被设计得尽可能紧凑,并且最好仅使用 ASCII 字符,以便可以通过电子邮件、Usenet 等快速可靠地共享它们。

这些补丁可以被人类读取(并被某些人理解)也是一个重要的属性,但不是首要任务。

你的问题

我完全理解并分享您对简单和基本命令行工具的渴望,但是并排差异(可能带有颜色突出显示)既不简单也不在我们对真正的命令行工具的期望范围之内,仅仅是因为它不再是面向行的。

其次是基于 Vi 或 Emacs 的工具,这些工具尽可能简单明了,易于人类接收,同时具有高度灵活性。它们还提供强大的合并功能。

vimdiff评论中已经提到了这些。

对于 Emacs,文件比较通常从编辑器内开始。最常用的工具是 Ediff,它提供了无数对应于各种需求的入口点:比较两个文件、树文件、将其中一个文件视为共同祖先等等。可能的合并也是如此。

尽管不寻常,我还是从命令行设置了对 Ediff 的访问:如果你使用以下命令启动 Emacs:

emacs FILE1 FILE2 -nw --eval "(apply 'ediff-buffers (last (nreverse (buffer-list)) 2))"

然后您直接跳入交互式 Ediff 会话,在终端内比较FILE1和。FILE2如果省略该-nw选项(并且满足所有要求),您将在单独的图形框架中获得相同的会话。也可以看看这个相关问题作者:阿舒托什·贾恩。

好吧,我不会说 Emacs 是一个简单的工具。但如果你认真研究它几年,你就会喜欢它。 (个人想法。)

所以,不幸的是,没有:我不知道有什么工具可以满足您的所有限制。

相关内容