Настройка подсказки ghci с цветами

Я пытаюсь использовать терминальные цвета в командной строке ghci.

Поэтому, когда я открываю ghci и пытаюсь:

Prelude> :set prompt '\[\033[1haskell > \033[0m\]'
'\[\033[1\]haskell> \[\033[0m\] '

Я знаю, что эти коды интерпретируются bash с echo и флагом -e. Но как я могу сделать это в ghci?


person hgiesel    schedule 08.07.2016    source источник


Ответы (2)


Согласно https://wiki.haskell.org/GHCi_in_colour, вы можете использовать

:set prompt "\ESC[33m\STXhaskell > \ESC[m\STX"

Несколько пояснений:

  1. Специально обрабатывается только строка в двойных кавычках; одинарные кавычки рассматриваются как часть подсказки.
  2. Строка в двойных кавычках соответствует практике Haskell.
  3. \STX соответствует \] вашей подсказки bash; непонятно, почему GHCi также не требует эквивалента \[. (Возможно, это так, я не играл с этим много.). См. http://trac.haskell.org/haskeline/wiki/ControlSequencesInPrompt для объяснения .
person chepner    schedule 08.07.2016
comment
О, так GHCi прекращает считать с \ESC (и, возможно, с любым непечатаемым символом), пока не увидит \STX? - person chepner; 08.07.2016
comment
Неважно, я должен читать страницы, на которые я ссылаюсь, более внимательно :) - person chepner; 08.07.2016

Коды escape-символов Haskell представлены в десятичном формате:

Prelude> :set prompt "\027[31mhaskell>\027[0m "

Помещение той же директивы в файл .ghci также должно работать.

person ErikR    schedule 08.07.2016
comment
Вы также можете использовать, например. \o33 для восьмеричных управляющих кодов, что ближе к Bash. Преобразование окт-›дек скучно :P - person chi; 09.07.2016