1 个不稳定版本

0.1.0 2023年8月29日

#831命令行界面


用于 termal_macros

自定义许可

21KB
134 代码行

Termal

一个使用 ANSI 转义代码的 Rust 终端功能库。

当前库包含 ANSI 代码,以及一个仅适用于颜色的特殊宏。

示例

使用宏

use termal::*;

// you can use a special macro to inline the color codes, this will write
// italic text with yellow foreground and reset at the end.
printcln!("{'yellow italic}hello{'reset}");

// the macro also supports standard formatting
printcln!("{'yellow italic}{}{'reset}", "hello");

// you can also use short versions of the codes
printcln!("{'y i}{}{'_}", "hello");

// you can also use true colors with their hex codes
printcln!("{'#dd0 i}{}{'_}", "hello");

不使用宏

// Move cursor to position column 5 on line 7 and write 'hello' in italic
// yellow

use termal::codes::*;

println!("{}{YELLOW_FG}{ITALIC}hello{RESET}", move_to!(5, 7));

例如,宏 move_to! 可以接受字面量或动态值。其主要特点是,如果您提供字面量,它将展开为包含 ANSI 代码的字符串字面量。如果您提供动态值,则展开为 format!

use termal::codes::*;

let a = move_to!(5, 7);
// expands to:
let a = "\x1b[5;7H";

let b = move_to!(2 + 3, 7);
// expands to:
let a = format!("\x1b[{};{}H", 2 + 3, 7);

渐变

您可以使用函数 termal::gradient 创建渐变

use termal::*;

// This will create foreground gradient from the rgb color `(250, 50, 170)`
// to the rgb color `(180, 50, 240)`
printcln!(
    "{}{'_}",
    gradient("BonnyAD9", gradient("BonnyAD9", (250, 50, 170), (180, 50, 240)))
)

宏语法

现在有 3 个宏:formatcprintcprintcln。它们分别相当于 formatprintprintln

在所有这些中,都适用相同的语法

  • ' 开头的括号是颜色格式(例如,{'yellow}
  • 其他括号由宏 format 解释

颜色格式可以包含

  • ASCII 字母的名称(例如,yellow
  • 十六进制颜色(例如,#FF125C

名称和十六进制颜色由空格分隔

十六进制颜色

十六进制颜色可以是 1、2、3 或 6 位。它们的解释如下

  • 单色被解释为重复 6 次的数字(例如,#B#BBBBBB 相同)
  • 两位色被解释为重复 3 次的两个数字(例如,#AB#ABABAB 相同)
  • 三位颜色被解释为每个数字重复一次(例如,#ABC 等同于 #AABBCC
  • 六位颜色被解释为典型的RGB值(即 #RRGGBB

如果您想设置前景色,只需输入十六进制代码(例如,#ABCDEF),如果您想设置背景色,请在十六进制颜色后面紧跟下划线(_)(例如,#ABCDEF_

颜色名称列表

大多数名称都有别名(例如,写入 whitew 是相同的)。一些可以重置,即通过带下划线的相同名称完成(_)。一些名称可能/必须具有参数。这些是数字,并在名称后直接写入,多个参数由逗号分隔。如果参数是可选的,则将默认值写在旁边。即使没有参数,也必须存在逗号。 (例如,mt5,7 是有效的,mt,7 是有效的,mt5, 是有效的,mt, 是有效的,但 mt 是无效的)

ASCII码
  • bell:控制台响铃(产生声音)
  • backspace:向左移动一个位置
  • htabtab:水平制表符
  • move_down_scrlmds:如果有必要,向下移动一行
  • newlinenl:移动到下一行的开头
  • vtab:垂直制表符
  • carriage_return | cr:移动到当前行的开头
移动光标
  • move_tomt:将光标移动到指定的位置,有两个参数,默认值是 0
  • move_upmu:将光标向上移动指定的数量,有一个参数,默认值是 1
  • move_downmd:将光标向下移动指定的数量,有一个参数,默认值是 1
  • move_rightmr:将光标向右移动指定的数量,有一个参数,默认值是 1
  • move_leftml:将光标向左移动指定的数量,有一个参数,默认值是 1
  • set_downsd:将光标移动到n行以下的行首,有一个参数,默认值是 1
  • set_upsu:将光标移动到n行以上的行首,有一个参数,默认值是 1
  • move_to_columnmc:将光标移动到给定的x坐标,有一个参数,默认值是 0
  • move_up_scrlmus:如果有必要,向上移动一行
  • save_cursaves:保存当前光标位置(单个槽位,非先进先出)
  • load_curloatl:加载最后保存的光标位置
擦除
  • erase_to_ende_:从光标处擦除到屏幕末尾
  • erase_from_start_e:从屏幕起始处擦除到光标
  • erase_screen_e_:擦除整个屏幕
  • erase_alle:擦除整个屏幕和滚动缓冲区
  • erase_ln_endel_:从光标处擦除到行末
  • erase_ln_start_el:从行首擦除到光标
  • erase_lineerase_ln_el_el:擦除当前行
样式和颜色
  • reset_:重置所有颜色和样式
  • bold:设置为粗体
  • faintf:设置为细体
  • italici:设置为斜体
  • underlineu:设置为下划线
  • blinkingblink:设置为闪烁
  • inverse:设置为反色(交换背景和前景)
  • invisibleinvis:设置为不可见(前景和背景相同)
  • striketroughstrike:设置为删除线
  • double_underlinedunderlinedun:设置为双下划线
  • _bold:重置粗体和细体
  • _italic_i:重置斜体
  • _underline_u:重置下划线和双下划线
  • _blinking_blink:重置闪烁
  • _inverse:重置反色
  • _invisible_invis:重置不可见
  • _striketrough_strike:重置删除线
  • black_fgblackbl:将前景色设置为黑色
  • white_fgwhitew:将前景色设置为白色
  • gray_fggraygr:将前景色设置为灰色
  • bright_gray_fgbgraybgr:将前景色设置为亮灰色
  • red_fgredr:将前景色设置为红色
  • green_fggreeng:将前景色设置为绿色
  • yellow_fgyellowy:将前景色设置为黄色
  • magenta_fgmagentam:将前景色设置为洋红色
  • cyan_fgcyanc:将前景色设置为青色
  • dark_red_fgdreddr:将前景色设置为深红色
  • dark_green_fgdgreendg:将前景色设置为深绿色
  • dark_yellow_fgdyellowdy:将前景色设置为深黄色
  • dark_magenta_fgdmagentadm:将前景色设置为深品红色
  • dark_cyan_fgdcyandc:将前景色设置为深青色
  • _fg:重置前景色
  • black_bgblackbblb:将背景色设置为黑色
  • white_bgwhitebwb:将背景色设置为白色
  • gray_bggraybgrb:将背景色设置为灰色
  • bright_gray_bgbgraybbgrb:将背景色设置为亮灰色
  • red_bgredbrb:将背景色设置为红色
  • green_bggreenbgb:将背景色设置为绿色
  • yellow_bgyellowbyb:将背景色设置为黄色
  • magenta_bgmagentabmb:将背景色设置为品红色
  • cyan_bgcyanbcb:将背景色设置为青色
  • dark_red_bgdredbdrb:将背景色设置为深红色
  • dark_green_bgdgreenbdgb:将背景色设置为深绿色
  • dark_yellow_bgdyellowbdyb:将背景色设置为深黄色
  • dark_magenta_bgdmagentabdmb:将背景色设置为深品红色
  • dark_cyan_bgdcyanbdcb:将背景色设置为深青色
  • _bg:重置背景色
  • fg:将前景色设置为256种颜色之一,有一个参数
  • bg:将背景色设置为256种颜色之一,有一个参数
其他
  • line_wrapwrap:启用换行
  • _line_wrap_wrap:禁用换行
  • hide_cursornocur:隐藏光标
  • show_cursor_nocur:显示光标
  • save_screensscr:保存屏幕视图
  • load_screenlscr:恢复最后保存的屏幕视图
  • alt_bufabuf:启用备用缓冲区
  • _alt_buf_abuf:禁用备用缓冲区
复合
  • clearcls:清除屏幕和缓冲区,并将光标移至左上角位置(等价于e mt,

无运行时依赖