3

我正在C-x v =检查 RCS 控制下的文件的当前差异(即,它有一个带,v后缀的关联文件)。但是,输出几乎不可读,因为我更改了每一行,比如第 12 行。所以我得到了这些巨大的差异块,我无法轻易推断出哪一行被更改为其他行。

有没有办法让这个差异输出更具可读性并且仍然可用(以便我可以快速跳转到源代码)?

(我可以

  1. C-x v l要查看旧版本,然后
  2. f最后一个检查出来。
  3. M-x ediff文件

但这不是很方便)

4

2 回答 2

4

您可能想尝试设置

(setq diff-switches '("-u"))

这样您的差异就会以统一的格式出现,这会更紧凑。如果这还不够,您可以尝试传递其他标志以减小“上下文”的大小(默认情况下,前 3 行,后 3 行)。

于 2013-11-19T14:27:16.957 回答
2

在 RCS 中运行vc-diff文件时,差异输出默认为“上下文差异”。这意味着旧的和新的块在另一个之上显示,并突出显示差异。更现代的版本控制系统会产生“统一差异”,其中每组更改行的新旧版本是相邻的。

Emacs 的 diff-mode 可以将差异从一种格式转换为另一种格式。键入C-c C-u以将上下文差异转换为统一差异,并C-c C-d执行相反的操作。

例如,这个上下文差异:

*** bar.txt 2013/11/19 14:00:03 1.1
--- bar.txt 2013/11/19 14:00:11 1.2
***************
*** 1,5 ****
  one
  two
! tree
  four
  five
--- 1,5 ----
  one
  two
! three
  four
  five

将转换为这个统一的差异:

--- bar.txt 2013/11/19 14:00:03 1.1
+++ bar.txt 2013/11/19 14:00:11 1.2
@@ -1,5 +1,5 @@
 one
 two
-tree
+three
 four
 five

无论 diff 当前是哪种格式,您都可以使用 . 跳转到源文件中的相应行C-c C-c。如果找不到正确的文件,请使用M-x diff-tell-file-name.

于 2013-11-19T14:05:10.270 回答