Vim сравнить два файла

Обновлено: 30.06.2024

У Вима есть очень удобный инструмент: 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! Не пожалеете!

Читайте также: