git中的ANSI颜色显示不正确

iaqfqrcu  于 2023-05-15  发布在  Git
关注(0)|答案(8)|浏览(108)

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

***ESC[33m***提交0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC[m

注意:'ls'中的ansi颜色效果很好。

wpx232ag

wpx232ag1#

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

LESS=-R git grep ...

如果可以,将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
igsr9ssn

igsr9ssn2#

正如其他人所指出的,问题是终端很好,但是当Git调用分页器时,它没有正确地解释ANSI颜色代码。
我会先在您的环境中 * unset * LESS;这听起来像是你之前设置了一些模糊Git需要的东西。如果这样就能解决问题,那就这样吧。如果你真的必须自定义LESS,请注意Git以FRSX作为默认值,所以如果不需要,请小心更改它们。
如果您出于某种原因希望LESS在您的环境中与您希望的Git环境不同,那么处理Git和分页器的理想方法是通过core.pager配置变量。引用manpage:
git将用于分页输出的命令。可以用GIT_PAGER环境变量覆盖。请注意,如果在运行分页器时LESS环境变量未设置,git会将其设置为FRSX。可以通过将LESS变量设置为其他值来更改这些设置。或者,通过设置core.pager选项,可以在项目或全局基础上覆盖这些设置。设置core.pager对LESS环境变量的行为没有影响,所以如果你想用这种方式覆盖git的默认设置,你需要显式设置。例如,要以向后兼容的方式禁用S选项,请将core.pager设置为less -+$LESS -FRX。这将由git传递给shell,shell将最终命令转换为LESS=FRSX less -+FRSX -FRX
这一点,再加上一些你想要的选择的知识,应该能让你达到你想要的目的。(花哨的向后兼容方法的工作原理是禁用LESS中当前的所有选项,然后添加回您想要的选项。

ars1skjm

ars1skjm3#

在git中,你可以使用-R选项来改变你的分页器:

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

ndasle7k4#

对我来说,这并不起作用:
git config --global core.pager less -R
所以我在~/.gitconfig文件中添加了以下内容

[core]
     pager = less -R

为了测试它我做了
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

mftmpeh8

mftmpeh85#

好的我知道了这个问题与变量LESS有关。
下面这一行解决了这个问题:

export LESS="-erX"
nnt7mjpx

nnt7mjpx6#

我也有同样的问题。但是为什么我需要在一台机器上配置一个git,而不需要在另一台机器上?我想解决问题的根源,因为
git config --global core.pager“less -R”
对我来说是个解决办法

utugiqy6

utugiqy67#

我在Laravel Artisan和Symfony控制台的Git for Windows v2.7.1中遇到了类似的ANSI颜色转义序列问题。这里提到的LESS解决方案没有解决这个问题。
由于Git for Windows使用bash --login -i打开终端,因此在终端启动后输入的这行对我来说确实有效:

bash
vjrehmav

vjrehmav8#

无论谁在这里结束,在我的情况下,它是通过将core.pager设置为空字符串来解决的,而不是取消设置:

git config --global core.pager ''

这是来自https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

相关问题