Заставьте vimdiff игнорировать классы эквивалентности Юникода - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь сравнить две директории, синхронизированные синхронизацией. Я делаю это, используя следующее:

vimdiff <(cd "~/Pictures/shared" && find . | sort) <(ssh argon "cd ~/pictures/shared && find . " | sort) 

Одна машина - это недавняя коробка Arch linux, а локальная машина - MacBook Pro. Просматривая различия, у меня возникают проблемы с поиском реальных отличий, потому что большинство различий - это умлауты, которые как-то неправильно интерпретируются:

vimdiff

Hexdump показывает различия символов. Здесь это немецкое ö (U + 00F6), в то время как там оно с комбинированным диарезом ◌̈ (U + 0308). Способен ли vimdiff признать эти эквивалентности идентичными?

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Я нашел способ перевести кодировку, прежде чем сравнивать их, пропустив вывод через iconv -f utf-8 -t utf-8-mac:

vimdiff <(cd ~/Pictures/shared && find . | sort) <(ssh argon "cd ~/pictures/shared && find . " | iconv -f utf-8 -t utf-8-mac | sort)

Также см. этот вопрос на iconv .

0 голосов
/ 09 марта 2020

Вы можете редактировать каждый из буферов, чтобы заменить проблемный символ c на один и тот же символ в обоих (например, здесь я бы заменил их на o). Vimdiff должен автоматически обновляться после изменения одного из буферов.

Для замены вы можете использовать :%s/<ctrl+v>u00f6/o/g (и эквивалент для другого), u00f6 должен автоматически заменяться знаком Unicode в командной строке после его ввода. .

...