在Windows 7上的Git Bash中,Color在运行Cucumber或rspec时显示为代码

y0m*_*mbo 11 git bash rspec cucumber windows-7

在Windows 7上的Git Bash中,偶尔会发生一些事情,导致颜色编码在运行黄瓜场景或rspec规范时失败.

偶尔,它是随机固定的(随机地= =我不知道我做了什么导致它被修复).

所以当我跑:

$ bundle exec cucumber features
Run Code Online (Sandbox Code Playgroud)

要么

$ bundle exec rspec spec
Run Code Online (Sandbox Code Playgroud)

而不是看到这种颜色:

 ......

 3 scenarios (3 passed)
 6 steps (6 passed)
Run Code Online (Sandbox Code Playgroud)

我看到类似的东西:

 [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m

 3 scenarios ([32m3 passed[0m)
 6 steps ([32m6 passed[0m)
Run Code Online (Sandbox Code Playgroud)

我知道这些是颜色的代码表示,但我不知道它为什么停止显示颜色,也不知道如何解决它.我错过了什么?


git config --list的输出:

core.symlinks=false
core.autocrlf=true
color.diff=auto
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
user.name=John Uhri 
user.email= ***** 
color.branch=auto 
color.diff=auto 
color.interactive=auto 
color.status=auto 
core.repositoryformatversion=0 
core.filemode=false 
core.bare=false 
core.logallrefupdates=true
core.symlinks=false 
core.ignorecase=true 
core.hidedotfiles=dotGitOnly 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin 
branch.master.merge=refs/heads/master
Run Code Online (Sandbox Code Playgroud)

Spe*_*bun 11

在Windows上,git Bash使用内置终端进入cmd提示符.如果你安装cygwin,你可以使用mintty终端模拟器(安装在开始菜单上作为"Cygwin终端").

为什么这很重要?因为windows cmd提示术语不解释ANSI转义序列.它使用M $颜色控制方案代替.如果您使用的程序没有在Windows上切换到此方案,或者通过过滤器,那么您将看到原始转义字符.Cygwin的精简控制台完全支持这些代码.

如果颜色通常有效,这是移植黄瓜/ rspec的一个错误.有人在打印颜色或其他东西时错过了检查窗户.在此问题得到解决之前,解决方法是使用以下python脚本:

#!/usr/bin/env python
# Filter ANSI escapes from stdin to stdout
from __future__ import print_function
from colorama import init
import sys
init()

for line in sys.stdin.readlines():
    print(line)
Run Code Online (Sandbox Code Playgroud)

您需要为此安装colorama库.然后通过脚本管道输出:

$ bundle exec rspec spec | colorFilter.py
Run Code Online (Sandbox Code Playgroud)


cor*_*org 8

在我的Windows 7 bash终端(msysgit with console2)上尝试获得一些颜色之后,我偶然发现了一些无用的尝试,我偶然发现了Jason Karns的博客"Windows Shell中的ANSI颜色".

我所要做的就是将ansicon.exe解压缩到一个永久文件夹并通过该文件夹中的cmd运行:

ansicon.exe -i
Run Code Online (Sandbox Code Playgroud)

所有bash日志现在都有颜色而不是[32m或[0m标签,呜!


Dav*_*ffe 1

尝试安装 win32console gem。

gem install win32console
Run Code Online (Sandbox Code Playgroud)