讓 Sublime Text 正確處理 ANSI 編碼,顯示 ANSI 顏色 | ANSI escape sequences

這邊文章稍微紀錄與分享一下,因為我自己本身習慣使用 Sublime 這個文字編輯器,先前有遇到要將利用 ANSI 編碼顯示顏色的內容儲存起來用 Sublime Text 開啟,但因為 Sublime Text 本身沒有支援處理 ANSI 編碼,所以就會看到一堆原始內容,像是亂碼一樣,閱讀上面較難看。所以就利用了一些小工具來輔助。

這邊用的是 Sublime 當中的 ANSIescape 這個 Package,開啟 Sublime 後,直接到 Preferences -> Package Control 中選擇 Install Package(或者用快捷鍵Ctrl + Shift + P),然後尋找到 ANSIescape 進行安裝即可。 官方的 Github 如下:https://github.com/aziz/SublimeANSI

我先從頭說明一下整個脈絡,首先假設我在 Kali Linux 上針對一個網站利用 sslscan 這個工具進行掃描測試,這邊以公開的可測試網站 https://demo.testfire.net/ 為例,可以看到測試的結果如下:

上面的結果圖為 Linux 中 Terminal 顯示的結果,可以看出顯示的結果是彩色的,在閱讀上對於需要注意的地方會比較直觀。但如果我直接將結果轉存至檔案當中再利用 Sublime 開啟的話,則顯示的結果如下:

# 儲存結果與開啟檔案
sslscan demo.testfire.net > sslresults
subl sslresults 

上面的結果圖為利用 Sublime 開啟後顯示的結果,可以看出顯示的結果不是彩色的,而且還充滿了一堆像是亂碼的東西,那個其實就是剛剛在顯示顏色時的 ANSI 編碼,上面的這種情況會讓我們在閱讀困難許多。那如果我希望能夠將這個 ANSI 編碼正確地處理顯示成原本的顏色,則可以利用我們剛剛所安裝的 ANSIescape。 ANSIescape 安裝完成之後,在 Sublime 選單中的 View -> Syntax 當中應該就會有多出現一個 ANSI,我們可以選擇該 ANSI 語法,Sublime 的顯示結果就會正確地幫我們進行處理,顯示的結果就會如下:

以上就能夠成功達到我要的目的,讓 Sublime 顯示的結果與 Linux Terminal當中的一樣具有顏色。

當然,以上只是其中一種場景,也有可能會有其他的情況會有需要的利用 ANSI 的。以生活中的例子來說,最常見到的應該就是 PTT,如果長期使用 PTT 或是以前有用過其他 BBS 的人,可能多少都會知道,其實 BBS 當中的顏色呈現就是利用 ANSI,所以也常常會看見一些 ANSI 的繪圖神作。以下面的一個網友所繪製的鬼滅之刃,伊之助與胡蝶忍的繪圖,如果是利用 BBS 相關閱讀軟體所開啟,當你針對內容點選右鍵時,可以發現要複製的話,會有「複製」與「複製(包含ANSI顏色)」兩種選項,我們可以選擇後者將其複製給貼到 Sublime。

來源:https://www.ptt.cc/bbs/C_Chat/M.1588334148.A.2C3.html

當貼到 Sublime 之後可以看到呈現如下的亂碼,其實也就是一樣因為都是 ANSI 內容,沒有將其正確的利用 ANSI 編碼處理,所以我們一樣可以利用上述的步驟將 Syntax 修改成 ANSI,就會稍微看起來比較正常,不過在這個案例中效果似乎不是非常顯著就是了。

如果對於整個 ANSI 有更多興趣的話,可以搜尋 ANSI escape sequences 或 ANSI escape code 去察看更多資料。

發佈留言