1.多彩终端1.多彩终端

goer ... 2022-01-10 Golang
  • Golang
大约 1 分钟

多彩终端

[toc]

# 多彩终端

打字机TTY -> VT100 -> VT100控制码

控制符是 \033 或 \e 打头(即 ESC 的 ASCII 码)用输出字符语句来输出。

# VT100控制符

\033[0m    // 关闭所有属性
\033[1m    // 设置为高亮
\033[4m    // 下划线
\033[5m    // 闪烁
\033[7m    // 反显
\033[8m    // 消隐
\033[nA    // 光标上移 n 行
\033[nB    // 光标下移 n 行
\033[nC    // 光标右移 n 行
\033[nD    // 光标左移 n 行
\033[y;xH  // 设置光标位置
\033[2J    // 清屏
\033[K    // 清除从光标到行尾的内容
\033[s    // 保存光标位置
\033[u    // 恢复光标位置
\033[?25l  // 隐藏光标
\033[?25h  // 显示光标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# \033[30m – \033[37m 为设置前景色

30: 黑色
31: 红色
32: 绿色
33: 黄色
34: 蓝色
35: 紫色
36: 青色
37: 白色
1
2
3
4
5
6
7
8

# \033[40m – \033[47m 为设置背景色

40: 黑色
41: 红色
42: 绿色
43: 黄色
44: 蓝色
45: 紫色
46: 青色
47: 白色
1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
	fmt.Printf("\x1b[4;30;46mhello golang\x1b[0m")
}

1. \x1b[ :控制序列导入器
2. 4;30;46:由分号分隔的参数。4 表示下划线,30 表示设置前景色黑色,46 表示设置背景颜色青色
3. \x1b[0m 包含 0m用来表示清除显示属性
1
2
3
4
5
6
7
8
9
10
11
// 简单打印颜色
package main
import (
	"fmt"
)

func main() {
	fontColor()
	fmt.Println("----------------")
	bgColor()
}
func fontColor() {
	for i := 1; i < 8; i++ {
		color := i + 30
		fmt.Printf("\x1b[5;%dm hello go \x1b[0m\n", color)
	}
}

func bgColor() {
	for i := 0; i < 9; i++ {
		color := i + 30
		bgcolor := 47 - i
		fmt.Printf("\x1b[%d;%dm hello world \x1b[0m\n", bgcolor, color)
	}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

\x1b[5m 5的确在linux是闪烁的