写点什么

一个酷酷的“幽灵”控制台工具

作者:为自己带盐
  • 2022 年 7 月 06 日
  • 本文字数:1568 字

    阅读完需:约 5 分钟

一个酷酷的“幽灵”控制台工具

简介

昨天提到的要介绍的一个控制台插件,今天它来了!

  • 全称:Spectre.Console

  • 译名(非官方):幽灵控制台(以下简称幽灵)

为啥要写这个!嘿嘿,当然是因为,没有整理啊,真的是忙不完的活啊,苦逼的打工人/(ㄒoㄒ)/~~😭😭😭

而且这些都是手边常用的东西,就像带货主播说的那样,自己用过,是真的好用,而且足够酷,才敢推荐给大家。

其实漂亮的控制台工具已经有很多了,比如 ColorfulConsole,ConsoleTables 等,甚至自带的控制台风格在大多数场景下也足够用了,那这个工具又有什么特别之处呢?

特色

  • 够新:上面提到的那些工具,或者一些没提到,但下载量都很大的工具,更新频率都很慢,想很火的 ColorfulConsole,最近一次的更新都停在了 2020 年,所以尽管功能强大,但活力欠佳。而幽灵不一样,看官方的发行记录,他现在正处在快速的迭代更新中,最新的 0.44.x 版本,已经更新了 13 个小版本了,当然了,更新频繁也不见得是好事,也反映了问题很多,正在修修补补,但也正是这样,才证明它活力充沛,值得肯定!

  • 够酷这点不解释,看图



  • 够强大:从上图也能看出来,幽灵提供了多种控制台打印风格,除了文字风格的处理,还支持,表格,树,进度条,甚至是 emoji 表情(需要修改系统配置)

以上三点,就足够我选它了。要说有啥缺点,就是目前没有中文文档,当然,我有金山毒霸,不对,词霸!所以,这都不叫事儿!

使用

其实,关于使用,官方的文档给的案例也足够多了,我这里就简单列几个用例。

字体

使用幽灵来打印各种风格的字体,有点像编辑 Html 文件,只需要通过 markup(Line)方法,在要输出的文字中编写特殊的关键字和占位符就可以了。

比如要打印有颜色的字

AnsiConsole.MarkupLine($"[Yellow]我是第2个中间件,我来自入口文件,我过来了-{DateTime.Now}[/]");
复制代码

要加粗

AnsiConsole.MarkupLine("[bold]World[/]");
复制代码

要加粗还要有颜色

AnsiConsole.MarkupLine("[bold Yellow]World[/]");
复制代码

基本的关键字和 html 风格非常相似,还有下划线,转义等,我就不一一列举了。


表格

幽灵对表格的支持,除了支持静态表格,还支持动态表格

  • 静态表格

正好最近做了一个监听表格变化的工具,构造过一个表格,拿来当例子了

 var table = new Table().Centered();table.AddColumn("被授权人ID");table.AddColumn("被授权赛项ID");table.AddColumn("授权人");while (sdr.Read()){  string column1 = Convert.ToString(sdr["UserID"]);  string column2 = Convert.ToString(sdr["TypeID"]);  string column3 = Convert.ToString(sdr["UserNam"]);  table.AddRow(column1, column2, column3);}AnsiConsole.Write(table);
复制代码

其实就是构造表格,定义列头,然后顺序打印每一行的内容就好了。

当然我这里只是简单的打印,幽灵还支持调整表格的结构,比如显示居中,设置边框,设置单元格宽度等。

代码也非常简单

//设置宽度table.Width(50);//设置偏移table.Columns[0].PadLeft(3);//设置边框,画个圈table.Border(TableBorder.Square);
复制代码

官方文档里还有更多的案例,大家可以去看一下

  • 动态表格

这个我暂时没有到,但是官方文档给了几个例子,感觉非常酷,录个 Gif 看一下。



FIGlet Text

这个我不知道中文名咋翻译,效果就是做成那种虚线拼成的文字效果,就像这样


使用起来也非常简单

AnsiConsole.Write(    new FigletText("Tony's Box")    .Centered()    .Color(Color.Blue)    );
复制代码

选择

像上面的截图,可以实现选择操作,就像在 Bios 界面里设定参数一样

var cmd = AnsiConsole.Prompt(    new SelectionPrompt<string>()        .Title("以下是工具箱暂时支持的操作?")        .PageSize(10)        .MoreChoicesText("[grey](请选择要执行的操作)[/]")        .AddChoices(new[] {            "1.监听【User_ProgramTypeLink】权限表","2.清除半年前的日志数据", "3.删除指定的索引数据"         }));
复制代码


好了,基本就这些了。晚安!


发布于: 刚刚阅读数: 5
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
一个酷酷的“幽灵”控制台工具_C#_为自己带盐_InfoQ写作社区