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會產生相似但不同的結果 –