отображение различий внутри строки в выводе diff

В этом ответе StackOverflow есть изображение KDiff3 выделение внутристрочных различий. Кто-нибудь знает об инструменте, который может отображать то же самое (например, через цвет) в командной строке?

Другой способ подумать об этом - захотеть различать каждое различие в файле патча.


person Brian Harris    schedule 27.08.2009    source источник
comment
Попробуйте этот скрипт Perl из проекта git . Этот блог описывает это. См. мою суть, чтобы узнать, как я его настроил (раздел пейджера)   -  person Steven Lu    schedule 03.04.2013
comment
unix.stackexchange.com/questions/11128/diff-within- онлайн   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 22.05.2017
comment
Чиро: Ага, в том числе и мой ответ: используйте режим ediff в emacs ...   -  person Matthew Elvey-RNSTT IVERMECTIN    schedule 13.11.2020


Ответы (6)


Я не знаю, достаточно ли этой командной строки для ваших целей, но vimdiff может сделайте это (даже раскрасьте). См., Например, изображение в этом связанный вопрос.

person ire_and_curses    schedule 27.08.2009

Еще один интуитивно понятный способ увидеть все различия в размере слова (хотя и не бок о бок) - использовать wdiff вместе с colordiff (вам может потребоваться установить оба). Примером этого может быть:

wdiff -n {file-A} {file-A} | colordiff

При желании вы можете передать это в less -R для прокрутки вывода (-R используется для отображения цветов в less).

person Sicco    schedule 13.03.2012
comment
Это единственное решение без vim, которое сработало для меня. - person Manux; 26.08.2015

Я перепробовал все найденные инструменты: wdiff, dwdiff, kdiff3, vimdiff, чтобы показать разницу между двумя длинными и немного разными строками. Мне больше всего нравится diff-highlight (часть git contrib)

  • он поддерживает формат diff - большое преимущество перед инструментами, требующими двух файлов, таких как (dwdiff), например. если вам нужно визуализировать вывод модульных тестов
  • он выделяется черным + белым или цветом, если вы подключаете его к colordiff
  • выделяет по символам - полезно для сравнения длинных строк без пробелов (лучше, чем wdiff)

Установка

В Ubuntu он у вас, вероятно, уже есть как часть git contrib (установлен в пакете git deb). Скопируйте или свяжите его в папку ~ / bin из /usr/share/doc/git/contrib/diff-highlight/diff-highlight

Пример использования

cat tmp.diff | diff-highlight | colordiff

Результат:

введите описание изображения здесь

person geekQ    schedule 16.06.2016

У меня была аналогичная проблема, и я не хотел использовать vimdiff. Я обнаружил, что dwdiff (который доступен в Debian) имеет несколько преимуществ перед wdiff.

Самая полезная функция dwdiff заключается в том, что вы можете настроить разделители с помощью -d [CHARS], поэтому это полезно для сравнения всех видов вывода. Он также имеет цвет, встроенный в флаг -c.

person Paul Fenney    schedule 08.05.2014

Возможно, вы сможете использовать для этого colordiff.

На их странице руководства:

Любые параметры, переданные в colordiff, передаются в diff, за исключением специфичной для colordiff опции 'difftype', например

colordiff --difftype=debdiff file1 file2

Допустимые значения для 'difftype': diff, diffc, diffu, diffy, wdiff, debdiff; они соответствуют обычным различиям, контекстным различиям, унифицированным различиям, параллельным различиям, выводам wdiff и выводам debdiff соответственно. Используйте эти переопределения, когда colordiff не может автоматически определить тип различия.

Я не тестировал это, но параллельный вывод (созданный diff -y file1 file2) может дать вам эквивалент встроенных различий.

person Mark Rushakoff    schedule 27.08.2009
comment
Вы также можете передать вывод diff в colordiff, но я подтверждаю, что это не работает - person Sam Brightman; 20.10.2010

ccdiff - удобный специализированный инструмент для решения этой задачи. Вот как с этим может выглядеть пример:

Пример вывода ccdiff

По умолчанию он выделяет различия в цвете, но его также можно использовать на консоли без поддержки цвета.

Пакет включен в основной репозиторий Debian:

ccdiff - это цветной diff, который также окрашивает измененные строки.

Все инструменты командной строки, которые показывают разницу между двумя файлами, не могут показать визуально полезные незначительные изменения. ccdiff пытается придать внешний вид diff --color или colordiff, но расширяет отображение цветного вывода от цветных удаленных и добавленных строк до цветов для удаленных и добавленных символов в измененных строках.

person Roman Riabenko    schedule 14.11.2020