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
:光标向上移动指定的数量,有一个参数,默认值是1
move_down
,md
:光标向下移动指定的数量,有一个参数,默认值是1
move_right
,mr
:光标向右移动指定的数量,有一个参数,默认值是1
move_left
,ml
:光标向左移动指定的数量,有一个参数,默认值是1
set_down
,sd
:将光标移动到n行下行起始位置,有一个参数,默认值是1
set_up
,su
:将光标移动到n行上行起始位置,有一个参数,默认值是1
move_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