Terminal PhpStorm: los colores de Cygwin no funcionan
wamp symfony-console (2)
Tengo PhpStorm 2016.2 y agregué Cygwin en la ruta de Shell de la siguiente manera: "C:/cygwin64/bin/env.exe" CHERE_INVOKING=1 /bin/bash.exe
Está funcionando bien, pero los colores no funcionan. Por ejemplo, tengo ?[32m Name
lugar de tener Name
coloreado en verde.
Intenté varias cosas, como agregar el complemento Grep Console para tener el soporte de Color ANSI, pero no funcionó.
Es realmente difícil trabajar con líneas con múltiples colores ANSI ?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path
.
No dude en pedir más información sobre el problema. Gracias.
PD: estoy en Windows 10.
EDITAR
cuando hago /usr/bin/which php
en PHPStorm terminal obtengo /cygdrive/d/wamp2/bin/php/php5.6.16/php
. Tengo php5.6.16 y php7.0.0 en mi WAMP y actualmente estoy usando php7.0.0.
EDIT 2 He añadido un $ PATH para php7.0.0 así que ahora tengo /cygdrive/d/wamp2/bin/php/php7.0.0/php
cuando hago /usr/bin/which php
. Pero el principal problema permanece.
Agregar una segunda respuesta para proporcionar una solución alternativa a mi respuesta original.
Soporte ANSICON
Primero descarga e instala ANSICON
- Extraiga los archivos binarios de Windows (contenido del directorio x86 o x64) en su
$PATH
(D:/wamp/bin/php/php7.0.0
) - Opcionalmente ejecute
ansicon -i
desde un símbolo del sistema de Windows para permitirle usarANSICON
para agregar soporte de color ansi al símbolo del sistema de Windows.
A continuación, debe envolver ANSICON
para la terminal PHPStorm
"X:/path/to/ansicon.exe" -p "C:/cygwin64/bin/env.exe" CHERE_INVOKING=1 /bin/bash.exe
NOTA: Al usar
-l
o--login
, como se indica en la respuesta original, agregará/usr/bin
y/usr/local/bin
a su$PATH
y hará que el terminal use la instalación de Cygwin PHP haciendo que ANSICON no sea necesario.
A continuación, en su archivo ~/.bashrc
deberá agregarlo en la parte inferior del archivo.
export ANSICON=true
Puede agregar fácilmente la línea ejecutando el siguiente comando desde una terminal Cygwin.
echo export ANSICON=true >> ~/.bashrc
Esto asegurará que Symfony encuentre la variable de entorno ANSICON con una versión de Windows diferente.
A continuación, reinicie PHPStorm y abra el terminal para probarlo.
Necesita agregar el -l
a su ruta de terminal.
Antes de agregar el interruptor:
La ruta completa debe ser
"C:/cygwin64/bin/env.exe" CHERE_INVOKING=1 /bin/bash.exe -l
o
"C:/cygwin64/bin/env.exe" CHERE_INVOKING=1 /bin/bash.exe --login
Asegúrese de cerrar la ventana del terminal actualmente abierta haciendo clic en la X roja en la esquina superior izquierda del cuadro de diálogo del terminal y vuelva a abrirla.
Ahora ejecutando el comando otra vez, debería verse así:
Vea man bash
dentro de la terminal Cygwin para más información.
ACTUALIZAR
En base a su comentario sobre su instalación de WAMP. Tendrá que instalar PHP en Cygwin para que se ejecute correctamente, lo que permitirá el uso de la línea de funciones posix
y emulará una distribución Linux para su entorno PHP. Que es por lo general por qué se usa Cygwin.
¿Cómo piensa utilizar Cygwin con PHP?
El problema es que Cygwin está usando el ejecutable de PHP de Windows y el componente de la consola de Symfony StreamOutput
está detectando como una instancia de Windows de PHP y no de Cygwin / Linux para usar posix_isatty
.
Aquí hay un ejemplo del código que Symfony Console usa para representar la salida de color en el terminal.
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;
}