颜色编码的 git diff -> less 无法正确显示颜色

颜色编码的 git diff -> less 无法正确显示颜色

我正在 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 -vless -R将改变它,以便转义序列被传递到处理显示的任何内容。

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

export LESS=-R

git对于寻呼机应该做什么有自己的想法。如果没有设置环境变量,调用时LESS会设置为,符合预期;如果FRXlessgitLESS LESS设置后,它将保持不变,如果不包含则可能导致输出不可读-R

有两种配置方法less以供使用git:或者使用全局配置LESS,或者更改core.pager设定,例如

git config --global core.pager "less -R"

答案2

这是 的默认行为lessless -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这就是为什么这让您措手不及。

相关内容