#ansi-codes #ansi-term #text-style #color #terminal-text #escaping #cli

termal

Rust 库,使用 ansi 代码实现丰富的命令行界面着色功能

6 个版本 (稳定)

1.2.0 2024 年 8 月 6 日
1.1.0 2024 年 6 月 28 日
1.0.2 2024 年 4 月 15 日
1.0.1 2024 年 1 月 26 日
0.1.0 2023 年 8 月 29 日

#462命令行界面

Download history 5/week @ 2024-04-22 4/week @ 2024-05-20 7/week @ 2024-05-27 3/week @ 2024-06-03 2/week @ 2024-06-10 123/week @ 2024-06-24 14/week @ 2024-07-01 118/week @ 2024-08-05

每月 118 次下载

自定义许可证

100KB
2K SLoC

Termal

crates.io donwloads

使用 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 b = format!("\x1b[{};{}H", 2 + 3, 7);

如果您知道参数的值,也可以使用 *c

use termal::formatc;

// the spaces, or the lack of them is important
let a = formatc!("{'move_to5,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", (250, 50, 170), (180, 50, 240)));

如何使用

要查看所有可能的命令和使用方法,请参阅 文档

如何获取

它可在 crates.io 上找到

使用 cargo

cargo add termal

在 Cargo.toml 中

[dependencies]
termal = "1.0.0"

依赖项

~1.1–1.7MB
~33K SLoC