1 个不稳定版本
| 0.1.0 | 2023年8月29日 |
|---|
#831 在 命令行界面
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 个宏:formatc、printc 和 printcln。它们分别相当于 format、print 和 println。
在所有这些中,都适用相同的语法
- 以
'开头的括号是颜色格式(例如,{'yellow}) - 其他括号由宏
format解释
颜色格式可以包含
- ASCII 字母的名称(例如,
yellow) - 十六进制颜色(例如,
#FF125C)
名称和十六进制颜色由空格分隔
十六进制颜色
十六进制颜色可以是 1、2、3 或 6 位。它们的解释如下
- 单色被解释为重复 6 次的数字(例如,
#B与#BBBBBB相同) - 两位色被解释为重复 3 次的两个数字(例如,
#AB与#ABABAB相同) - 三位颜色被解释为每个数字重复一次(例如,
#ABC等同于#AABBCC) - 六位颜色被解释为典型的RGB值(即
#RRGGBB)
如果您想设置前景色,只需输入十六进制代码(例如,#ABCDEF),如果您想设置背景色,请在十六进制颜色后面紧跟下划线(_)(例如,#ABCDEF_)
颜色名称列表
大多数名称都有别名(例如,写入 white 和 w 是相同的)。一些可以重置,即通过带下划线的相同名称完成(_)。一些名称可能/必须具有参数。这些是数字,并在名称后直接写入,多个参数由逗号分隔。如果参数是可选的,则将默认值写在旁边。即使没有参数,也必须存在逗号。 (例如,mt5,7 是有效的,mt,7 是有效的,mt5, 是有效的,mt, 是有效的,但 mt 是无效的)
ASCII码
bell:控制台响铃(产生声音)backspace:向左移动一个位置htab,tab:水平制表符move_down_scrl,mds:如果有必要,向下移动一行newline,nl:移动到下一行的开头vtab:垂直制表符carriage_return|cr:移动到当前行的开头
移动光标
move_to,mt:将光标移动到指定的位置,有两个参数,默认值是0。move_up,mu:将光标向上移动指定的数量,有一个参数,默认值是1move_down,md:将光标向下移动指定的数量,有一个参数,默认值是1move_right,mr:将光标向右移动指定的数量,有一个参数,默认值是1move_left,ml:将光标向左移动指定的数量,有一个参数,默认值是1set_down,sd:将光标移动到n行以下的行首,有一个参数,默认值是1set_up,su:将光标移动到n行以上的行首,有一个参数,默认值是1move_to_column,mc:将光标移动到给定的x坐标,有一个参数,默认值是0
move_up_scrl,mus:如果有必要,向上移动一行save_cur、save、s:保存当前光标位置(单个槽位,非先进先出)load_cur、loat、l:加载最后保存的光标位置
擦除
erase_to_end、e_:从光标处擦除到屏幕末尾erase_from_start、_e:从屏幕起始处擦除到光标erase_screen、_e_:擦除整个屏幕erase_all、e:擦除整个屏幕和滚动缓冲区erase_ln_end、el_:从光标处擦除到行末erase_ln_start、_el:从行首擦除到光标erase_line、erase_ln、_el_、el:擦除当前行
样式和颜色
reset、_:重置所有颜色和样式
bold:设置为粗体faint、f:设置为细体italic、i:设置为斜体underline、u:设置为下划线blinking、blink:设置为闪烁inverse:设置为反色(交换背景和前景)invisible、invis:设置为不可见(前景和背景相同)striketrough、strike:设置为删除线double_underline、dunderline、dun:设置为双下划线
_bold:重置粗体和细体_italic、_i:重置斜体_underline、_u:重置下划线和双下划线_blinking、_blink:重置闪烁_inverse:重置反色_invisible、_invis:重置不可见_striketrough、_strike:重置删除线
black_fg、black、bl:将前景色设置为黑色white_fg、white、w:将前景色设置为白色gray_fg、gray、gr:将前景色设置为灰色bright_gray_fg、bgray、bgr:将前景色设置为亮灰色
red_fg、red、r:将前景色设置为红色green_fg、green、g:将前景色设置为绿色yellow_fg、yellow、y:将前景色设置为黄色magenta_fg、magenta、m:将前景色设置为洋红色cyan_fg、cyan、c:将前景色设置为青色
dark_red_fg、dred、dr:将前景色设置为深红色dark_green_fg、dgreen、dg:将前景色设置为深绿色dark_yellow_fg、dyellow、dy:将前景色设置为深黄色dark_magenta_fg、dmagenta、dm:将前景色设置为深品红色dark_cyan_fg、dcyan、dc:将前景色设置为深青色
_fg:重置前景色
black_bg、blackb、blb:将背景色设置为黑色white_bg、whiteb、wb:将背景色设置为白色gray_bg、grayb、grb:将背景色设置为灰色bright_gray_bg、bgrayb、bgrb:将背景色设置为亮灰色
red_bg、redb、rb:将背景色设置为红色green_bg、greenb、gb:将背景色设置为绿色yellow_bg、yellowb、yb:将背景色设置为黄色magenta_bg、magentab、mb:将背景色设置为品红色cyan_bg、cyanb、cb:将背景色设置为青色
dark_red_bg、dredb、drb:将背景色设置为深红色dark_green_bg、dgreenb、dgb:将背景色设置为深绿色dark_yellow_bg、dyellowb、dyb:将背景色设置为深黄色dark_magenta_bg、dmagentab、dmb:将背景色设置为深品红色dark_cyan_bg、dcyanb、dcb:将背景色设置为深青色
_bg:重置背景色
fg:将前景色设置为256种颜色之一,有一个参数bg:将背景色设置为256种颜色之一,有一个参数
其他
line_wrap、wrap:启用换行_line_wrap、_wrap:禁用换行
hide_cursor、nocur:隐藏光标show_cursor、_nocur:显示光标save_screen、sscr:保存屏幕视图load_screen、lscr:恢复最后保存的屏幕视图alt_buf、abuf:启用备用缓冲区_alt_buf、_abuf:禁用备用缓冲区
复合
clear、cls:清除屏幕和缓冲区,并将光标移至左上角位置(等价于e mt,)