如何将ANSI转义码(颜色,文本格式)放入'git log'输出的提交消息中

x6yk4ghg  于 2023-02-28  发布在  Git
关注(0)|答案(1)|浏览(98)

在您的Bash终端中运行以下命令:

f="\e[;1;4;5;94m"
F="\e[m"
echo -e "${f}This string is bold, underlined, blinking, bright blue.${F} This is not."

您将看到字符串格式为粗体、下划线、 Flink 和亮蓝色(根据我放入其中的ANSI转义码)。
我想在我的git log邮件中设置这样的文本格式。我该怎么做?
我目前的尝试,比如下面这样,只是放入原始字符,而不是进行格式化:

# doesn't work
git commit -m "${f}This string is bold, underlined, blinking, bright blue.${F} This is not."

我也尝试过将上面第一个echo的输出粘贴到我的git编辑器(目前是Sublime Text,as I show how to set here)中,无论有没有转义码,都没有成功。
请注意,这个问题的“存在”本身似乎表明我试图做的事情至少是“可能的”:ANSI color in git is not displayed correctly--除非我误解了,他们只是在谈论git grep显示git控制的文件。更新:我想我误会了:我想他们是在谈论git log中的ANSI转义码,比如提交散列本身的着色和粗体。
我为什么要这么做?
我认为在我的git log输出中,让一些自定义提交信息 Flink ,并以蓝色粗体或其他方式显示,以突出某些真正特殊的提交,这将是一个很好的方法。我刚刚编写了一个Bash库(ansi_text_format_lib.sh),以允许轻松的文本格式设置,并认为我将在命令行中使用它来实现这一点。

ajsxfq5m

ajsxfq5m1#

git commit -m "${f}This string is bold, underlined, blinking, bright blue.${F} This is not."

这里发生的事情是,你把ansi颜色控制序列的转义序列放到提交消息中。
你需要的是把ANSI颜色控制序列本身放到提交消息中,我知道在变量替换过程中最简单的方法是使用prompt-escape扩展:

git commit -m "${f@P}This string is bold, underlined, blinking, bright blue.${F@P} This is not."

输入man bash,查找参数转换,并提示您查看还可以使用它做什么。

相关问题