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 utilizzareANSICON
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.