檢視原始碼 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)

較高層級且更方便的 API 也可透過 IO.ANSI.format/1 取得,其中您使用原子來表示每個 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 的引數。

加上框線。

將前景顏色設定為綠色。

將背景顏色設定為綠色。

將游標傳送至開頭。

影像:負片。交換前景和背景。

影像:正片。正常的前景和背景。

斜體:開啟。支援度不高。有時會當成反白。

將前景顏色設定為淺黑色。

將背景顏色設定為淺黑色。

將前景顏色設定為淺藍色。

將背景顏色設定為淺藍色。

將前景顏色設定為淺青色。

將背景顏色設定為淺青色。

將前景顏色設定為淺綠色。

將背景顏色設定為淺綠色。

將前景顏色設定為淺洋紅色。

將背景顏色設定為淺洋紅色。

將前景顏色設定為淺紅色。

將背景顏色設定為淺紅色。

將前景顏色設定為淺白色。

將背景顏色設定為淺白色。

將前景顏色設定為淺黃色。

將背景顏色設定為淺黃色。

將前景顏色設定為洋紅色。

將背景顏色設定為洋紅色。

底線:無。

正常顏色或強度。

無框線或圓圈。

非斜體。

無上線。

有上線。

設定主要(預設)字型。

將前景顏色設定為紅色。

將背景顏色設定為紅色。

重設所有屬性。

影像:負片。交換前景和背景。

影像:正片。正常的前景和背景。

語法顏色,供 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。

@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 欄表示左上角。

@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 的組態值。除非 Elixir 在啟動期間偵測到 stdoutstderr 都是終端機,否則預設值為 false

@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。如果您不想要這個行為,請使用 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()

加上框線。

@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()

將前景顏色設定為淺黑色。

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

將背景顏色設定為淺黑色。

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

將前景顏色設定為淺藍色。

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

將背景顏色設定為淺藍色。

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

將前景顏色設定為淺青色。

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

將背景顏色設定為淺青色。

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

將前景顏色設定為淺綠色。

@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()

將前景顏色設定為淺紅色。

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

將背景顏色設定為淺紅色。

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

將前景顏色設定為淺白色。

@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()

正常顏色或強度。

@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

可透過設定 :ansi_syntax_colors:elixir 應用程式設定中來變更顏色。支援大多數內建資料類型的設定::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()

將背景顏色設定為黃色。