1 个不稳定版本
| 0.1.0 | 2023 年 8 月 29 日 |
|---|
#20 在 #ansi-codes
43KB
447 行
Termal
一个用于终端特性的 Rust 库,包含 ansi 转义码。
目前该库包含 ansii 码,以及一个仅用于颜色的特殊宏。
示例
使用宏
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)
依赖关系
~230KB