terminal cygwin wamp phpstorm symfony-console

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 usar ANSICON 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; }