![颜色编码的 git diff -> less 无法正确显示颜色](https://linux22.com/image/192368/%E9%A2%9C%E8%89%B2%E7%BC%96%E7%A0%81%E7%9A%84%20git%20diff%20-%3E%20less%20%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E6%98%BE%E7%A4%BA%E9%A2%9C%E8%89%B2.png)
我正在 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
ETC。
我知道终端支持颜色(ls 结果是彩色的);我有TERM=xterm
并且COLORTERM=1
在我的环境中。
如何才能正确显示彩色差异?
答案1
作为特登 说, less
' 默认行为是按样式显示特殊字符的等效项cat -v
。less -R
将改变它,以便转义序列被传递到处理显示的任何内容。
less
的默认值可以通过指定LESS
环境变量指定,例如
export LESS=-R
git
对于寻呼机应该做什么有自己的想法。如果没有设置环境变量,调用时LESS
会设置为,符合预期;如果FRX
less
git
LESS
是LESS
设置后,它将保持不变,如果不包含则可能导致输出不可读-R
。
有两种配置方法less
以供使用git
:或者使用全局配置LESS
,或者更改这core.pager
设定,例如
git config --global core.pager "less -R"
答案2
这是 的默认行为less
。less -R
如果您想查看彩色输出(来自man less
),请使用:
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences and OSC 8 hy‐
perlink sequences are output in "raw" form. Unlike -r, the
screen appearance is maintained correctly, provided that there
are no escape sequences in the file other than these types of
escape sequences. Color escape sequences are only supported
when the color is changed within one line, not across lines.
In other words, the beginning of each line is assumed to be
normal (non-colored), regardless of any escape sequences in
previous lines. For the purpose of keeping track of screen ap‐
pearance, these escape sequences are assumed to not move the
cursor.
您可能已经习惯了less
设置为别名的系统,less -R
这就是为什么这让您措手不及。