如何解决使用正则表达式使 git diff 将标点符号处的单词拆分为 .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 举报,一经查实,本站将立刻删除。