微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式使 git diff 将标点符号处的单词拆分为 .gitconfig 文件

如何解决使用正则表达式使 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 输出,如下所示:

句子的最后一个字。\footnote{新脚注。}

而不是当前输出

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

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

尝试过的解决方

我发现 this other question一个正则表达式开头,它完全符合我在命令行中的要求,但我不知道如何将它放入我的 .gitconfig 文件中而不产生错误消息fatal: bad config line 12 in file /Users/alex/.gitconfig。这是我放在 .gitconfig 文件中的内容

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

问题似乎出在分号上。

处理 .gitconfig 中类似问题的 different question 建议在整个别名周围放置双引号。但是当我在我的情况下这样做时,我收到相同的错误消息。我认为这是因为正则表达式也包含双引号。

问题

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

解决方法

我也很困惑,直到找到 this page of documentation。您感兴趣的部分是:

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

在双引号内,必须对双引号 " 和反斜杠 \ 字符进行转义:对 \" 使用 ",对 \\ 使用 \ .

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。