最近我切换到了SLES 11。我在使用git命令时发现了一个问题。所有的ANSI颜色都不能正常显示,而是显示类似于这样的ANSI代码:
*ESC[33m*commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC[m
注意:在 'ls' 命令中的ANSI颜色能够正常工作。
尝试设置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
LESS ,请注意,Git默认情况下以 FRSX 为开头,因此请谨慎更改它们(除非您不需要)。
如果您无论出于任何原因都希望将 LESS 与Git不同,则通过 core.pager 配置变量处理Git和分页器是理想的方法。引用手册:
“git将用于分页输出的命令。可以使用GIT_PAGER环境变量覆盖。请注意,如果运行分页器时未设置LESS环境变量,则git将LESS环境变量设置为FRSX。可以通过将LESS变量设置为其他值来更改这些设置。或者,可以通过设置core.pager选项对这些设置进行项目或全局基础上的覆盖。设置core.pager对以上LESS环境变量行为没有影响,因此,如果要以这种方式覆盖git的默认设置,则需要明确设置。例如,要以向后兼容的方式禁用S选项,请将core.pager设置为 less -+$LESS -FRX 。这将由git传递给shell,shell将将最终命令转换为 LESS = FRSX less-+FRSX-FRX 。”
这结合了您所需选项的一些知识,应该可以让您达到目标。(花哨的向后兼容方法的工作原理是先禁用当前在 LESS 中的所有选项,然后再添加您所需的选项)。
-R
选项:git config --global core.pager "less -R"
less -R
用引号括起来。虽然有些麻烦,但最终还是解决了。 - mtfurlan对我来说,这并没有起作用:
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
好的,我明白了。这个问题与变量LESS有关。
以下行解决了这个问题:
export LESS="-erX"
对我来说看起来像一个解决方法。git config --global core.pager "less -R"
无论谁最终来到这里,在我的情况下,问题是通过将core.pager设置为空字符串而不是取消设置来解决的:
git config --global core.pager ''
这个来自于 https://git-scm.com/book/zh/v2/Customizing-Git-Git-Configuration
LESS
解决方案没有解决问题。bash --login -i
打开终端,所以在终端启动后输入以下命令对我有效:bash
LESS
来帮助Git - 它知道它需要什么。) - Cascabel