我有PhpStorm 2016.2,我在Shell路径中添加了Cygwin,如下所示:"C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe
它运作良好,但颜色不起作用。
例如,我有?[32m Name
而不是Name
为绿色。
我尝试过添加插件Grep控制台以获得ANSI Color的支持,但是没有用。
使用多种ANSI颜色?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path
的线条很难处理。
不要犹豫,询问有关此问题的更多信息。谢谢。
P.S。我在Windows 10上。
修改
当我在PHPStorm终端/usr/bin/which php
时,我得到/cygdrive/d/wamp2/bin/php/php5.6.16/php
。我的WAMP中有php5.6.16和php7.0.0,我目前正在使用php7.0.0。
编辑2 我为php7.0.0添加了$ PATH,所以现在我/cygdrive/d/wamp2/bin/php/php7.0.0/php
时/usr/bin/which php
。但主要问题仍然存在。
答案 0 :(得分:5)
添加第二个答案,为我原来的答案提供替代解决方案。
ANSICON支持
首先下载并安装ANSICON
$PATH
(D:\wamp\bin\php\php7.0.0
)ansicon -i
允许您使用ANSICON
向Windows命令提示符添加ansi颜色支持。接下来,您需要为PHPStorm终端包装ANSICON
"X:\path\to\ansicon.exe" -p "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe
注意:如原始答案中所述,使用
-l
或--login
会将/usr/bin
和/usr/local/bin
添加到您的{{1}并导致 终端使用Cygwin PHP安装,不需要ANSICON。
接下来在$PATH
文件中,您需要在文件底部添加。
~/.bashrc
您可以通过从Cygwin终端运行以下命令来轻松追加该行。
export ANSICON=true
这将确保Symfony将使用不同的Windows版本找到ANSICON环境变量。
答案 1 :(得分:2)
您需要将-l
开关添加到终端路径。
完整路径应为
"C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe -l
或
"C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe --login
请务必通过单击终端对话框左上角的红色X 关闭当前打开的终端窗口,然后重新打开它。
有关详细信息,请参阅Cygwin终端中的man bash
。
更新
根据您对WAMP安装的评论。您需要在Cygwin中安装PHP才能正常运行,这将允许使用posix
系列函数并为您的PHP环境模拟Linux发行版。这通常是使用Cygwin的原因。
您打算如何在PHP中使用Cygwin?
问题是Cygwin正在使用Windows PHP可执行文件,并且Symfony控制台组件StreamOutput
将其检测为PHP的Windows实例,而不是Cygwin / Linux,以便使用posix_isatty
。< / p>
以下是Symfony控制台用于向终端呈现颜色输出的代码示例。
if ('\\' === DIRECTORY_SEPARATOR) {
static::$defaultColors = @(
0 >= version_compare('10.0.10586', PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD)
|| false !== getenv('ANSICON')
|| 'ON' === getenv('ConEmuANSI')
|| 'xterm' === getenv('TERM')
);
} elseif (function_exists('posix_isatty')) {
$h = stream_get_meta_data($this->outputStream) + array('wrapper_type' => null);
$h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', 'wb') : $this->outputStream;
}