2016-07-08 25 views
1

Ich versuche Terminalfarben innerhalb meiner Ghci-Eingabeaufforderung zu verwenden. SoEinstellung der Ghci-Eingabeaufforderung mit Farben

, wenn ich öffnen ghci und versuchen zu:

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

Ich weiß, dass diese Codes durch bash interpretiert werden mit echo und der -e Flagge. Aber wie kann ich das innerhalb von Ghci tun?

Antwort

7

Nach https://wiki.haskell.org/GHCi_in_colour können Sie

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

ein paar Noten der Erklärung verwenden:

  1. Nur Strings in doppelten Anführungszeichen speziell behandelt wird; Einfache Anführungszeichen werden als Teil der Eingabeaufforderung behandelt.
  2. Die Zeichenfolge in doppelten Anführungszeichen folgt der Haskell-Praxis.
  3. \STX entspricht der \] Ihrer bash Eingabeaufforderung; ist nicht klar, warum GHCi nicht das Äquivalent von \[ als auch erfordert. (Vielleicht tut es das; ich habe nicht so viel gespielt.) . Eine Erläuterung finden Sie unter http://trac.haskell.org/haskeline/wiki/ControlSequencesInPrompt.
+1

Zu Punkt 3: '\ ESC' entspricht' \ ['. –

+0

Oh, also stoppt GHCi mit '\ ESC' (und vielleicht einem nicht druckbaren Zeichen), bis er' \ STX' sieht? – chepner

+0

Macht nichts, ich sollte die Seiten lesen, auf die ich mehr verlinke :) – chepner

2

Haskell Zeichen Escape-Codes sind in dezimal:

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

Putting die gleiche Richtlinie in Ihrer .ghci Datei sollte auch funktionieren.

+0

Sie können auch z. 'o33 'für oktale Escape-Codes, die näher an Bash ist. Konvertieren von oct-> dec ist langweilig: P – chi