放置正则表达式以使 git diff 在标点符号处拆分单词到 .gitconfig 文件中



当前设置

我的.gitconfig当前包含以下别名:

[alias]
wdiff = diff --color-words --histogram

让我写git wdiff并逐字逐句地获得输出,而不是逐行diff输出。我用它来在LaTeX中写学术散文。

目标

此方法仅在空格处划分单词。我想在标点符号处除法,例如,last word of sentence.更改为last word of sentence.footnote{New footnote.}产生如下所示diff输出:

最后一句话。\脚注{新脚注。}

而不是电流输出:

最后一句话。句子。\脚注{新脚注。}

(其中斜体表示删除,粗体表示添加)。

尝试的解决方案

我发现了另一个问题,它以正则表达式开头,该正则表达式在命令行中完全可以执行我想要的操作,但是我还没有弄清楚如何在不生成错误消息的情况下将其放入我的.gitconfig文件中fatal: bad config line 12 in file /Users/alex/.gitconfig。这是我放在.gitconfig文件中的内容:

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

问题似乎是分号。

另一个处理.gitconfig类似问题的问题建议在整个别名周围加上双引号。但是当我在我的情况下这样做时,我会收到相同的错误消息。我认为这是因为正则表达式还包括双引号。

问题

如何将正则表达式放入我的.gitconfig文件中,以便可以正确解析?

在找到这一页文档之前,我也很困惑。您感兴趣的部分是:

定义值的行可以通过以结尾来继续到下一行;反斜杠和行尾被去掉。name =后面的前导空格、第一个注释字符#;之后的行的其余部分以及行的尾随空格将被丢弃,除非它们括在双引号中。值中的内部空格逐字保留。

在双引号内,双引号"和反斜杠字符必须转义:"用于"\用于

识别以下转义序列("\旁边):n表示换行符(NL),t表示水平制表(HT,TAB)和b表示退格键(BS)。其他字符转义序列(包括八进制转义序列)无效。

所以,这里是.git/config的正确别名:

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

在这种情况下,您只需将所有内容括在双引号中,并转义"和反斜杠。

相关内容

  • 没有找到相关文章

最新更新