Golang下的命令行色彩使用库,拥有丰富的色彩渲染输出,通用的API方法,兼容 Windows 系统
基本颜色预览:
现在,256 色和 RGB 色彩也已经支持 Windows CMD 和 PowerShell 中工作:
- go get github.com/gookit/color
如下,引入当前包就可以快速的使用
- package main
-
- import (
- "fmt"
-
- "github.com/gookit/color"
- )
-
- func main() {
- // 简单快速的使用,跟 fmt.Print* 类似
- color.Redp("Simple to use color")
- color.Redln("Simple to use color")
- color.Greenp("Simple to use color\n")
- color.Cyanln("Simple to use color")
- color.Yellowln("Simple to use color")
-
- // 简单快速的使用,跟 fmt.Print* 类似
- color.Red.Println("Simple to use color")
- color.Green.Print("Simple to use color\n")
- color.Cyan.Printf("Simple to use %s\n", "color")
- color.Yellow.Printf("Simple to use %s\n", "color")
-
- // use like func
- red := color.FgRed.Render
- green := color.FgGreen.Render
- fmt.Printf("%s line %s library\n", red("Command"), green("color"))
-
- // 自定义颜色
- color.New(color.FgWhite, color.BgBlack).Println("custom color style")
-
- // 也可以:
- color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
-
- // internal style:
- color.Info.Println("message")
- color.Warn.Println("message")
- color.Error.Println("message")
-
- // 使用内置颜色标签
- color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n")
- // 自定义标签: 支持使用16色彩名称,256色彩值,rgb色彩值以及hex色彩值
- color.Println("<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>")
-
- // apply a style tag
- color.Tag("info").Println("info style text")
-
- // prompt message
- color.Info.Prompt("prompt style message")
- color.Warn.Prompt("prompt style message")
-
- // tips message
- color.Info.Tips("tips style message")
- color.Warn.Tips("tips style message")
- }
运行 demo: go run ./_examples/demo.go
提供通用的API方法:Print Printf Println Sprint Sprintf
支持在windows cmd.exe powerShell 等终端使用
- color.Bold.Println("bold message")
- color.Black.Println("bold message")
- color.White.Println("bold message")
- color.Gray.Println("bold message")
- color.Red.Println("yellow message")
- color.Blue.Println("yellow message")
- color.Cyan.Println("yellow message")
- color.Yellow.Println("yellow message")
- color.Magenta.Println("yellow message")
-
- // Only use foreground color
- color.FgCyan.Printf("Simple to use %s\n", "color")
- // Only use background color
- color.BgRed.Printf("Simple to use %s\n", "color")
运行demo: go run ./_examples/color_16.go
- // 仅设置前景色
- color.FgCyan.Printf("Simple to use %s\n", "color")
- // 仅设置背景色
- color.BgRed.Printf("Simple to use %s\n", "color")
-
- // 完全自定义: 前景色 背景色 选项
- style := color.New(color.FgWhite, color.BgBlack, color.OpBold)
- style.Println("custom color style")
-
- // 也可以:
- color.Style{color.FgCyan, color.OpBold}.Println("custom color style")
直接设置控制台属性:
- // 设置console颜色
- color.Set(color.FgCyan)
-
- // 输出信息
- fmt.Print("message")
-
- // 重置console颜色
- color.Reset()
当然,color已经内置丰富的色彩风格支持
提供通用的API方法:Print Printf Println Sprint Sprintf
支持在windows cmd.exe powerShell 等终端使用
基础使用:
- // print message
- color.Info.Println("Info message")
- color.Note.Println("Note message")
- color.Notice.Println("Notice message")
- color.Error.Println("Error message")
- color.Danger.Println("Danger message")
- color.Warn.Println("Warn message")
- color.Debug.Println("Debug message")
- color.Primary.Println("Primary message")
- color.Question.Println("Question message")
- color.Secondary.Println("Secondary message")
Run demo: go run ./_examples/theme_basic.go
简约提示风格
- color.Info.Tips("Info tips message")
- color.Note.Tips("Note tips message")
- color.Notice.Tips("Notice tips message")
- color.Error.Tips("Error tips message")
- color.Danger.Tips("Danger tips message")
- color.Warn.Tips("Warn tips message")
- color.Debug.Tips("Debug tips message")
- color.Primary.Tips("Primary tips message")
- color.Question.Tips("Question tips message")
- color.Secondary.Tips("Secondary tips message")
Run demo: go run ./_examples/theme_tips.go
着重提示风格
- color.Info.Prompt("Info prompt message")
- color.Note.Prompt("Note prompt message")
- color.Notice.Prompt("Notice prompt message")
- color.Error.Prompt("Error prompt message")
- color.Danger.Prompt("Danger prompt message")
Run demo: go run ./_examples/theme_prompt.go
强调提示风格
- color.Warn.Block("Warn block message")
- color.Debug.Block("Debug block message")
- color.Primary.Block("Primary block message")
- color.Question.Block("Question block message")
- color.Secondary.Block("Secondary block message")
Run demo: go run ./_examples/theme_block.go
256色彩在 v1.2.4 后支持Windows CMD,PowerShell 环境
- c := color.C256(132) // fg color
- c.Println("message")
- c.Printf("format %s", "message")
-
- c := color.C256(132, true) // bg color
- c.Println("message")
- c.Printf("format %s", "message")
可同时设置前景和背景色
- s := color.S256(32, 203)
- s.Println("message")
- s.Printf("format %s", "message")
可以同时添加选项设置:
- s := color.S256(32, 203)
- s.SetOpts(color.Opts{color.OpBold})
-
- s.Println("style with options")
- s.Printf("style with %s\n", "options")
运行 demo: go run ./_examples/color_256.go
RGB色彩在 v1.2.4 后支持 Windows CMD, PowerShell 环境
效果预览:
运行 demo: Run demo: go run ./_examples/color_rgb.go
代码示例:
- color.RGB(30, 144, 255).Println("message. use RGB number")
-
- color.HEX("#1976D2").Println("blue-darken")
- color.HEX("#D50000", true).Println("red-accent. use HEX style")
-
- color.RGBStyleFromString("213,0,0").Println("red-accent. use RGB number")
- color.HEXStyle("eee", "D50000").Println("deep-purple color")
- c := color.RGB(30,144,255) // fg color
- c.Println("message")
- c.Printf("format %s", "message")
-
- c := color.RGB(30,144,255, true) // bg color
- c.Println("message")
- c.Printf("format %s", "message")
- c := color.HEX("ccc") // 也可以写为: "cccccc" "#cccccc"
- c.Println("message")
- c.Printf("format %s", "message")
-
- c = color.HEX("aabbcc", true) // as bg color
- c.Println("message")
- c.Printf("format %s", "message")
可同时设置前景和背景色
- s := color.NewRGBStyle(RGB(20, 144, 234), RGB(234, 78, 23))
- s.Println("message")
- s.Printf("format %s", "message")
- s := color.HEXStyle("11aa23", "eee")
- s.Println("message")
- s.Printf("format %s", "message")
- s := color.HEXStyle("11aa23", "eee")
- s.SetOpts(color.Opts{color.OpBold})
-
- s.Println("style with options")
- s.Printf("style with %s\n", "options")
支持 在windows cmd.exe PowerShell 使用
使用内置的颜色标签,可以非常方便简单的构建自己需要的任何格式
同时支持自定义颜色属性: 支持使用16色彩名称,256色彩值,rgb色彩值以及hex色彩值
- // 使用内置的 color tag
- color.Print("<suc>he</><comment>llo</>, <cyan>wel</><red>come</>")
- color.Println("<suc>hello</>")
- color.Println("<error>hello</>")
- color.Println("<warning>hello</>")
-
- // 自定义颜色属性
- color.Print("<fg=yellow;bg=black;op=underscore;>hello, welcome</>\n")
-
- // 自定义颜色属性: 支持使用16色彩名称,256色彩值,rgb色彩值以及hex色彩值
- color.Println("<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>")
给后面输出的文本信息加上给定的颜色风格标签
- // set a style tag
- color.Tag("info").Print("info style text")
- color.Tag("info").Printf("%s style text", "info")
- color.Tag("info").Println("info style text")
运行 demo: go run ./_examples/color_tag.go
支持 Rgb, 256, 16 色彩之间的互相转换 Rgb <=> 256 <=> 16
- basic := color.Red
- basic.Println("basic color")
-
- c256 := color.Red.C256()
- c256.Println("256 color")
- c256.C16().Println("basic color")
-
- rgb := color.Red.RGB()
- rgb.Println("rgb color")
- rgb.C256().Println("256 color")
一些有用的工具方法参考
看看这些使用了 https://github.com/gookit/color 的项目:
github 地址:https://github.com/gookit/color