颜色编码的 git diff -> less 不能正确显示颜色

ein*_*lum 4 less colors sles colordiff

我正在 SLES11 机器上远程工作(我很遗憾)。在这台机器上,我正在使用 git,特别是git diff,它将结果传递给less一些着色。现在,出于某种原因,我看到的不是颜色,而是如下所示的线条:

ESC[1mdiff --git a/path/to/file.h b/path/to/file.hESC[m
ESC[1mindex 1ab153f..0491db9 100644ESC[m
Run Code Online (Sandbox Code Playgroud)

等等。

我知道终端支持颜色(ls 结果是彩色的);我有TERM=xterm并且COLORTERM=1在我的环境中。

如何让彩色差异显示正确?

Ste*_*itt 7

正如terdon 所说less' 默认行为是以cat -v样式显示特殊字符的等价物。less -R将改变这一点,以便将转义序列传递给处理显示的任何内容。

less的默认值可以用LESS环境变量指定,例如

export LESS=-R
Run Code Online (Sandbox Code Playgroud)

git对它的寻呼机应该做什么有自己的想法。如果没有LESS设置环境变量,FRX调用时会设置为less,符合git预期;如果LESS 设置,它会离开它不变,这可能会导致无法读取输出,如果LESS不包括-R

有两种配置两种方式less与使用git:要么将其配置在全球范围使用的LESS变量,或更改core.pager设置例如,

git config --global core.pager "less -R"
Run Code Online (Sandbox Code Playgroud)