为了从所有 git 命令获得彩色输出,我设置了以下内容:
git config --global color.ui true
然而,这会产生这样的输出git diff
,git log
而像显示这样的命令则git status
很好
为什么它仅无法识别某些命令中的转义颜色代码以及如何修复它?
我xterm-256color
在 OS X 10.8.2 上使用 iTerm 2(终端类型),并使用 zsh 作为 shell
zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)
git --version
git version 1.7.9.6 (Apple Git-31.1)
答案1
您会看到转义序列告诉终端更改显示的颜色,转义字符显示为ESC
,而所需的行为是转义序列具有其预期效果。
诸如git diff
和 之类的命令git log
将其输出传输到寻呼机,less
默认情况下。 Git 尝试告知less
允许控制字符发挥其控制效果,但这对您不起作用。
如果less
是您的寻呼机,但您将环境变量LESS
设置为不包含-r
或 的值-R
,则 git 无法告诉less
显示颜色。它通常会通过LESS=-FRSX
,但如果LESS
环境中已设置则不会。解决方法是显式传递-R
选项来告诉less
git 调用时显示颜色:
git config --global core.pager 'less -R'
如果less
不是您的寻呼机,请切换到less
或弄清楚如何使您的寻呼机显示颜色。
如果您不希望 git 在调用寻呼机时显示颜色,请设置color.ui
为auto
而不是true
。
答案2
如果您有,您还可以看到此输出忙碌盒。阿尔卑斯Linux是使用它的流行发行版的一个很好的例子。看https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F
了解您当前是否使用 Busybox 的一个简单方法是运行:
realpath `which less`
或者如果你使用鱼壳
realpath (which less)
如果输出是/bin/busybox
,那么你可以通过安装来解决你的问题更少的gnu。
阿尔卑斯山上:
sudo apk --update add less
该命令将根据您的发行版/包管理器而有所不同。
答案3
改进吉尔斯的回答,您可以通过在 git config 中使用它来保留旧$LESS
选项(例如在 中~/.gitconfig
):
[core]
pager = less -+$LESS -FRX