Терминал PhpStorm: цвета Cygwin не работают

terminal cygwin wamp phpstorm symfony-console

2771 просмотра

2 ответа

11 Репутация автора

У меня есть PhpStorm 2016.2, и я добавил Cygwin в путь Shell следующим образом: "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe

Работает хорошо, но цвета не работают. Например, я ?[32m Nameвместо того, чтобы Nameпокрасить в зеленый.

Я пробовал несколько вещей, таких как добавление плагина Grep Console для поддержки ANSI Color, но не получилось.

Очень сложно работать со строками с несколькими цветами ANSI ?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path.

Не стесняйтесь спрашивать дополнительную информацию о проблеме. Спасибо.

PS Я на Windows 10.

РЕДАКТИРОВАТЬ

когда я делаю /usr/bin/which phpв терминале PHPStorm я получаю /cygdrive/d/wamp2/bin/php/php5.6.16/php. У меня есть php5.6.16 и php7.0.0 в моем WAMP, и я в настоящее время использую php7.0.0.

РЕДАКТИРОВАТЬ 2 Я добавил $ PATH для php7.0.0, так что теперь у меня есть, /cygdrive/d/wamp2/bin/php/php7.0.0/phpкогда я делаю /usr/bin/which php. Но главная проблема остается.

Автор: WillMic Источник Размещён: 18.07.2016 01:26

Ответы (2)


2 плюса

10733 Репутация автора

Вам нужно добавить -lпереключатель в путь вашего терминала.

Перед добавлением переключателя: Cygwin Before Switch

Полный путь должен быть

"C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe -l

или же

"C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe --login

PHPStorm Cygwin Terminal

Обязательно закройте открытое в настоящий момент окно терминала , нажав красный крестик в левом верхнем углу диалогового окна терминала, и снова откройте его. Закрыть терминал

Теперь, запустив команду снова, она должна выглядеть так: Cygwin после переключения

Смотрите man bashв терминале Cygwin для получения дополнительной информации.


ОБНОВИТЬ

На основании вашего комментария о вашей установке WAMP. Вам нужно установить PHP в Cygwin, чтобы он работал правильно, что позволит использовать posixряд функций и эмулировать дистрибутив Linux для вашей среды PHP. Именно поэтому обычно используется Cygwin.

Как вы собираетесь использовать Cygwin с PHP?

Проблема заключается в том, что Cygwin использует исполняемый файл Windows PHP, а компонент Symfony Console StreamOutputопределяет его как экземпляр PHP для Windows, а не как Cygwin / Linux для использования posix_isatty.

Вот пример кода, который Symfony Console использует для визуализации вывода цвета на терминал.

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;
}
Автор: fyrye Размещён: 12.08.2016 05:59

6 плюса

10733 Репутация автора

Добавление второго ответа, чтобы обеспечить альтернативное решение для моего первоначального ответа.

ANSICON Поддержка

Сначала скачайте и установите ANSICON

  • Извлеките двоичные файлы Windows (содержимое каталога x86 или x64) в ваш $PATH( D:\wamp\bin\php\php7.0.0)
  • При желании можно запустить ansicon -iиз командной строки Windows, чтобы можно было использовать ANSICONдля добавления поддержки цвета ANSI в командную строку Windows.

Далее вам нужно обернуть ANSICONдля терминала PHPStorm

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

Ansicon Wrapper

ПРИМЕЧАНИЕ. Использование -lили --login, как указано в исходном ответе, добавит /usr/binи /usr/local/binк вашему $PATHи заставит терминал использовать установку Cygwin PHP, что сделает ANSICON ненужным.

Далее в вашем ~/.bashrcфайле вам нужно будет добавить внизу файла.

export ANSICON=true

Вы можете легко добавить строку, выполнив следующую команду из терминала Cygwin.

echo export ANSICON=true >> ~/.bashrc

Это гарантирует, что Symfony найдет переменную среды ANSICON с другой версией Windows.

Затем перезапустите PHPStorm и откройте терминал, чтобы проверить его. Композитор Ансикон

Автор: fyrye Размещён: 18.08.2016 04:09
Вопросы из категории :
32x32