разный

9

Существует ли в Linux стабильный инструмент (опция / плагин для существующего инструмента: vimdiff, diff и т. Д.), Чтобы сделать различие между двумя текстовыми файлами символьно?

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

Valentas
источник

Ответы:

2

Старый добрый cmpделает символьный diff. Он был частью UNIX около 40 лет. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

К сожалению, он останавливается на первом отличающемся символе, поэтому я не знаю, полезен ли вам этот ответ.

Доминик Р
источник
Спасибо. Я только что cmp -bl ...нашел ответ, и он сообщил о множественных различиях и их позициях. Моя версия cmp (GNU diffutils) 3.6.
Дзамо Нортон
2

Установить diffchar( Github ссылка для тех, кто использует плагин автозагрузчик). Начиная с v4.7, с включенным плагином, Vim автоматически показывает более точные различия:

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

  • Вы можете нажать F7(раскладка клавиатуры по умолчанию) для переключения между обычным и плагином. Переназначить с помощью:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    замена <key>на соответствующий код ключа.

  • Вы можете использовать больше цветов:

    let g:DiffColors=100
    

К сожалению, это не работает через строки, насколько я могу судить. Однако общие регионы остаются ООН -highlighted (и сложить, если они растут слишком долго), так что вы могли бы воспользоваться этим.


Скопировано из моего поста об обмене Vi и Vim Stack .

Мур
источник