每日最新頭條.有趣資訊

為什麽老編輯器Vim這麽難用,卻很受歡迎?

白交 發自 凹非寺

量子位 報導 | 公眾號 QbitAI

一個1991年正式發布,如今已經快30歲的「高齡」的代碼編輯器Vim,為何如此受歡迎?

在2019年「StackOverflow」關於最流行的開發環境的調查,Vim仍然排在並列第四位,大約有25%的Web開發人員正在使用它。

而在它之前的,全是2000年以後才出現的代碼編輯器。

Vim除了「高齡」以外,還有一個點也困擾著大家,那就是「難用」。如果你沒用過,你連怎麽退出都不會!

而且這個難用的梗經久不衰。

比如「StackOverflow」有一個近八年之久的問題,活躍度僅在2天前,瀏覽量累計達210萬次。

「如何退出Vim編輯器?」

這個看上去似乎是再簡單不過的問題了,卻依然經久不衰,引發網友熱切討論。

這時候,可能就想問,為何這個Vim這麽難用,還這麽受歡迎?

了解一下它的歷史由來,也許就可以窺見一些原因。

半世紀的積累

最近有一位博主Nikola Đuza,就介紹了Vim是如何開始的——「How Did Vim Become So Popular」。

還記得以前「打孔卡」的時代嗎?將「打孔卡」放入計算機內部從而實現編程。對於這一方式來說,放置他們的順序很重要。

想象一下,這是一張4.5mb數據的照片,堆疊在62500個打孔卡中,然後刪除它,再次對它排序。

但是隨著計算機功能和存儲增長,打孔卡漸漸不能滿足程序員的需求,這時候出現了QED編輯器(ed的前身),由此便進入到了「行編輯」時代。

ed編輯器

ed編輯器是一款經典的行編輯器,由貝爾實驗室開發,1973年正式發布,已經有47年之久,但至今仍然可以使用。

如果你使用的是Linux或Mac OS,打開終端,輸入ed,便可以得到一個簡單的行編輯器。

而如果你要寫入文件,輸入 a並按Enter鍵,就可以開始編寫文本,輸入.退出附件模式。然後寫入文件,可以輸入「w myfile.txt」並按Enter鍵,最後輸入q退出。

而使用Vim的網友,可能就會覺得很熟悉。Vim和ed有很多相似的地方。這篇博主就提到說,如果你會使用Vim,那麽ed就會很快上手。

比如,:q

而在ed之後,便是em。它有「the editor for mortals」(凡人的編輯器)的稱號。

也就是說,em可以跟ed做一樣的事情,但是沒有ed那般神秘,更適合大多數人使用。

Vim的前身——Vi

而隨後基於em代碼,Sun聯合創始人,兼首席科學家Bill Joy開發了ex,算得上是擴展版。它在以往的模式上增加了visual模式,它可以在螢幕上打開文件。

三年之後,作業系統中引入了可執行文件Vi,但仍然可以通過在Vi/Vim訪問ex命令。

是他奠定了今天Vim編輯器的鍵位設計,如果覺得快捷鍵難記,就怪他吧。

當時Bill Joy使用的是下面的鍵盤:esc鍵在現在的tab位置,方向鍵和字母鍵混用,這也就注定了之後Vim怪異的鍵位設計。

vi發布是在1979年,那麽Vim是如何誕生的呢?

Vim的誕生

這還得從Vi發布之後的「模仿」開始,很多人開始模仿、克隆vi編輯器。當時就有這麽一個「Vi Improved」從中脫穎而出。

它是由「Bram Moolenaar」創建,這個人來頭可不小,他還是軟體開發工具A-A-P、編程語言Zimbu的開發者。在使用Vim的人,可能看到過他的名字。

Bram使用了一個名為STEVIE的Vi克隆版,並注意到它缺少許多vi的命令。他在此基礎上增加了一些新的功能,使其與vi兼容,並以 “Vi Improved “的名義發布。

1993年的2.0版本開始使用Vim名字,然後一直這樣沿用至今。

這個幾乎集成了近半世紀智慧與努力的Vim,將大量的精力都放在了兼容性上。

博主也說,也許Vim一些有用的功能讓出名,但是能讓Vim一直都屹立不倒的原因是,它幾乎兼容了所有你能想到的東西。

這也是很多程序員的愛用Vim主要原因。而除了兼容性強的優點,強大的鍵位設計,自行設定快捷鍵等這些都讓Vim成為提升工作效率的絕對利器呀!

讓人又愛又恨

Vim誕生的時候,滑鼠還不是電腦標配,所以Vim盡量為純鍵盤操作而優化。

而後來圖形化界面、滑鼠的普及,讓更過代碼編輯器脫穎而出,配合滑鼠操作學習門檻低,但效率不及Vim老手。

這也是Vim讓人又愛又恨的原因吧。

談到Vim,國內的程序員怎麽看?首先是入門難度大:

用Vim寫接口還行,不過還是需要學習下Vim的快捷鍵,不然太痛苦了。

但是用熟了之後,簡直能把Vim用的飛起:

熟悉了之後確實操作起來很快,特別不喜歡用上下左右鍵。

還有Vim重度使用者來現身說法,真正的Vim高手,是不需要滑鼠的~

就因為喜歡上這種雙手不離鍵盤就可以操控一切的feel ,Vim可以讓我對文本的操作更加精準,高效。

不過,這位網友也提到,對初學者可能不是特別友好,因為Vim有一定的學習成本,只有做到非常熟練才能感受到它帶來的快捷。

如何花式退出Vim?

那麽回到一開始的問題,怎麽退出Vim呢?

不談正經的方法(:q!),有人曾總結了千百種花式退出方法,請看這裡:

天下苦Vim久矣!硬核程序員教你如何花式退出Vim,一周收獲2400星

吐槽歸吐槽,你覺得Vim好用嗎?你在寫代碼的時候又用著哪一款編輯器呢?

獲得更多的PTT最新消息
按讚加入粉絲團