git diff有与单词匹配的选项。有些语言有特殊的默认值(如--word-diff-regex=<...>中所述)。但这些是什么?在文档中没有描述,我查找了man 5 gitattributes的来源,也没有找到它们。
有什么想法吗?
编辑:我在git,但我接受任何版本的答案。

最佳答案

源文件包含userdiff.c文件中的默认单词regex。PATTERNSIPATTERN宏将基词regex作为其第三个参数,并添加"|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"以确保不属于较大单词的所有非空白字符都被自己视为单词,并假定为utf-8,而不拆分多字节字符。例如,在:

PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
         "\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),

regex这个词是"\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"
在这种情况下,|[\xc0-\xff][\x80-\xbf]+碰巧没有任何好处,因为[\xc0-\xff][\x80-\xbf]+所涵盖的所有内容都已经包含在[a-zA-Z0-9\x80-\xff]+中,但它也不会造成任何伤害。

08-27 13:03