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

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

oeasy教您玩轉(zhuǎn)vim - 48 - # ed由來

2021-09-23 10:13 作者:oeasy  | 我要投稿

范圍控制

回憶上節(jié)課內(nèi)容??

  • 我們這次研究了mark的定義和使用

    • mb定義

    • 'b跳轉(zhuǎn)

    • 可以對marks,查詢刪除

  • 三種marks

    • 小寫 本文件內(nèi)

    • 大寫 跨文件

    • 數(shù)字 配置文件中

  • 甚至可以在行編輯中,使用標(biāo)記

    • 'a,'by從標(biāo)記a的行復(fù)制到標(biāo)記b的行

    • 'a,'bt.把從a到b的行復(fù)制到當(dāng)前位置

    • 'a,'bm$把從a到b的行移動到文檔最后

  • 行編輯模式可真是太方便了!

  • 可是,你知道嗎?

  • 行編輯模式來自于ed

  • 是當(dāng)時的無奈之舉?

  • 怎么回事???

原始狀態(tài)

  • 我們從時間線捋回去,會發(fā)現(xiàn)vi進(jìn)化過程沿著

  • ed->ex->vi->vim

  • 最早來自于貝爾實驗室的Ken Tompson

QED

  • 1966 年,貝爾實驗室聘用了 Ken Thompson

  • Thompson剛剛在加州大學(xué)伯克利分校完成了電氣工程和計算機科學(xué)的碩士學(xué)位在伯克利他使用一個名為 QED 的文本編輯器

  • 該編輯器在 1965 到 1966 年間被開發(fā)用于伯克利分時系統(tǒng)

  • Thompson 到達(dá)貝爾實驗室后做的第一件事就是為麻省理工學(xué)院兼容分時系統(tǒng)重寫 QED

  • 他后來又為 Multics 項目寫了另一個版本的 QED

  • 在重寫過程中,他對程序進(jìn)行了擴(kuò)展

  • 以便用戶可以在文件中搜索某一行,并使用正則表達(dá)式進(jìn)行替換。

開始

與伯克利的分時系統(tǒng)一樣,由麻省理工學(xué)院、通用電氣和貝爾實驗室合作的 Multics 項目試圖創(chuàng)建一個可行的商業(yè)分時操作系統(tǒng)。最終,AT&T 認(rèn)為這個項目毫無進(jìn)展并退出。在沒有分時系統(tǒng)的情況下,Thompson 和貝爾實驗室資深研究員 Dennis Ritchie,開始懷念分時系統(tǒng)所提供的“交互式計算的感覺”,并著手創(chuàng)建他們自己的版本,該版本最終發(fā)展成為 Unix。1969 年 8 月,在妻子和幼子外出去加州度假時,Thompson “給操作系統(tǒng)、shell、編輯器和匯編程序分別分配了一個星期”,將新系統(tǒng)的基本組件組合在一起。

這個編輯器被稱為 ed 。它是基于 QED 的,但并不完全是 QED 的復(fù)現(xiàn)。 Thompson 決定放棄某些 QED 的功能,弱化了對常規(guī)的表達(dá)式的支持,因此 ed 只能理解相對簡單的正則表達(dá)式。QED 允許用戶打開多個緩沖區(qū)同時編輯多個文件,但是 ed 一次只使用一個緩沖區(qū)。QED 可以執(zhí)行包含命令的緩沖區(qū),而 ed 則不能。這些簡化可能是必要的。Dennis Ritchie 曾說過,去掉 QED 的高級正則表達(dá)式是“并不大的損失”。

ed

ed 現(xiàn)在是 POSIX 規(guī)范的一部分,所以如果你有一個符合 POSIX 的系統(tǒng),你的電腦上就安裝了 ed 。現(xiàn)在,許多 ed 命令都是 Vim 的一部分,因此,這就值得擺弄一番了。例如,你必須使用 w 命令來寫入磁盤緩沖區(qū),必須使用 q 命令來退出編輯器。

這兩個命令可以寫在同一行命令中,也就是 wq。edVim 一樣,是一個模態(tài)編輯器;若要從命令模式進(jìn)入輸入模式,取決于你試圖如何轉(zhuǎn)換文本,需使用 insert 命令(i)、append 命令(a)或 change 命令(c)ed 還引入了 s/foo/bar/g 語法來查找和替換文本。

名字由來

ed 名字來自于 editor 編輯器

ed 不允許你編輯開放緩沖區(qū)中那些被其他行圍繞的行,也不允許移動光標(biāo),因為 ed 在每次修改的時候都必須重新打印整個文件。在 1969 年, ed 沒有任何機制來“清除”屏幕上的內(nèi)容,因為”屏幕“就是一張紙,所有已經(jīng)輸出的東西都像是已經(jīng)用墨水打印出來了。在必要的時候,你可以使用列表命令(l)要求 ed 打印出一系列的行,但是大多數(shù)時候,你都是在你看不到的文本上操作。因此,使用 ed 就像是嘗試用一個低電量的手電筒在黑暗房間中摸索。每次你只能看到那么一點兒,所以必須盡最大努力去記住每件東西的位置。

來試試 ed

  • 可以sudo apt install ed

  • 來裝一下 vi 的老祖宗

  • ls -lah > oeasy.txt

  • ed oeasy.txt

  • 1顯示第1

  • 2,5p,顯示25

  • 我們能感覺到顯示器其實是一張紙

  • 這個4,6p命令在vi也能用,含義是print

文本編輯器 em

ThompsonRitchie 來說, ed 已經(jīng)足夠好了。但是其他人則認(rèn)為它很難用,而且它作為一個淋漓盡致地表現(xiàn) Unix 對新手?jǐn)骋獾睦佣裘阎T?1975 年,一個名叫 George Coulouris 的人(這位前輩很神奇,他的爸爸是英國演員,出演過公民凱恩)在倫敦瑪麗皇后學(xué)院的 Unix 系統(tǒng)上開發(fā)了一個改進(jìn)版 edCoulouris 利用他在瑪麗女王學(xué)院的視頻顯示器開發(fā)他的編輯器。與 ed 不同的是,Coulouris 的程序允許用戶編輯在屏幕中的一行代碼,通過一次次擊鍵的方式來操作行(想象一下在 Vim 中每次編輯一行)。 Thompson 拜訪瑪麗女王學(xué)院時,看到 Coulouris 已經(jīng)寫好的程序,駁斥道他不需要在編輯文件的時候看到它的狀態(tài)。受此啟發(fā),Coulouris 將他的程序命名為 em,或者“為凡人而生的編輯器”。the editor for mortals,這也是 em 名字來源。

(George Coulouris)

vi

1976年,Coulourisem 引入了加州大學(xué)伯克利分校,在那里他用了一個夏天的時間在 CS 系訪學(xué)。這是 Ken Thompson 離開伯克利去貝爾實驗室工作十年之后的事了。在伯克利,Coulouris 遇到了 Bill Joy,一名研究生。Coulouris 斯向 Joy 展示了 em, JoyCoulouris 的源代碼為基礎(chǔ),為擴(kuò)展 ed 建立了一個名為 ex 的改進(jìn)版 ed。1978年,1.1 版本的 ex 與第 1 個版本的 BSD Unix 捆綁在一起。ex 在很大程度上與 ed兼容,但它增加了兩種模式:一種“開放”模式,這種模式可以使 em 單行編輯成為可能,還有一種“可見”模式,這種模式會占據(jù)整個屏幕,并且可以像我們今天所習(xí)慣的那樣,對整個文件進(jìn)行實時編輯。

(Bill Joy)

1979 年的第 2 版 BSD 引入了一個名為 vi 的可執(zhí)行文件,它只在可視模式下打開 ex 。vi 名字來自于 visual 可視模式

進(jìn)化

ex/vi (后來稱為 vi)建立了我們現(xiàn)在使用的 Vim 中大多數(shù)的約定,但這些約定當(dāng)時并不是 ed 的一部分。Bill Joy 使用的視頻終端是 Lear Siegler ADM-3A,它的鍵盤沒有光標(biāo)鍵。而是,h、j、k 和 l 鍵上繪制光標(biāo)鍵,所以 Bill Joy 在vi 中就使用這些鍵來進(jìn)行光標(biāo)移動。ADM-3A 鍵盤上 escape 鍵位置是今天我們所使用的鍵盤上的 tab 鍵,這也就解釋了為什么這樣一個難以夠著的鍵會被用來實現(xiàn)像退出當(dāng)前模式這么常見的操作。前綴命令的 :字符同樣也來自 i,它在常規(guī)模式下(即運行 ex 進(jìn)入的模式)使用 : 作為提示。這解決了一個 ed 中被長期詬病的問題,也就是一旦啟動之后,沒有任何反饋信息向用戶致以問候。在可見模式下,保存和退出需要使用現(xiàn)在仍在使用的經(jīng)典 wq。“Yanking”和“putting”、標(biāo)記、以及用于設(shè)置選項的 set 命令都是原始 vi 的一部分。我們今天在 Vim 中使用的的基本文本編輯過程,都是 vi 中使用的特性。

vi 是除 ed 之外唯一與 BSD Unix 捆綁的文本編輯器。在那個時候,Emacs 可能會花費數(shù)百美元(這是在 GNU Emacs 之前),所以 vi 變得非常流行。但是 vied 的直接衍生版本,這意味著如果沒有 AT&T 的源代碼,源代碼就不能被修改。這促使一些人創(chuàng)建了 vi 的開源版本。 STEVIE (專門為 VI 愛好者的 ST 編輯器)出現(xiàn)于1987年,Elvis 出現(xiàn)于 1990 年,nvi 出現(xiàn)于 1994 年。其中一些克隆版本添加了額外的功能,如語法高亮和窗口分離。尤其是 Elvis ,它的許多功能被整合到 Vim 中,因為許多 Elvis 用戶推動了這些功能的加入。)

緣起

“Vim”現(xiàn)在是“改進(jìn)版 Vi”的縮寫,而最初代表的是“模擬版 Vi”。和其他許多“vi克隆版本”一樣,Vim 始于在一個無法使用 vi 的平臺上復(fù)現(xiàn) vi 的一個嘗試。在荷蘭 Venlo 一家影印公司工作的軟件工程師 Bram Moolenaar 想要為他全新的 Amiga 2000 準(zhǔn)備一款類似于 vi 的編輯器。Moolenaar 已經(jīng)習(xí)慣了在大學(xué)時使用的 Unix 系統(tǒng)上的 vi ,當(dāng)時他 已經(jīng)對 vi 了如指掌。所以在 1988 年,Moolenaar 使用當(dāng)時的 STEVIE vi 克隆版本開始工作。


(Bram Moolenaar,2006 年加入 Google)

Moolenaar 接觸到 STEVIE 緣于其曾經(jīng)出現(xiàn)在一個叫 Fred Fish 的磁盤上。Fred Fish 是一名美國程序員,每個月都會寄出一張軟盤,內(nèi)含為 Amiga 平臺提供的精選可用開源軟件。有點類似于國內(nèi)曾經(jīng)的軟件指南。任何人只要支付郵費就可以得到一張這樣的磁盤。有若干版本的 STEVIE 曾在 Fred Fish 磁盤上發(fā)布。Moolenaar 使用的 STEVIE 版本在 Fred Fish 256 號磁盤上發(fā)布。(令人失望的是,Fred Fish 磁盤似乎與 Freddi Fish 海底大冒險游戲 沒有任何關(guān)系。)

Moolenaar 喜歡 STEVIE,但很快就注意到其缺失了很多 vi 命令。因此,在第一次發(fā)布 Vim 時,Moolenaar 優(yōu)先考慮了 vi 的兼容性。當(dāng)時已經(jīng)有其他人編寫了一系列的 vi 宏,當(dāng)運行一個合適的 vi 兼容編輯器時,可以求解一個隨機生成的迷宮。Moolenaar 能夠讓這些宏在 Vim 中運行。1991年,VimVi模擬 為名第一次發(fā)布于 Fred Fish 591 號磁盤。Moolenaar 添加了一些特性(包括多級撤銷和解決編譯器錯誤的“quickfix”模式),這意味著 Vim 已經(jīng)完成了對 Vi 的超越。在 1993 年通過 FTP 發(fā)布 Vim 2.0 之前,Vim 都仍以 Vi模擬 的身份存在。

從vi到vim

在眾多互聯(lián)網(wǎng)合作者的幫助下,Moolenaar 穩(wěn)健地在 Vim 中加入了一些功能。Vim 2.0 引入了對 wrap 選項的支持,以及對長行文本進(jìn)行水平滾動的支持。受到了 vi克隆nvi 的啟發(fā),Vim 3.0 增加了對分割窗口和緩沖區(qū)的支持。Vim 現(xiàn)在還將每個緩沖區(qū)保存到交換文件中以避免程序崩潰造成文件丟失。Vim 支持語法高亮顯示,第一次出現(xiàn)是在 Vim 5.0 中。與此同時,Vim 的受歡迎程度也在不斷增長。它被移植到 MS-DOS、 WindowsMac,甚至被移植到 Unix 與原來的 vi 競爭。

2006 年,VimLinux Journal 讀者評為最受歡迎的編輯器。如今,根據(jù) 2018 年 Stack Overflow 的開發(fā)者調(diào)查,Vim 是最受歡迎的文本模式(即終端模擬器)編輯器,受用于 25.8% 的軟件開發(fā)人員(和 40% 的 Sysadmin / DevOps 人員)。在 1980 年代末和整個 1990 年代,程序員一度發(fā)起了“編輯器戰(zhàn)爭”,將 Emacs 用戶與 vi (即最終的 Vim )用戶進(jìn)行了對比。雖然 Emacs 肯定仍有一些追隨者,但有些人認(rèn)為編輯器戰(zhàn)爭已經(jīng)以 Vim 獲勝而結(jié)束。2018年 Stack Overflow 的開發(fā)者調(diào)查顯示只有 4.1% 的受訪者使用 Emacs,也驗證了這個事實。

Vim 是如何變得如此成功的?顯然,人們喜歡 Vim 所提供的特性。但我認(rèn)為,Vim 背后的悠久歷史表明了它的優(yōu)勢遠(yuǎn)不僅僅體現(xiàn)在其功能集上。Vim 的代碼庫可以追溯到 1988 年,當(dāng)時 Moolenaar 開始研究它。

某種程度上要感謝 Bill Joy 和 Bram Moolenaar 對向后兼容性非比尋常的關(guān)注,才使好的想法逐漸積累起來。從這個意義上說, vim文本編輯器 是運行時間最長、最成功的開源項目之一,得益于計算機世界中一些最偉大的思想貢獻(xiàn)。我不認(rèn)為“創(chuàng)業(yè)公司無視所有先例來創(chuàng)造顛覆性的新軟件”的開發(fā)方式都是不妥的,但 Vim 提醒我們,這種協(xié)作和增量的方式同樣能產(chǎn)生奇跡。

總結(jié)

  • 我們這次研究 vim 的歷史

  • 為什么會有行編輯器這種東西

  • 竟然是當(dāng)年

  • 沒有顯示器只有紙的時代的無奈之舉

  • vim 進(jìn)化到今天,依然還有好多人使用

  • 而且 ssh 的時候直接 vim 就很方便

  • 命令行還有什么好玩的么???

  • 下次再說 *
    [Github地址] (https://github.com/overmind1980/oeasyvim)
    [Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
    [藍(lán)橋?qū)嶒灅?邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)


oeasy教您玩轉(zhuǎn)vim - 48 - # ed由來的評論 (共 條)

分享到微博請遵守國家法律
策勒县| 工布江达县| 荔波县| 赤水市| 临桂县| 三门峡市| 金门县| 恩施市| 象山县| 准格尔旗| 千阳县| 广水市| 宁波市| 花莲县| 揭东县| 庄河市| 绵竹市| 东台市| 白银市| 利辛县| 乐东| 东至县| 东明县| 沙雅县| 梨树县| 天峨县| 宁蒗| 莆田市| 衢州市| 赫章县| 屏山县| 天气| 黄浦区| 二手房| 西宁市| 临江市| 当涂县| 高要市| 毕节市| 汤阴县| 河南省|