跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 ANSI跳脫序列 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
ANSI跳脫序列
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''ANSI 跳脫序列(ANSI escape sequences)'''是一種𤆬內訊號的跳脫序列標準,用佇咧控制影片文字總是上的游標位置、色水佮其他的選項。佇文字去中嵌入確定的位元組序列,大部份以 ` ESC ` 跳脫字元和 " [ " 字元開始,終端會共遮的位元組序列解說做相應的指令,毋是普通的字元編碼。 ANSI 序列是佇二十世紀七十年代引入的標準,用取代特定於終端供應商的序列,並且佇二十世紀八十年代早期開始佇電腦裝置市場上廣泛使用。佮早期欠缺游標移動功能的系統比起來,新生的電子公告板系統使用 ANSI 序列改進其顯示。正是因為這个原因,ANSI 變成所有的製造商共同採用的標準。 佇彼个二十一世紀,就算講硬體文字終端已經愈來愈少矣,猶毋過 ANSI 標準猶原存在,因為大多數的終端模擬器會對部分 ANSI 跳脫序列進行解說。一个值得注意的例外是,佇咧微軟仔 Windows 十更新 TH 無進前,Windows 作業系統的 Win 三十二控制台是無支援 ANSI 跳脫序列的。 ==歷史== 上代先,強欲每一个影片終端製造商攏各自添加特定的跳脫序列用佇執行一寡特殊操作,譬如講共游標置佇螢幕頂懸的某一个位置。比如講伊,VT 五十二終端允准通過傳送 ` ESC ` 字元、` y ` 字元,後壁綴著兩个等於 x , y 位置的數值加上三十二字元(這是為著對 ASCII 空格字元開始,並避開控制字元), 將游標囥佇螢幕頂懸 x , y 位置。 因為遮的序列對無仝款的總是並無仝款,所以人不得不開發一寡複雜的庫(比如講 termcap)佮實用的程式(比如講 tput), 以便程式會當使用仝一套 API 應對各種的尾仔。另外咧,佇真濟終其尾需要藉助字元的二進位值傳送數字(如行佮列)。 對某來講的程式語言,佮內部無使用 ASCII 的系統來講,共數字轉換做正確的字元定定是有困難的,甚至完全做袂到。 ANSI 標準試圖解決遮的問題。標準制訂做一種所有終端共享的指令集,並要求用 ASCII 的數字傳遞所有數值資訊。該系列的頭一个標準是一九七六年通過的 ECMA 被四十八。伊是一系列字元編碼標準的延續,其中第一个是對一九六五年的 ECMA ma六,一个七个標準,ISO 六百四十六就源自此標準。「ANSI 跳脫序列」的名會當追溯到一九七九年 ANSI 採用 ANSI X 三孵六四。此外,ANSI X 三 L 二委員會佮 ECMA 委員會 TC 一合作制定一个強欲一模一樣的標準。以上兩个標準合併為 ISO 六千四百二十九的國際標準。一九九四年,ANSI 取消矣其標準,之支援國際標準。 第一个支援這个標準的流行影片終端是一九七八年推出的 Digital VT 一百。這个終端佇咧市場上非常成功,引發各種各樣的仿製品,其中上早佮上時行的是一九七九年的 Zenith Z 鋪十九。其他品牌閣有 Qume QVT 學一百空八,Televideo TVI 被九百七十,Wyse WY 交九十九 GT。另外咧,誠濟其他品牌的終端嘛無仝款程度相容揀會著的「VT 一百」、「 VT 一百空三」抑是「ANSI」模式。隨著愈來愈濟的軟體(尤其是 BBS 系統)普及,愈來愈濟的軟體依賴跳脫序列起作用,致使大部份攏會當有新的終端佮終端模擬器攏有支援佇遮標準。 一九八一年,ANSI X 三-c六四予美國政府採取(FIPS 八十六)。 後來,美國政府停止複製行業標準,所以乎 FIPS 八十六閣予人撤轉去矣。 ECMA 被四十八已經經歷過幾若擺的換代,目前是對一九九一年開始的第五版。伊嘛被 ISO 和 IEC 用作標準'''ISO / IEC 六千四百二十九'''。 ==平台支援== ===類 Unix 系統佮 AmigaOS=== 隨著諸多 BBS 佮線頂服務廣泛使用 ANSI,到二十世紀八空年代中期,ANSI 強欲得著全平台支援。就算真濟作業系統佇咧標準文字輸出中愈來愈多地支援 ANSI,但是大多數的情形下 ANSI 支援是由終端模擬器完成的(比如講 Unix / Linux 上的 xterm、GNOME 終其尾、Konsole,MacOS 上的 OS X Terminal 抑是 ZTerm,以及 IBM PC 上的真濟通信程式)。 Unix 和 AmigaOS 攏咧作業系統內面包含著矣著 ANSI 的一寡支援,所以佇遮的平台上執行的程式廣泛使用 ANSI。類 Unix 作業系統會當通過像 termcap 和 curses 函式庫啥物款的庫來生成 ANSI 代碼,真濟軟體使用遮的庫升級的顯示方式。遮的庫嘛應該支援非 ANSI 終其尾,但是這馬足少有人咧試,所以足可能已經無法度振動矣。足濟遊戲佮 shell 指令碼直接輸出 ANSI 序列(親像彩色的提示資訊), 所以無法度通佇遮支援 ANSI 的終端上執行。 AmigaOS 毋但支援輸出到螢幕頂的文字使用 ANSI 序列,閣支援印表機驅動程式使用 ANSI 序列(需要 AmigaOS 的專有擴充,這會共𪜶轉換做佮特定印表機實際通信所需要的代碼)。 就算講 ANSI 足普遍的,煞並無得著全平台支援。比如講原始的「經典」Mac OS 就無內建著 ANSI 的支援,閣比如講 Atari ST 使用的是 VT 五十二改編的命令系統,需要用一寡擴充程式來支援色水的顯示。 ===Windows 和 DOS=== MS-DOS 一 . x 無支援 ANSI 抑是任何其他的跳脫序列,干焦少數控制字元(BEL、CR、LF、BS)會當由底層 BIOS 解說,所以可能強欲無可能會做任何全螢幕應用程式。所有的顯示講效果攏著愛通過 BIOS 搧叫,抑是直接控制 IBM PC 硬體來完成,呼叫速度非常的慢。 DOS 二鋪零引入去添加裝置驅動程式來支援 ANSI 跳脫序列的功能(事實上的標準是 ANSI . SYS,但是嘛使用矣 ANSI . COM、NANSI . SYS 和 ANSIPLUS . EXE 等其他程式。因為踅過矣 BIOS,所以這个程式的速度比以前欲快袂少)。 毋過因為實際執行的速度猶是較慢,猶閣有預設並無安裝,所以嘛是罕得著利用。應用程式往往猶是繼續用直接控制硬體的方式來顯示所需要的文字。ANSI . SYS 和類似的驅動程式繼續佇咧 Windows 九 x 食頭路,一直到 Windows Me,佇咧 NT 衍生系統當中用於在 NTVDM 下執行的十六位元傳統程式。 Win 三十二控制台完全無支援 ANSI 跳脫序列。毋過有一寡控制台的替代品或者是附加軟體具有解說程式輸出的 ANSI 跳脫序列的功能,比如講 JP Software 的 TCC(較早的四 NT)、 Michael J . Mefford 的 ANSI . COM、Jason Hood 的 ANSICON 和 Maximus 五的 ConEmu。有一个 Python 軟體套佇內底解說了列印文字中的 ANSI 跳脫序列,共𪜶轉換做系統呼叫來操縱色水佮游標位置,通好予閣較容易咧用 ANSI 的 Python 代碼徙入去到 Windows。 二空一六年,佇咧 Windows 十發布「Threshold 二」時,微軟開始佇咧控制台應用程式中支援 ANSI 跳脫序列,會當對 Unix 徙栽軟體抑是遠端的存取 Unix 變閣較容易。這是佮 Windows Subsystem for Linux 做伙完成的,允准基於終端的類 Unix 軟體咧 Win 三十二控制臺中使用跳脫序列。二空一九年,軟勢捒出矣 Windows Terminal,並且當咧用替換掉 Win 三十二控制台 ==跳脫序列== 序列具有無仝的長度。所有序列攏以 ASCII 字元 `'''ESC'''`(二十七 / 十六進位零 x 一 B)一開頭,第二个位元組則是零 x 四十–零 x 五 F(ASCII ` @ A–Z [\] ^ _ `)範圍內的字元。 標準規定,佇咧八个元環境內底,這兩个位元組的序列會當合併做零 x 八十追零 x 九 F 範圍內的單位元組(詳細就請參閱 C 一控制字元集)。 猶毋過,佇現代裝置頂懸,遮的代碼通常用著其他目的,比如講 UTF 鋪八的一部份抑是 CP 仙一千兩百五十二字元,並無使用這款合併的方式。 除 ESC 以外的其他 C 空代碼(通常是 BEL,BS,CR,LF,FF,TAB,VT,SO 和 SI)佇咧輸出的時陣嘛可能會產生佮某一寡控制序列相𫝛的效果。 揤佇這个鍵盤頂懸的特殊鍵,以及輸出 xterm CSI、DCS 抑是 OSC 序列,定定用佇產生對總端傳送到電腦的 CSI,DCS 抑是 OSC 序列,親像使用者使用鍵盤輸入的仝款。 ==CSI 序列== CSI 序列由 ` ESC [ `、若是干個(包括無)「 參數位元組」、若是干個「中央位元組」,以及一个「最終位元組」組成。各部份的字元範圍如下: 所有捷看的序列攏只是共參數用作系列分號分隔的數字,如 ` 一 ; 二 ; 三 `。欠缺的數字就是對零(如 ` 一 ; ; 三 ` 等於是中央的數字就是零,` ESC [ m ` 按呢無參數的情形對參數是非常的零)。 某一寡序列(如 CUU)共零看做一改,來使欠缺參數的情形下有意義。 一部份字元定義是「私有」的,通好終端的製造商會當插入去𪜶家己的序列毋是標準相衝突。包括參數位元組 ` <=> ? ` 的使用,抑是終位元組零 x 七十–零 x 七 F(` p–z { | } ~ `)比如講 VT 三百二十序列 ` CSI ? 二十五 h ` 和 ` CSI ? 二十五 l ` 的作用是拍開佮關掉游標的顯示。 當 CSI 序列有超出零 x 二十–零 x 七 E 範圍的字元時,其實是未定義的。遮的非法字元包括 C 零控制字元(範圍零–零 x 一 F)、 DEL(零 x 七 F), 以及高位元組。 ==選擇圖形再現(SGR)參數== ==色水== ===四分之三位元=== 初初的規格干焦有八種色水,只予𪜶的名。SGR 參數三十五三十七選擇前景色,四十五十七選擇背景色。不止仔濟的尾溜將「粗體」(SGR 代碼一)實現為閣較光的色水毋是無仝款的字型,對提供八種以外的前景色,但是通常的情況下並無法度用背景色,雖然有當時仔反顯(SGR 代碼七)會當允准按呢。比如講:佇白色的背景頂懸顯示烏色的文字使用 ` ESC [ 三十 ; 四十七 m `,顯示紅色的文字用 ` ESC [ 三十一 m `,顯示明亮的紅色文字用 ` ESC [ 一 ; 三十一 m `。重新設替預設色水用 ` ESC [ 三十九 ; 四十九 m `(某一寡終端無支援), 重設所有的屬性用 ` ESC [ 零 m `。後來的終端新增加功能,會當直接用九十學九十七佮一百石一百空七指定「光明」的色水。 硬體開始使用八位元 DAC 時,加一个軟體為遮的色水名稱分配著二十四位元的代碼。下跤的圖表顯示講傳送到 DAC 的一寡定用硬體佮軟體的值。 ===八位元=== 隨著兩百五十六色走揣表咧顯示卡上愈來愈捷看,相應的跳脫序列嘛增加,以對預定義的兩百五十六種色水內底選擇: ` ` ` ESC […三十八 ; 五 ; < n >…m 抹著前景色(n 是下表中的一种) ESC […四十八 ; 五 ; < n >…m 鋪排背景色零-七:鋪准鋪色(仝 ESC [ 三十–三十七 m) 八-十五:高壓允色(仝 ESC [ 九十–九十七喔 m) 十六刣兩百三十一:六 × 六 × 六立方(兩百十六色): 十六 + 三十六 × r + 六 × g + b ( 零 ≤ r , g , b ≤ 五 ) 兩百三十二石頭兩百五十五:抹烏到白的二十四抹灰度色 ` ` ` ITU 的 T . 四百十六資訊科技-來開放文件體系結構(ODA)佮交換格式:字元內容體系結構使用「:」做分隔符: ` ` ` ESC […三十八 : 五 : < n >…m 抹著前景色(n 是下表中的一种) ESC […四十八 : 五 : < n >…m 鋪排背景色 ` ` ` ===二十四位元=== 隨著十六位元到二十四位元色的「真彩色」顯示卡的普及,Xterm、KDE 的 Konsole,以及所有基於 libvte 的終端(包括講 GNOME 終其尾)支援矣 ISO 增加八千六百十三分之一的二十四位元前景色佮背景色的設定。 ` ` ` ESC […三十八 ; 二 ; < r > ; < g > ; < b >…m 鋪排 RGB 前景色 ESC […四十八 ; 二 ; < r> ; < g > ; < b >…m 鋪排 RGB 背景色 ` ` ` 做為 ISO / IEC 國際標準八千六百十三分之六採用的 ITU 的 T . 四百十六資訊科技-來開放文件體系結構(ODA)佮交換格式:字元內容體系結構共出一个若親像無啥受支援的替代版本: ` ` ` ESC […三十八 : 二 : < Color-Space-ID > : < r > : < g > : < b > : < unused > : < CS tolerance > : < Color-Space : 零=" CIELUV " ; 一=" CIELAB " > m 鋪排 RGB 前景色 ESC […四十八 : 二 : < Color-Space-ID > : < r > : < g > : < b > : < unused > : < CS tolerance > : < Color-Space : 零=" CIELUV " ; 一=" CIELAB " > m 鋪排 RGB 背景色 ` ` ` 請注意,遮有使用矣保留的「:」字元來分隔轉手選項,這有可能是佇咧實際實現中造成透濫的始作弊者。伊閣使用「三」成做第二个參數來指定使用青-品紅-黃方案的方案,「 四」用佇青-品紅-黃-烏的方案,後者使用頂懸標記做「unused」(「 沒使用」)的位置做烏色的組件。 猶閣注意,真濟辨識「:」作為分隔符的實現錯誤地忽視了色彩空間識別碼參數,並且因此改變部份的位置。 ==範例== ` CSI 二 J `—清除螢幕、(佇某一寡裝置頂懸)共游標置佇咧 , 一位置(倒上角)。 ` CSI 三十二 m `—使文字呈綠色。佇咧 MS-DOS 上,一般綠色是暗淡的綠色,會用得 ` CSI 一 m ` 啟用粗體使其變明顯的綠色,或者是將兩个合做伙 ` CSI 三十二 ; 一 m `。MS-DOS ANSI . SYS 用粗體狀態使字元變予光,閃爍狀態(通過 ` INT 十 , AX 一千空三 h , BL 零 h ` ) 背景色變明顯的模式。MS-DOS ANSI . SYS 並無直接支援 SGR 代碼九十–九十七佮一百–一百空七。 ` CSI 零 ; 六八 ; " DIR " ; 十三 p `—重新分配 F 十鍵的功能為傳送字串「DIR」佮回車字元到鍵盤強欲取中,佇咧 DOS 命令列里會顯示早當時 kha-tá-lok-guh 的內容(干焦 MS-DOS ANSI . SYS)。 這个序列有當時仔用佇「ANSI 炸彈」。 這是一个私用編碼(如字母 p 所示), 用非標準的擴充使其包括一字捾參數。若準照標準,會認為講字母 D 是序列的尾仔。 ` CSI s `—儲存游標的位置。用序列 ` CSI u ` 會共游標重鋪起來這个位。假使較早的游標位置是七(y)、 十(x)。 序列 ` CSI s ` 會儉這兩个數值。這馬會當共游標徙動到其他的位置,比如用序列 ` CSI 二十 ; 三 H ` 抑是 ` CSI 二十 ; 三 f ` 共游標徙動到二十(y)、 三(x)。 這馬若用序列 ` CSI u `,泅標會轉到七(y)、 十(x)。 某一寡終端需要使用 DEC 序列 ` ESC 七 ` / ` ESC 八 `,遮得著閣較廣泛的支援。 ===使用 Shell 指令碼的範例=== ANSI 轉移代碼定定用 UNIX 佮類 UNIX 終其尾,以提供語法突顯功能。比如講,佇咧相容的終端頂懸,以下 ls 命令揤類型對檔案佮 kha-tá-lok-guh 的名稱進行色水編碼。 ` ` ` ls--color ` ` ` 使用者會當佇指令碼中使用跳脫碼,將其做標準輸出抑是標準錯誤輸出的一部份。比如講,下跤的 GNU sed 命令通過反顯「WARN」開頭的單詞的行為,佮使用暗紅色背景色佮光黃色前景色顯示以「ERR」起頭的單詞(字母大細寫予人無注意著)的行來修削 make 命令的輸出。突出顯示矣設定 ANSI 代碼的部份。 ` ` ` make 二 > & 一 | sed-e's / . \ * \ bWARN . \ * / \ x 一 b [ 七 m & \ x 一 b [ 零 m / i'-e's / . \ * \ bERR . \ * / \ x 一 b [ 九十三 ; 四十一 m & \ x 一 b [ 零 m / i' ` ` ` 以下 Bash 函式會予終端閃爍爍(通過交替傳送反相佮正常顯示模式代碼), 一直到使用者照下任意鍵。這个函式會當用於做一个傷長的命令總止時提醒使用者,用法如 ` make ; flasher `。 ` ` ` flasher ( ) { while true ; do printf \ \ e [ ? 五 h ; sleep 空七一 ; printf \ \ e [ ? 五 l ; read-s-n 一-t 一 & & break ; done ; } ` ` ` 下跤這个命令會當重控制台,類似現代 Linux 系統的 ` reset ` 命令。毋過,就算是以前的 Linux 系統佮其他(非 Linux)UNIX 變體上,應該嘛會當提起來做。 ` ` ` printf \ \ 三十三 c ` ` ` ==參見== * 控制字元 ==註跤== ==參考資料== ==外部連結== * Standard ECMA 被四十八 , Control Functions For Coded Character Sets . ( _ 五 th edition , June 一千九百九十一 _ ) , European Computer Manufacturers Association , Geneva 一千九百九十一 ( also published by ISO and IEC as standard ISO / IEC 六千四百二十九 ) * vt 一百 . net DEC DocumentsArchive . is 的存檔,存檔日期兩千空一十三五二孵二十二 * ANSI . SYS--ansi terminal emulation escape sequences . [二千空一十八孵一孵十二] .(原始內容存檔佇兩千空六鼻二鋪六). * Xterm / Escape Sequences * AIXterm / Escape Sequences * A collection of escape sequences for terminals that are vaguely compliant with ECMA 被四十八 and friends . * ANSI Escape Sequences * ITU-T Rec . T . 四百十六 ( 九十三分之三 ) Information technology–Open Document Architecture ( ODA ) and interchange format : Character content architectures [[分類: 待校正]]
返回到「
ANSI跳脫序列
」。