Как сделать вывод vc-diff более компактным
Я делаю Cx v = для проверки текущих различий файла под управлением RCS (то есть, у него есть связанный файл с ,v
суффикс). Однако вывод едва читаем, потому что я изменил каждую, скажем, 12-ю строку. Таким образом, я получаю эти гигантские куски различий, где я не могу легко определить, какая линия была изменена на другую.
Есть ли способ сделать этот diff-вывод более читаемым и все еще применимым (чтобы я мог быстро перейти к источнику)?
(Я мог бы
- Cx v l, чтобы увидеть старые версии, затем
- сделайте f на последнем, чтобы проверить это.
- Mx редактировать файлы
но это не очень удобно)
2 ответа
При беге vc-diff
для файла в RCS по умолчанию вывод diff является "diff контекста". Это означает, что старые и новые чанки отображаются один над другим с выделением различий. Более современные системы контроля версий производят "унифицированные различия", где старая и новая версии каждой группы измененных строк являются смежными.
Diff-режим Emacs может конвертировать diff из одного формата в другой. Введите Cc Cu, чтобы преобразовать контекстный diff в унифицированный diff, и Cc Cd, чтобы сделать обратное.
Например, этот контекст diff:
*** 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
будет преобразован в этот унифицированный diff:
--- 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, вы можете перейти к соответствующей строке исходного файла с помощью Cc Cc. Если он не находит правильный файл, используйте Mx diff-tell-file-name
,
Вы можете попробовать и установить
(setq diff-switches '("-u"))
так что ваши разногласия выходят в унифицированном формате, который немного более компактен. Если этого недостаточно, вы можете попробовать передать дополнительные флаги, чтобы уменьшить размер "контекста" (по умолчанию 3 строки до и 3 строки после).