如何在 git diff 中根据标点符号拆分单词?

How do I split words on punctuation in git diff?

我用下面的命令运气不错:

git diff --color-words='[^][<>()\{},.;:?/|\=+*&^%$#@!~`"'\''[:space:]]+|[][<>(){},.;:?/|\=+*&^%$#@!~`"'\'']'

但它似乎没有正确否定第一个字符中的方括号 class。

我试过这个:

git diff --color-words='[^\]\[<>()\{},.;:?/|\=+*&^%#@!~`"'\''[:space:]]+|[\]\[<>(){},.;:?/|\=+*&^%#@!~`"'\'']'

为了使方括号成为文字,但失败并显示消息 fatal: Invalid regular expression

编辑:

我得到的输出是这样的:

foobarfo]ob[ar

但我追求的是:

fo]oob[ar

使用单词差异,您将始终在新单词旁边看到您删除的单词。

这就是为什么您在新更改之前有这个词。

看了这个问题,很详细的回答:

Filtering a diff with a regular expression

尽管我最终不需要它,但要像我的示例一样查看字符级别的差异,这可行:

git diff --color-words=.