最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

如何寫一個編輯器:緒言

2021-12-28 18:12 作者:clerk_ma  | 我要投稿

在上一篇寫完之后,頸椎和背部的肌肉開始出現(xiàn)不太正常的情況。經(jīng)過幾天的休息之后,基本有所緩解。

即使轉(zhuǎn)頭太難受,也覺得,得寫點東西。就寫一個編輯器吧。前一篇提到的一些算法和編輯器,雖然有一些歷史遺留,但是大抵上還是能重新構(gòu)建出來的。而構(gòu)建出來的東西,實際上是基于TUI的(text-based user interfaces)。這個TUI的典型,就是基于書中提到的VT100終端上面,搞文本操作。


VT100終端

如果舉不太久的例子,那大概可以想象一下DOS下面的一些編輯器的樣子。實際上,我寫完最初版本的,陡然發(fā)現(xiàn)TUI上面的一些操作實際上和畫GUI是一樣的。當(dāng)然,這種一樣,前提是把繪圖作為一種抽象的行為來看,而不是拘泥于實際的繪制差異。


雖然,TUI這種東西的復(fù)古味道比較濃烈,但是在實現(xiàn)編輯器這一個話題上,卻比使用GUI框架還是簡單不少。而且,舉一反三,把TUI的經(jīng)驗遷移到GUI上也并不復(fù)雜。

前幾天(12月25號)發(fā)布的Ruby 3.1.0里面實現(xiàn)了比較復(fù)雜terminal控制(自動補全等)。這里面的東西也算得上是編輯器,但是肯定比本教程要描述的編輯器還是要復(fù)雜很多的。

Ruby的命令行模式

熟悉我的讀者大概知道我是搞TeX的,還是底層開發(fā)的那種。而TeX的概念之中,有一個叫做escape的,通常翻譯成轉(zhuǎn)義字符。我們每天使用的鍵盤上就有個ESC按鍵。自從ASCII編碼創(chuàng)制以來,ESC的作用,多是來發(fā)送指令來執(zhí)行人機交互的。這里面的人機交互比較簡單,比如發(fā)送指令讓程序打開或者保存文件,或者讓屏幕上的文本改變一下樣式(顏色等)。

我們可以運行下面的例子:

輸出大抵如下:

終端輸出

實際上,這段代碼隱藏了很多細節(jié),我們可以直接簡單粗暴地使用:

那么出現(xiàn)的效果實際上是一樣的。

這里面的“\x1b”開始的一串字符,就是之后我們要使用的控制終端輸出的部分。這一串字符串能夠控制的東西很多,比如顏色,鼠標(biāo)模式,光標(biāo)位置。

這里只是一個簡單的介紹,更詳細的控制可以參考維基百科的ANSI?escape?code詞條。

下一篇,講文件的結(jié)構(gòu)。

如何寫一個編輯器:緒言的評論 (共 條)

分享到微博請遵守國家法律
永靖县| 万宁市| 丰原市| 仪陇县| 盘锦市| 杭州市| 清流县| 康马县| 阳曲县| 内乡县| 长宁县| 同德县| 顺昌县| 仁怀市| 巩留县| 偏关县| 临颍县| 建水县| 湾仔区| 晴隆县| 玛纳斯县| 泰来县| 兰考县| 河池市| 从江县| 临夏县| 会宁县| 渭源县| 赤峰市| 长海县| 金山区| 勃利县| 克什克腾旗| 沙田区| 靖宇县| 虹口区| 收藏| 嘉峪关市| 天柱县| 拉萨市| 慈利县|