git中的ANSI颜色显示不正确
最近,我切换到SLES 11.我发现git命令的问题。 所有ANSI颜色都不能被渲染。 相反,它显示了这样的ANSI代码:
* ESC [33m * commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC [m
注意:“ls”中的ansi颜色效果很好。
尝试设置你的LESS
环境variables来包含-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
正如其他人所指出的,问题是你的terminal是好的,但是当Git调用这个寻呼机时,它不能正确地解释ANSI颜色代码。
我会开始在你的环境中设置LESS
, 这听起来像你以前可能已经把它设置为模糊Git需要的东西。 如果解决了这个问题,那你就是。 如果你真的需要自定义LESS
,注意Git默认使用FRSX
,所以如果你不需要更改的话,请小心。
如果你为什么要在你的环境中想要LESS
而不是你想要的Git,处理Git和寻呼机的理想方式是通过core.pager
configurationvariables。 引用manpage:
git将用来分页输出的命令。 可以用GIT_PAGER环境variables覆盖。 请注意,如果git在运行寻呼机时未设置,则git会将LESS环境variables设置为FRSX。 可以通过将LESSvariables设置为其他值来更改这些设置。 或者,可以通过设置core.pager选项在项目或全局基础上覆盖这些设置。 设置core.pager对上面的LESS环境variables行为没有影响,所以如果你想以这种方式覆盖git的默认设置,你需要明确。 例如,要以向后兼容的方式禁用S选项,请将core.pager设置为
less -+$LESS -FRX
。 这将通过git传递给shell,这将最终的命令转换为LESS=FRSX less -+FRSX -FRX
。
结合一些你想要的选项的知识,应该把你带到你想要的地方。 (花式向后兼容的方法通过禁用当前所有的LESS
选项,然后添加你想要的。
在git中,你可以改变你的寻呼机使用-R
选项:
git config --global core.pager "less -R"
对我来说,这不起作用:
git config --global core.pager less -R
所以相反,我附加到我的〜/ .gitconfig文件
[core] pager = less -R
为了testing它,我做了
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
好,我知道了。 这个问题是关于variablesLESS的。
以下行解决这个问题:
export LESS="-erX"
我有同样的问题。 但为什么我需要在一台机器上configuration一个git,而不需要另一台? 我想解决问题的根源,因为
git config –global core.pager“less -R”
看起来像我的解决方法。
在Laravel Artisan和Symfony控制台的Git for Windows v2.7.1中,我遇到了与ANSI颜色转义序列类似的问题。 这里提到的LESS
解决scheme没有解决问题。
由于Git for Windows用bash --login -i
打开terminal,terminal启动后input的这一行对我来说是bash --login -i
:
bash