Vim сравнить два файла
У Вима есть очень удобный инструмент: vimdiff. Можно вызвать обычный Вим с ключом -d:
vim -d file1 file 2
Это совмещение diff с окнами, подсветкой и фолдингом вима. Есть и отдельная утилита:
vimdiff file1 file2
--- и можно сравнивать файлы в двух окнах вима, различия подсвечены разными цветами (синим текст, которого нет в другом файле, красным --- различия), крупные совпадающие блоки свернуты, чтоб не мешать. Полезные команды:
:diffupdate для обновления;
:diffget для приведения строки (на самом деле, серии различающихся строк подряд) в соответствие с другим окном; если указать диапазон, команда постарается поменять только указанные строки. Например,
.,+1diffget --- поменять лишь текущую строку и следующую. Бывает полезно!
:diffput --- то же самое, но меняется другой файл.
:set diffopt=icase,iwhite для игнора регистра символов и пробелов (хотя иногда они все равно считаются --- когда это важно).
Как игнорировать только регистр или только пробелы --- надеюсь, ясно. Не игнорировать ничего --- set diffopt=
Есть и еще опции: horizontal, чтобы окна были одно над другим, vertical, чтобы как на рисунке (по умолчанию), и еще кое-что.
Вот так это выглядит. Вверх четыре строки в фолде --- идентичны. Красным выделены различия в сходных строках, серым --- совпадающая часть этих строк. Синим --- текст, который есть в одном файле, но отсутствует в другом. Как обычно --- совпадающий текст между различающимися строками. Вот так это выглядит. Вверх четыре строки в фолде --- идентичны. Красным выделены различия в сходных строках, серым --- совпадающая часть этих строк. Синим --- текст, который есть в одном файле, но отсутствует в другом. Как обычно --- совпадающий текст между различающимися строками.При этом все команды для работы с окнами, фолдами и подсветкой работают как обычно. Можно открыть другие вкладки --- они никак не связаны. Можно сравнивать и сразу три файла и даже больше, но это не очень удобно.
Команды ]c и [c прыгают вниз/вверх на ближайшее различие.
Если много работаете с версиями программ, статей, глав диссертации или текстовыми данными --- освойте vimdiff! Не пожалеете!
Читайте также: