Есть ли способ настроить положение строки vimdiff для разнообразия?

Я исправил некоторые проблемы с отступами в своем проекте и просматриваю вывод vimdiff до и после. Я заметил, что vimdiff, кажется, очень запутался в том, каковы фактические изменения, что в этом случае делает практически бесполезный вывод:

Вимдифф запутался

Например, кажется, что самая первая строка — это только что добавленная строка:

<div class="text-xs-center p-4">

На самом деле, все, что изменилось, это отступ. Vimdiff не распознает изменения должным образом.

В другом похожем файле diff работает намного лучше:

Растерянный вимдифф

Думаю разница в том, что во втором файле я не убрал первый разрыв строки.

Есть ли способ вручную исправить такие вещи, чтобы diff отображался правильно? Я не хочу менять ни один файл, изменения правильные. Но я хотел бы сказать vimdiff, что он сравнивает неправильные строки друг с другом.

Это возможно?


person Alexander Rechsteiner    schedule 24.11.2016    source источник
comment
Виновником здесь, скорее всего, является лишняя пустая строка на 5. Различия вычисляются построчно, поэтому все ваши строки от 5 до EOF различны.   -  person romainl    schedule 24.11.2016


Ответы (1)


Базовый инструмент diff сравнивает отдельные строки, независимо от того, изменились ли «только» отступы или что-то более фундаментальное. Как и в вашем первом случае, есть одна дополнительная строка без отступа, поэтому diff распознает ее как неизменную, и это портит весь diff.

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

:set diffopt+=iwhite

Тогда diff вообще не должен показывать никаких изменений (или, в вашем первом примере, только добавленную строку 5).

Возможно, есть и другие утилиты сравнения, которые более разумно обрабатывают эти случаи. Если вы найдете такой инструмент, вы можете настроить Vim для его использования через 'diffexpr'.

person Ingo Karkat    schedule 24.11.2016