ansi for platform

Output ANSI codes to change color.

Signature

> ansi (code) --escape --osc --list

Parameters

  • code: the name of the code to use like 'green' or 'reset' to reset the color
  • --escape (-e): escape sequence without the escape character(s)
  • --osc (-o): operating system command (ocs) escape sequence without the escape character(s)
  • --list (-l): list available ansi code names

Notes

For escape sequences:
Escape: '\x1b[' is not required for --escape parameter
Format: #(;#)m
Example: 1;31m for bold red or 2;37;41m for dimmed white fg with red bg
There can be multiple text formatting sequence numbers
separated by a ; and ending with an m where the # is of the
following values:
    attribute_number, abbreviation, description
    0     reset / normal display
    1  b  bold or increased intensity
    2  d  faint or decreased intensity
    3  i  italic on (non-mono font)
    4  u  underline on
    5  l  slow blink on
    6     fast blink on
    7  r  reverse video on
    8  h  nondisplayed (invisible) on
    9  s  strike-through on

    foreground/bright colors    background/bright colors
    30/90    black              40/100    black
    31/91    red                41/101    red
    32/92    green              42/102    green
    33/93    yellow             43/103    yellow
    34/94    blue               44/104    blue
    35/95    magenta            45/105    magenta
    36/96    cyan               46/106    cyan
    37/97    white              47/107    white
    39       default            49        default
    https://en.wikipedia.org/wiki/ANSI_escape_code

OSC: '\x1b]' is not required for --osc parameter
Example: echo [(ansi -o '0') 'some title' (char bel)] | str join
Format: #
    0 Set window title and icon name
    1 Set icon name
    2 Set window title
    4 Set/read color palette
    9 iTerm2 Grown notifications
    10 Set foreground color (x11 color spec)
    11 Set background color (x11 color spec)
    ... others

Examples

Change color to green

> ansi green

Reset the color

> ansi reset

Use ansi to color text (rb = red bold, gb = green bold, pb = purple bold)

> $'(ansi rb)Hello (ansi gb)Nu (ansi pb)World(ansi reset)'
Hello Nu World

Use ansi to color text (italic bright yellow on red 'Hello' with green bold 'Nu' and purple bold 'World')

> [(ansi -e '3;93;41m') Hello (ansi reset) " " (ansi gb) Nu " " (ansi pb) World (ansi reset)] | str join
Hello Nu World

Use ansi to color text with a style (blue on red in bold)

> $"(ansi -e { fg: '#0000ff' bg: '#ff0000' attr: b })Hello Nu World(ansi reset)"
Hello Nu World