使 vimdiff 忽略 unicode 等价 类
Make vimdiff ignore unicode equivalence classes
我尝试比较通过同步同步的两个目录。我使用以下方法执行此操作:
vimdiff <(cd "~/Pictures/shared" && find . | sort) <(ssh argon "cd ~/pictures/shared && find . " | sort)
一台机器是最近的archlinux box,本地机器是MacBook Pro。浏览差异时,我很难找到真正的差异,因为大多数差异都是变音符号,它们以某种方式被解释错了:
Hexdump 显示字符不同。这里是德语 ö (U+00F6),而那里是 o 结合分音符 ◌̈ (U+0308)。 vimdiff 是否能够将这些等价物识别为相同?
您可以编辑每个缓冲区,将有问题的字符替换为两个缓冲区中的相同字符(例如,在这里我将它们替换为 o)。 Vimdiff 应在修改其中一个缓冲区后自动更新。
对于替换,您可以使用 :%s/<ctrl+v>u00f6/o/g
(另一个是 equiv)u00f6 应该在键入后自动替换为命令行中的 unicode 符号。
我找到了一种在比较它们之前转换编码的方法,方法是通过管道输出 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)
我尝试比较通过同步同步的两个目录。我使用以下方法执行此操作:
vimdiff <(cd "~/Pictures/shared" && find . | sort) <(ssh argon "cd ~/pictures/shared && find . " | sort)
一台机器是最近的archlinux box,本地机器是MacBook Pro。浏览差异时,我很难找到真正的差异,因为大多数差异都是变音符号,它们以某种方式被解释错了:
Hexdump 显示字符不同。这里是德语 ö (U+00F6),而那里是 o 结合分音符 ◌̈ (U+0308)。 vimdiff 是否能够将这些等价物识别为相同?
您可以编辑每个缓冲区,将有问题的字符替换为两个缓冲区中的相同字符(例如,在这里我将它们替换为 o)。 Vimdiff 应在修改其中一个缓冲区后自动更新。
对于替换,您可以使用 :%s/<ctrl+v>u00f6/o/g
(另一个是 equiv)u00f6 应该在键入后自动替换为命令行中的 unicode 符号。
我找到了一种在比较它们之前转换编码的方法,方法是通过管道输出 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)