給Console一點顏色-Ansi Escape Codes

薛泰綸 2018/12/24 01:28:58
134

給Console一點顏色-Ansi Escape Codes


簡介

看看無聊的console介面,讓我們跟spring boot 一樣給console多一點顏色吧!

作者

薛泰綸


給Console一點顏色-Ansi Escape Codes

前言
    看久了單一顏色的Console,我們常常不容易找到自己印出來的東西,在Debug的時候總是想快速找到自己Print出來的文字,
這時候Ansi Escape Codes 就可以提供很好的幫助。
在這篇文章裡面我們直接使用Eclipse的Console來顯示顏色。(Ansi Escape Codes一般都是使用在控制台也就是我們的Command Line)
 
環境:
   • Spring Tool Suite  ( Version: 3.9.5.RELEASE )
   • java version 11.0.1 
 
 
Ansi Escape Codes 介紹:
   Ansi Escape Codes最基礎的用途就是讓控制台顯示的文字以富文本的形式輸出,比如設置字體颜色、背景颜色以及各種樣式。
讓我们先来學習如何設置字體颜色,而不用再忍受那枯燥的黑白二色!( )
 
字體顏色:
 
通過Ansi指令(即Ansi Escape Codes)給控制台的文字上色是最為常見的操作。比如:
• 紅色:/u001b[31m
• 重置:/u001b[0m
 
絕大部分的Ansi Codes 都是以/u001b 開頭,馬上用Java來印一段吧!
 
在上面輸出了兩次Hello World 第一次加上了Ansi Codes,所以可以看到字體顏色變成了紅色,
但是在第二次還是紅色,是因為只要改了Ansi Codes 在同一個區域範圍內,就會是改變過後的顏色,所以我們需要給他重置指令,讓它回復原狀。
 
不過比較好的處理方式以及習慣就是在最後再加上重置碼,確保每次都是乾淨的Ansi Codes。如下:
 
這樣輸出就會回復成一樣的顏色,那我們的重置指令其實可以放在任何地方,
這樣就可以很自由的調配顏色了,大家可以自己試試看。
例如:System.out.println("\u001b[31mHello \\u001b[0mWorld");
 
8色:
  我們剛剛介紹了紅色以及重置,基本上所有的控制台都支援以下8種顏色
。黑色:\u001b[30m
。紅色:\u001b[31m
。綠色:\u001b[32m
。黄色:\u001b[33m
。藍色:\u001b[34m
。洋紅色:\u001b[35m
。青色:\u001b[36m
。白色:\u001b[37m
上面把它全部印出來了,可以清楚地看到有8色。
 
256色
•關於字體我們還可以印出更多種不一樣的顏色,部分控制台可以印出256色,那我們這邊也就為大家印出來看一下:
命令碼:\u001b[38;5;{n}m;
           {n}為變數
 
以上就是Ansi Codes 基本上改變文字顏色的方法。
 
當然對於富文本還有更多的效果,我在下面一一列出來,有興趣的人可以自己去嘗試。
 
背景色:
黑色背景:\u001b[40m
红色背景:\u001b[41m
绿色背景:\u001b[42m
黄色背景:\u001b[43m
蓝色背景:\u001b[44m
洋红色背景:\u001b[45m
青色背景:\u001b[46m
白色背景:\u001b[47m
重置背景:\u001b[39m
 
如果要更多顏色的話,命令碼在這:\uoo1b[48;5;{n}m
{n} 為變數。
 
樣式
除了给文本設置颜色之外,我们還可以给文本設置樣式:
 
粗體:\u001b[1m
下底線:\u001b[4m
反色:\u001b[7m
 
不管是Console畫面或是終端機介面,我們都可以用AnsiCode來改變顏色方便閱讀或是DeBug。
 
註:
富文本 : 富文字格式 Rich Text Format )即 RTF格式 ,又稱 多文字格式 ,是由微軟 公司開發的跨平台文件 格式。大多數的文書處理 軟體都能讀取和儲存RTF文件。
薛泰綸