git中的ANSI颜色未正确显示

Roc*_*cky 62 git bash

最近,我切换到SLES 11.我发现了git命令的问题.无法呈现所有ANSI颜色.相反,它显示如下的ANSI代码:

*ESC [33m*commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC [m

注意:'ls'中的ansi颜色效果非常好.

sar*_*old 67

尝试设置LESS环境变量以包含-R选项:

LESS=-R git grep ...
Run Code Online (Sandbox Code Playgroud)

如果一切正常,添加export LESS=-R到您~/.bashrc~/.profile或类似的shell启动文件.

   -R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences are
          output in "raw" form.  Unlike -r, the screen
          appearance is maintained correctly in most cases.
          ANSI "color" escape sequences are sequences of the
          form:

               ESC [ ... m

          where the "..." is zero or more color specification
          characters
Run Code Online (Sandbox Code Playgroud)

  • 您还应该能够使用core.pager配置参数进行清理.我不认为`-R`对Git来说是理想的 - 它真的更喜欢FRSX - 事实上,如果你还没有在你的环境中设置LESS,那么它就会设置它. (4认同)

Cas*_*bel 29

正如其他人所指出的那样,问题是你的终端没问题,但是当Git调用寻呼机时,它并没有正确地解释ANSI颜色代码.

我会在你的环境中解开思想 LESS ; 听起来你可能以前把它设置为模糊Git需要的东西.如果这解决了,那就是你.如果你真的必须自定义LESS,请注意Git FRSX默认开始,所以如果你不需要,请小心改变它们.

如果你这样做无论出于何种原因要LESS在你的环境,你要哪个GIT中不同,理想的方式来处理Git和寻呼机是通过core.pager配置变量.引用联机帮助页:

git将用于分页输出的命令.可以使用GIT_PAGER环境变量覆盖.请注意,如果在运行寻呼机时未设置LESS,则git会将LESS环境变量设置为FRSX.可以通过将LESS变量设置为其他值来更改这些设置.或者,可以通过设置core.pager选项在项目或全局基础上覆盖这些设置.设置core.pager对上面的LESS环境变量行为没有影响,所以如果你想以这种方式覆盖git的默认设置,你需要明确.例如,要以向后兼容的方式禁用S选项,请将core.pager设置为less -+$LESS -FRX.这将通过git传递给shell,它会将最终命令转换为LESS=FRSX less -+FRSX -FRX.

结合您想要的一些选项知识,可以让您达到您想要的目标.(花哨的向后兼容方法通过禁用当前所有选项LESS,然后添加回你想要的选项来工作.)


dha*_*ald 19

在git中,您可以更改寻呼机以使用-R选项:

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


小智 6

对我来说,这不起作用:

git config --global core.pager less -R

所以我把以下内容添加到我的〜/ .gitconfig文件中

 [core]
     pager = less -R
Run Code Online (Sandbox Code Playgroud)

为了测试它,我做到了

git log --graph --pretty=format:"%C(yellow)%h%Creset%C(blue)%d%Creset %C(white bold)%s%Creset %C(white dim)(by %an %ar)%Creset" --all


Roc*_*cky 5

好,我知道了。这个问题与变量 LESS 有关。

以下行解决了这个问题:

export LESS="-erX"
Run Code Online (Sandbox Code Playgroud)

  • 您应该使用“-eRX”而不是“-erX”(根据上面 sarnold 的回答)。如果您使用“-r”,则 less 将直接传递其他控制字符(您可能不希望这样做),并且 less 不能正确确定输出的行数,因此某些内容会滚动到屏幕之外(您绝对不希望这样做)想)。“-e”和“-X”的使用与解释颜色转义序列无关。“-e”导致 less 在您第二次到达文件末尾时自动退出,“-X”“禁用将 termcap 初始化和反初始化字符串发送到终端。” (2认同)