如何摆脱ESC [在Mac OS X Mavericks上使用git diff时的角色?

时间:2013-12-06 02:03:39

标签: macos git

由于我安装了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.

7 个答案:

答案 0 :(得分:57)

您是否设置了LESS环境变量?您可以使用以下方式查看:

env | grep LESS

或:

echo $LESS

如果是这样,您需要确保R选项在那里。这允许ANSI转义序列无损地通过,并且它们将在终端中呈现为颜色。

仅供参考,我用这个:

export LESS=eFRX

答案 1 :(得分:41)

这有效:

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

答案 2 :(得分:5)

git中的全局寻呼机配置选项,只是将输出流发送到moreless命令。您可以通过将全局配置选项设置为:

来删除此输出中的转义字符
git config --global core.pager "more -R"

继续使用more作为寻呼机或

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

继续使用less作为寻呼机

答案 3 :(得分:1)

您可以使用-R选项重新粉刷屏幕以删除所有缓冲的输入。

export LESS="$LESS -R"

答案 4 :(得分:1)

尝试“少-R”(大“ R”)

这对我有用:

git config core.pager 'less -R'

“少-R”与“少-r”

“-R”(大R)似乎是“ -r”(小R)的安全版本。这就是为什么我更喜欢大型R版本。

引用man less

  

-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之间可能会出现标准字符以外的其他字符。

答案 5 :(得分:0)

另一种方法是通过执行类似

的操作来消除git对输出的“着色”
$ git config --global color.ui false

有关详细信息,请参阅git help config

参考:unix.stackexchange: How to colorize output of git?

答案 6 :(得分:0)

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

尝试在下面执行,但没有解决问题- git config --global color.ui auto true

该问题已使用 - 解决 导出 LESS=eFRX