在 Mac OS X Mavericks 上使用 git diff 时如何去除 ESC [字符?

由于我安装了 OS X Mavericks,命令 git diff的结果是呈现如下 ESC[xxx字符:

ESC[1mdiff --git a/console/org.linkedin.glu.console-webapp/decorate-grails-methods-plugin/plugin.xml b/console/org.linkedin.glu.console-webapp/decorate-grails-methods-plugin/plugin.xmlESC[m
ESC[1mindex 3b65cf1..0ca5d7e 100644ESC[m
ESC[1m--- a/console/org.linkedin.glu.console-webapp/decorate-grails-methods-plugin/plugin.xmlESC[m
ESC[1m+++ b/console/org.linkedin.glu.console-webapp/decorate-grails-methods-plugin/plugin.xmlESC[m
ESC[36m@@ -15,14 +15,14 @@ESC[m ESC[mThe purpose of this plugin is to decorate various grails methods.ESC[m

这用于正确渲染之前,安装 Mavericks。我不知道什么是不同的,所以任何帮助在故障排除将非常感谢。

请注意,所使用的寻呼机是 less,因为当我按下 h时,我会得到以下结果:

             SUMMARY OF LESS COMMANDS


Commands marked with * may be preceded by a number, N.
Notes in parentheses indicate the behavior if N is given.
20190 次浏览

你有一套 LESS环境变量吗? 你可以用以下方法检查:

env | grep LESS

或:

echo $LESS

如果是这样,您需要确保 R选项在其中。这使得 ANSI 转义序列可以毫发无损地通过,并且它们将在终端中呈现为颜色。

作为参考,我用这个:

export LESS=eFRX

这种方法是有效的:

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

Git 中的全局寻呼机配置选项只是将输出流发送给 moreless命令。通过将全局配置选项设置为:

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

继续使用 more作为寻呼机或

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

继续使用 less作为寻呼机

另一种方法是通过执行以下操作来消除 git 对输出的“着色”

$ git config --global color.ui false

详情请参阅 git help config

参考资料: Stackexchange: 如何对 git 的输出进行彩色化?

更改使用选项 -R重新绘制屏幕以删除所有缓冲的输入。

export LESS="$LESS -R"

试试“ less-R”(大“ R”)

这对我很有效:

git config core.pager 'less -R'

例如:

没有“-R”,你只能得到原始的 ESC 控制代码: 1.Raw-Control-Codes

使用“-R”可以得到实际的颜色: 2.color-codes-rendered

“ less-R”vs“ less-r”

-R(大 R)似乎是 -r(小 R)的更安全的版本。所以我更喜欢大 R 版本。

引自 少一个人:

-r--raw-control-chars
导致显示“原始”控件字符。默认情况下使用插入符号显示控制字符; 例如,控制 -A (八进制001)显示为“ ^A”。警告: 当使用 -r选项时,less 无法跟踪屏幕的实际外观(因为这取决于屏幕如何响应每种类型的控制字符)。因此,各种各样的显示问题可能会导致,如在错误的地方分割长线。

-R--RAW-CONTROL-CHARS
-r类似,但只有 ANSI 的“颜色”转义序列以“原始”形式输出。与 -r不同,在大多数情况下屏幕外观得到了正确的维护。ANSI 的“彩色”转义序列是形式的序列:

ESC [ ... m

其中“ ...”是零个或多个颜色规范字符为了跟踪屏幕外观,假定 ANSI 颜色转义序列不移动光标。你可以通过设置字符环境变量 LESSANSIENDCHARS 到可以结束颜色转义序列的字符列表中来减少除“ m”以外的字符可以结束 ANSI 颜色转义序列的想法。而且你可以通过把环境变量 LESSANSIMIDCHARS设置为可以出现的字符列表来减少在 ESC 和 m 之间出现标准字符以外的字符的可能性。

我也遇到过类似的问题,我的“减少产出”是: LESS =-iMPM —— ? f% f —— : —— . lb 行% lt -% lb. ? L 的% L? pB (% pB%)。 LESSOPEN = | |/usr/bin/lesspipe.sh% s

尝试执行下面的命令,但是没有解决这个问题- Git config —— global color. ui auto true

这个问题是用-解决的 出口减少 = eFRX