比较文档各部分的 Emacs 技术?

问题描述 投票:0回答:2

我希望能够在 Emacs 中打开两个窗口,在每个窗口中选择一个文本区域,并比较两个选择之间的差异。

这对于大型维护项目来说非常方便,在该项目中,我正在处理具有多个分支、大量复制/粘贴以及偶尔移动的代码的版本树。

我找到了一个确实提供此功能的付费工具(Ultracompare),但它是特定于 Windows 的,我需要一个在 Solaris/Linux 上运行的解决方案。

emacs text compare regions
2个回答
36
投票

我认为 M-x ediff-regions-wordwise 可以满足你的需求。

运行

ediff-regions-wordwise
,Emacs 将提示每个缓冲区,然后提示您选择(或确认)缓冲区中的一个区域。

而且,额外的好处是,Emacs 也可以在 Windows 上运行!


10
投票

我倾向于在两个缓冲区中使用

narrow-to-region
(C-x n n),然后使用
M-x compare-windows
,因为它已经为我工作了至少 100 年。 :-)

编辑: 为任何初学者添加一些步骤...... 我同意,这很有效。 以前,我使用 ediff,但现在 Windows 版 emacs 没有内置 diff。我现在喜欢这个的最大原因是因为我可以轻松地专注于我想要的区域。

  1. C-空格然后箭头突出显示缓冲区一中的标题
  2. C-x C-x n n 缩小到这些
  3. S-选项卡可展开所有标题
  4. 重复移动到缓冲区二 (C-x o)
  5. C-空格然后箭头突出显示缓冲区二中的标题
  6. C-x C-x n n 缩小到这些
  7. S-选项卡可展开所有标题
  8. M-x Compare-windows 这将保留在第一个匹配块中
  9. M-x 再次比较窗口(或者,最好输入 C-x z 重复上一个命令)。这将转到第一个匹配块的末尾
  10. 依此类推(输入 z 或 M-x Compare-windows )直到结束 文件。
  11. 如果要忽略空格,请将变量compare-ignore-whitespace设置为非nil。为此,请键入 M-x set-variable RET Compare-ignore-whitespace RET non-nil RET (RET 表示按键盘的 Enter 键)。
© www.soinside.com 2019 - 2024. All rights reserved.