git diff
有选项--word-diff-regex=<...>
匹配单词。某些语言有特殊的默认值(如man 5 gitattributes
中所述)。但是这些是什么?在文档中没有描述,我查找了git
的来源,还没有找到它们。什么是`git diff --word-diff'默认正则表达式?
任何想法?
编辑:我在git 1.9.1
,但我会接受任何版本的答案。
git diff
有选项--word-diff-regex=<...>
匹配单词。某些语言有特殊的默认值(如man 5 gitattributes
中所述)。但是这些是什么?在文档中没有描述,我查找了git
的来源,还没有找到它们。什么是`git diff --word-diff'默认正则表达式?
任何想法?
编辑:我在git 1.9.1
,但我会接受任何版本的答案。
来源包含userdiff.c
文件中的默认单词正则表达式。 PATTERNS
和IPATTERN
宏将基本正则表达式作为它们的第三个参数,并添加"|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+"
以确保不是较大单词的所有非空白字符都被视为一个单词,并假定为UTF-8,而没有分割多字节字符。例如,在:
PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$", "\\\\[[email protected]]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),
字正则表达式是"\\\\[[email protected]]+|\\\\.|[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]+
覆盖,但它也不会造成任何伤害。
在docs for .gitattributes
中给出了一个预定义diff驱动程序的列表(它们都有预定义的字diff regexes)。据进一步指出,
你仍然需要与属性的机制来实现这一目标,通过.gitattributes
所以要激活HVD的回答显示了所有*.tex
文件tex
模式,你可以发出在您的项目根以下命令(省略了引号Windows下):
echo '*.tex diff=tex' >> .gitattributes
对Git版本2.8.3,$ git的差异--word的Diff-正则表达式=“\\\\ [A-ZA-Z @ 。] + | \\\\ | [A-ZA-Z0-9 \ x80- \ XFF] + | [^ [:空间:]] | [\ xc0- \ XFF] [\ x80- \ XBF] + “和git diff --word-diff会产生相似但不同的结果 –