Terminale PhpStorm: i colori Cygwin non funzionano




wamp symfony-console (2)

Ho PhpStorm 2016.2 e ho aggiunto Cygwin nel percorso della shell come segue: "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe

Funziona bene, ma i colori non funzionano. Per esempio ho ?[32m Name invece di avere il Name colorato in verde.

Ho provato diverse cose come aggiungere il plugin Grep Console per avere il supporto di ANSI Color, ma non ha funzionato.

È davvero difficile lavorare con linee con più colori ANSI ?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path .

Non esitate a chiedere ulteriori informazioni sul problema. Grazie.

PS Sono su Windows 10.

MODIFICARE

quando faccio /usr/bin/which php nel terminale /cygdrive/d/wamp2/bin/php/php5.6.16/php ottengo /cygdrive/d/wamp2/bin/php/php5.6.16/php . Ho php5.6.16 e php7.0.0 nel mio WAMP e attualmente sto usando php7.0.0.

EDIT 2 Ho aggiunto un $ PATH per php7.0.0 così ora ho /cygdrive/d/wamp2/bin/php/php7.0.0/php quando faccio /usr/bin/which php . Ma il problema principale rimane.


È necessario aggiungere l' -l al percorso del terminale.

Prima di aggiungere l'interruttore:

Il percorso completo dovrebbe essere

"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

Assicurati di chiudere la finestra del terminale correntemente aperta facendo clic sulla X rossa nella parte superiore sinistra della finestra di dialogo del terminale e riaprirla.

Ora eseguendo nuovamente il comando dovrebbe apparire come:

Vedi man bash all'interno del terminale Cygwin per maggiori informazioni.

AGGIORNARE

In base al tuo commento sulla tua installazione WAMP. Dovrai installare PHP in Cygwin affinché funzioni correttamente, che permetta l'uso della linea di funzioni posix ed posix una distribuzione Linux per il tuo ambiente PHP. Che è generalmente il motivo per cui viene utilizzato Cygwin.

Come intendi usare Cygwin con PHP?

Il problema è che Cygwin utilizza l'eseguibile PHP di Windows e il Componente Symfony Console che StreamOutput lo rileva come istanza di Windows di PHP e non Cygwin / Linux per poter usare posix_isatty .

Ecco un esempio del codice utilizzato da Symfony Console per eseguire il rendering del colore sul terminale.

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

Aggiungere una seconda risposta per fornire una soluzione alternativa alla mia risposta originale.

Supporto ANSICON

Prima scarica e installa ANSICON

  • Estrai i file binari di Windows (contenuto della directory x86 o x64) nel tuo $PATH ( D:\wamp\bin\php\php7.0.0 )
  • Se lo si desidera, eseguire ansicon -i da un prompt dei comandi di Windows per consentire all'utente di utilizzare ANSICON per aggiungere il supporto per i colori ansi al prompt dei comandi di Windows.

Quindi è necessario avvolgere ANSICON per il terminale PHPStorm

"X:\path\to\ansicon.exe" -p "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe

NOTA: L' uso di -l o --login , come indicato nella risposta originale, aggiungerà /usr/bin e /usr/local/bin al proprio $PATH e farà in modo che il terminale utilizzi l'installazione Cygwin PHP rendendo ANSICON non necessario.

Successivamente nel tuo file ~/.bashrc dovrai aggiungere in fondo al file.

export ANSICON=true

È possibile aggiungere facilmente la riga eseguendo il seguente comando da un terminale Cygwin.

echo export ANSICON=true >> ~/.bashrc

Questo assicurerà a Symfony di trovare la variabile d'ambiente ANSICON con una versione di Windows diversa.

Quindi riavvia PHPStorm e apri il terminale per testarlo.





symfony-console