当前设置
我的.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"
在这种情况下,您只需将所有内容括在双引号中,并转义"
和反斜杠。