查看源代码 IO.ANSI (Elixir v1.16.2)

用于渲染 ANSI 转义序列的功能。

ANSI 转义序列 是嵌入文本中的字符,用于在视频文本终端上控制格式、颜色和其他输出选项。

ANSI 转义序列通常在所有 Unix 终端上启用。它们也可以在 Windows 10 的 Windows 控制台上使用,但必须通过运行以下命令在注册表中为当前用户显式启用。

reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1

运行完以上命令后,您需要重新启动当前控制台。

示例

由于 ANSI 转义序列嵌入在文本中,因此这些函数的正常用法是将它们的输出与文本连接起来。

formatted_text = IO.ANSI.blue_background() <> "Example" <> IO.ANSI.reset()
IO.puts(formatted_text)

通过 IO.ANSI.format/1 提供了更高级且更方便的 API,您可以在其中使用原子来表示每个 ANSI 转义序列,并且默认情况下会检查是否启用了 ANSI。

IO.puts(IO.ANSI.format([:blue_background, "Example"]))

如果禁用了 ANSI,则 ANSI 转义序列将被简单地丢弃。

摘要

函数

将前景色设置为黑色。

将背景色设置为黑色。

闪烁:关闭。

闪烁:快速。MS-DOS ANSI.SYS;每分钟 150 次或更多;支持不广泛。

闪烁:慢速。每分钟少于 150 次。

将前景色设置为蓝色。

将背景色设置为蓝色。

明亮(增加强度)或粗体。

清除屏幕。

清除行。

设置前景色。

从单独的 RGB 值设置前景色。

设置背景色。

从单独的 RGB 值设置背景色。

隐藏。支持不广泛。

删除线。字符可读,但被标记为删除。支持不广泛。

将光标发送到由 linecolumn 指定的绝对位置。

将光标向下发送 lines 行。

将光标向左发送 columns 列。

将光标向右发送 columns 列。

将光标向上发送 lines 行。

将前景色设置为青色。

将背景色设置为青色。

默认背景色。

默认文本颜色。

检查 ANSI 着色是否在本机上受支持并已启用。

圈起来。

暗淡(降低强度)。支持不广泛。

设置备用字体 1。

设置备用字体 2。

设置备用字体 3。

设置备用字体 4。

设置备用字体 5。

设置备用字体 6。

设置备用字体 7。

设置备用字体 8。

设置备用字体 9。

通过将命名 ANSI 序列转换为实际的 ANSI 代码来格式化类似 chardata 的参数。

通过将命名 ANSI 序列转换为实际的 ANSI 代码来格式化类似 chardata 的参数。

Framed.

将前景色设置为绿色。

将背景色设置为绿色。

将光标发送到主页。

图像:负片。交换前景和背景。

图像:正片。正常前景和背景。

斜体:开启。支持不广泛。有时被视为反转。

将前景色设置为浅黑色。

将背景色设置为浅黑色。

将前景色设置为浅蓝色。

将背景色设置为浅蓝色。

将前景色设置为浅青色。

将背景色设置为浅青色。

将前景色设置为浅绿色。

将背景色设置为浅绿色。

将前景色设置为浅洋红色。

将背景色设置为浅洋红色。

将前景色设置为浅红色。

将背景色设置为浅红色。

将前景色设置为浅白色。

将背景色设置为浅白色。

将前景色设置为浅黄色。

将背景色设置为浅黄色。

将前景色设置为洋红色。

将背景色设置为洋红色。

下划线:无。

正常颜色或强度。

没有带框或圈起来。

不是斜体。

没有横线。

带横线。

设置主(默认)字体。

将前景色设置为红色。

将背景色设置为红色。

重置所有属性。

图像:负片。交换前景和背景。

图像:正片。正常前景和背景。

Inspect 使用的语法颜色。

下划线:单下划线。

将前景色设置为白色。

将背景色设置为白色。

将前景色设置为黄色。

将背景色设置为黄色。

类型

@type ansicode() :: atom()
@type ansidata() :: ansilist() | ansicode() | binary()
@type ansilist() ::
  maybe_improper_list(
    char() | ansicode() | binary() | ansilist(),
    binary() | ansicode() | []
  )

函数

@spec black() :: String.t()

将前景色设置为黑色。

@spec black_background() :: String.t()

将背景色设置为黑色。

@spec blue() :: String.t()

将前景色设置为蓝色。

@spec blue_background() :: String.t()

将背景色设置为蓝色。

@spec bright() :: String.t()

明亮(增加强度)或粗体。

@spec clear() :: String.t()

清除屏幕。

@spec clear_line() :: String.t()

清除行。

@spec color(0..255) :: String.t()

设置前景色。

@spec color(0..5, 0..5, 0..5) :: String.t()

从单独的 RGB 值设置前景色。

每种颜色的有效值为 0 到 5。

链接到此函数

color_background(code)

查看源代码
@spec color_background(0..255) :: String.t()

设置背景色。

链接到此函数

color_background(r, g, b)

查看源代码
@spec color_background(0..5, 0..5, 0..5) :: String.t()

从单独的 RGB 值设置背景色。

每种颜色的有效值为 0 到 5。

@spec conceal() :: String.t()

隐藏。支持不广泛。

@spec crossed_out() :: String.t()

删除线。字符可读,但被标记为删除。支持不广泛。

@spec cursor(non_neg_integer(), non_neg_integer()) :: String.t()

将光标发送到由 linecolumn 指定的绝对位置。

0 和列 0 表示左上角。

链接到此函数

cursor_down(lines \\ 1)

查看源代码
@spec cursor_down(pos_integer()) :: String.t()

将光标向下发送 lines 行。

链接到此函数

cursor_left(columns \\ 1)

查看源代码
@spec cursor_left(pos_integer()) :: String.t()

将光标向左发送 columns 列。

链接到此函数

cursor_right(columns \\ 1)

查看源代码
@spec cursor_right(pos_integer()) :: String.t()

将光标向右发送 columns 列。

@spec cursor_up(pos_integer()) :: String.t()

将光标向上发送 lines 行。

@spec cyan() :: String.t()

将前景色设置为青色。

@spec cyan_background() :: String.t()

将背景色设置为青色。

@spec default_background() :: String.t()

默认背景色。

@spec default_color() :: String.t()

默认文本颜色。

@spec enabled?() :: boolean()

检查 ANSI 着色是否在本机上受支持并已启用。

此函数只是读取 :elixir 应用程序中 :ansi_enabled 的配置值。该值默认情况下为 false,除非 Elixir 在启动时检测到 stdoutstderr 都是终端。

@spec encircled() :: String.t()

圈起来。

@spec faint() :: String.t()

暗淡(降低强度)。支持不广泛。

@spec font_1() :: String.t()

设置备用字体 1。

@spec font_2() :: String.t()

设置备用字体 2。

@spec font_3() :: String.t()

设置备用字体 3。

@spec font_4() :: String.t()

设置备用字体 4。

@spec font_5() :: String.t()

设置备用字体 5。

@spec font_6() :: String.t()

设置备用字体 6。

@spec font_7() :: String.t()

设置备用字体 7。

@spec font_8() :: String.t()

设置备用字体 8。

@spec font_9() :: String.t()

设置备用字体 9。

链接到此函数

format(ansidata, emit? \\ enabled?())

查看源代码
@spec format(ansidata(), boolean()) :: IO.chardata()

通过将命名 ANSI 序列转换为实际的 ANSI 代码来格式化类似 chardata 的参数。

命名序列由原子表示。

它还会在执行转换时将 IO.ANSI.reset/0 附加到 chardata。如果您不希望这种行为,请使用 format_fragment/2

可以传递一个可选的布尔参数来启用或禁用发出实际的 ANSI 代码。当 false 时,不会发出任何 ANSI 代码。默认情况下,使用 enabled?/0 函数检查是否启用了 ANSI。

如果提供无效的 ANSI 代码,将引发 ArgumentError

示例

iex> IO.ANSI.format(["Hello, ", :red, :bright, "world!"], true)
[[[[[[], "Hello, "] | "\e[31m"] | "\e[1m"], "world!"] | "\e[0m"]
链接到此函数

format_fragment(ansidata, emit? \\ enabled?())

查看源代码
@spec format_fragment(ansidata(), boolean()) :: IO.chardata()

通过将命名 ANSI 序列转换为实际的 ANSI 代码来格式化类似 chardata 的参数。

命名序列由原子表示。

可以传递一个可选的布尔参数来启用或禁用发出实际的 ANSI 代码。当 false 时,不会发出任何 ANSI 代码。默认情况下,使用 enabled?/0 函数检查是否启用了 ANSI。

示例

iex> IO.ANSI.format_fragment([:bright, 'Word'], true)
[[[[[[] | "\e[1m"], 87], 111], 114], 100]
@spec framed() :: String.t()

Framed.

@spec green() :: String.t()

将前景色设置为绿色。

@spec green_background() :: String.t()

将背景色设置为绿色。

@spec home() :: String.t()

将光标发送到主页。

@spec inverse() :: String.t()

图像:负片。交换前景和背景。

@spec inverse_off() :: String.t()

图像:正片。正常前景和背景。

@spec italic() :: String.t()

斜体:开启。支持不广泛。有时被视为反转。

@spec light_black() :: String.t()

将前景色设置为浅黑色。

链接到此函数

light_black_background()

查看源代码
@spec light_black_background() :: String.t()

将背景色设置为浅黑色。

@spec light_blue() :: String.t()

将前景色设置为浅蓝色。

链接到此函数

light_blue_background()

查看源代码
@spec light_blue_background() :: String.t()

将背景色设置为浅蓝色。

@spec light_cyan() :: String.t()

将前景色设置为浅青色。

链接到此函数

light_cyan_background()

查看源代码
@spec light_cyan_background() :: String.t()

将背景色设置为浅青色。

@spec light_green() :: String.t()

将前景色设置为浅绿色。

链接到此函数

light_green_background()

查看源代码
@spec light_green_background() :: String.t()

将背景色设置为浅绿色。

@spec light_magenta() :: String.t()

将前景色设置为浅洋红色。

链接到此函数

light_magenta_background()

查看源代码
@spec light_magenta_background() :: String.t()

将背景色设置为浅洋红色。

@spec light_red() :: String.t()

将前景色设置为浅红色。

链接到此函数

light_red_background()

查看源代码
@spec light_red_background() :: String.t()

将背景色设置为浅红色。

@spec light_white() :: String.t()

将前景色设置为浅白色。

链接到此函数

light_white_background()

查看源代码
@spec light_white_background() :: String.t()

将背景色设置为浅白色。

@spec light_yellow() :: String.t()

将前景色设置为浅黄色。

链接到此函数

light_yellow_background()

查看源代码
@spec light_yellow_background() :: String.t()

将背景色设置为浅黄色。

@spec magenta() :: String.t()

将前景色设置为洋红色。

@spec magenta_background() :: String.t()

将背景色设置为洋红色。

@spec no_underline() :: String.t()

下划线:无。

@spec normal() :: String.t()

正常颜色或强度。

链接到此函数

not_framed_encircled()

查看源代码
@spec not_framed_encircled() :: String.t()

没有带框或圈起来。

@spec not_italic() :: String.t()

不是斜体。

@spec not_overlined() :: String.t()

没有横线。

@spec overlined() :: String.t()

带横线。

@spec primary_font() :: String.t()

设置主(默认)字体。

@spec red() :: String.t()

将前景色设置为红色。

@spec red_background() :: String.t()

将背景色设置为红色。

@spec reset() :: String.t()

重置所有属性。

@spec reverse() :: String.t()

图像:负片。交换前景和背景。

@spec reverse_off() :: String.t()

图像:正片。正常前景和背景。

链接到此函数

syntax_colors()

查看源代码 (自 1.14.0 起)
@spec syntax_colors() :: Keyword.t(ansidata())

Inspect 使用的语法颜色。

这些颜色在 Elixir 的标准库中使用,例如 dbg/2IEx

可以通过在 :elixir 应用程序配置中设置 :ansi_syntax_colors 来更改颜色。大多数内置数据类型的配置都受支持::atom:binary:boolean:charlist:list:map:nil:number:string:tuple。默认值为

[
  atom: :cyan
  boolean: :magenta,
  charlist: :yellow,
  nil: :magenta,
  number: :yellow,
  string: :green
]
@spec underline() :: String.t()

下划线:单下划线。

@spec white() :: String.t()

将前景色设置为白色。

@spec white_background() :: String.t()

将背景色设置为白色。

@spec yellow() :: String.t()

将前景色设置为黄色。

@spec yellow_background() :: String.t()

将背景色设置为黄色。