Сравнение текстов
Две версии одного и того же, и нужно понять, что поменялось. Вставьте обе.
Работает в вашем браузере. Всё, что вы сюда вставляете или бросаете, никуда не загружается.
Текстовый файл можно просто перетащить на любое поле.
Клавиша j ведёт к следующему изменению, k к предыдущему (когда курсор не в поле ввода).
Как пользоваться
- Вставьте старую версию в поле Было, новую в поле Стало. Или перетащите текстовый файл прямо на поле.
- Посмотрите на итоговую строку и переходите между изменениями кнопками Дальше и Назад или клавишами j и k.
- Переключите Подсветку на слова или символы, чтобы увидеть, что именно поменялось внутри строки. Если переформатированный код заглушает настоящие правки, включите Игнорировать пробелы.
- На длинных файлах включите Скрыть одинаковые строки. Кнопка Скопировать unified diff даст патч, который можно вставить в задачу или в код-ревью.
Что он делает
Тексты сравниваются построчно алгоритмом Майерса, тем же, что git diff использует по умолчанию. Потом внутри каждой пары изменённых строк сравниваются слова или символы. Удалённые строки помечены −, добавленные +, так что красный от зелёного отличать не обязательно.
Пробелы и регистр букв можно игнорировать. Переводы строк Windows (CRLF) считаются обычными LF, поэтому файл, сохранённый в Windows, не подсвечивается целиком. А вот отсутствие перевода строки в самом конце файла считается изменением, как и в git.
Кнопка копирования выдаёт стандартный unified diff: заголовки --- и +++, потом блоки @@ с тремя строками контекста. Его понимают и patch, и git apply. Файлы до 20 МБ открываются прямо с диска. Большие тексты сравниваются в фоновом воркере, так что страница не подвисает, пока вы печатаете.
Если git показывает не diff, а конфликт слияния, поставьте merge.conflictStyle в zdiff3. Между двумя сторонами появится общий предок, и станет видно, что на самом деле поменяла каждая сторона. Пример есть в заметке про zdiff3.
Вопросы
Как сравнить два файла и найти различия?
Перетащите один файл на поле Было, а второй на Стало: браузер прочитает их локально, ничего не загружается. В терминале то же самое делает diff -u old.txt new.txt, или git diff --no-index old.txt new.txt, если нужны цвета git.
Почему изменёнными помечены все строки?
Почти всегда дело в пробелах: табы против пробелов, пробелы в конце строк или форматтер, который переотступил весь файл. Включите Игнорировать пробелы. Если одинаковые на вид строки всё равно отличаются, переключите подсветку на символы: неразрывный пробел или «умная» кавычка подсветится одним символом.
Работает ли сравнение с текстом на иврите, арабском или русском?
Да. Каждая строка выбирает направление сама, поэтому иврит и арабский читаются справа налево, а код остаётся слева направо. Слова разбиваются по буквам Unicode, так что кириллица и иврит подсвечиваются целыми словами.
Можно ли сравнить два документа Word или PDF?
Напрямую нет. .docx — это zip-архив, а PDF — описание страницы, так что инструмент видит байты, а не предложения: он либо откажется от файла как от двоичного, либо покажет мусор. Скопируйте текст из каждого документа и вставьте в два поля или сначала сохраните оба как обычный .txt. Для правок внутри самого Word, с форматированием, есть Рецензирование → Сравнить.
Как сравнить два списка и найти, чего не хватает?
Сначала отсортируйте оба списка, по одному элементу на строку, и только потом вставляйте. Строки, которые есть только в первом списке, помечены −, только во втором — +. Без сортировки те же элементы в другом порядке превратятся в кашу из удалений и добавлений. Отсортируйте колонку в Excel или Google Таблицах или выполните sort list.txt в терминале, а если Apple и apple для вас одно и то же, отметьте Игнорировать регистр.