作者 | 王啟隆
昨日,Vim 項目的 BDFL、Vim 之父 Bram Moolenaar 的家人發佈訃告,為全世界開發者帶來了一個悲傷的訊息——「我們懷著沉重的心情通知您,Bram Moolenaar 於 2023 年 8 月 3 日離世。」
Moolenaar 享年 62 歲,死於「在過去幾周內病情迅速惡化」。

任何使用過 Vim 的人都了解 Moolenaar 有多麼慷慨。Moolenaar 在幾十年前率先提出了慈善軟體的概念,並在世界範圍內大力普及。直到今天,Vim 使用者仍然可以通過鍵入命令 :help Uganda 或 :help ICCF 來查看許可證,每個註冊捐贈至少 10 歐元的 Vim 使用者和贊助商將能夠投票支持新功能。
「Vim 是慈善軟體,」Moolenaar 在其開創性許可證中寫道。「你可以隨意使用和複製它。」

就在去年 2 月 20 日,Vim 項目的重要維護者 Sven Guckes 在柏林去世。Moolenaar 當時還發布了一封郵件以表痛失知音,並宣佈要將 Vim 的下一個大版本 9.0 獻給這位摯友。

令人惋惜的是,Moolenaar 也在今年隨友人共謝人間。這對整個開發社區來說是一個沉重的損失,在僅僅一個月之前,Moolenaar 還在不斷地對 Vim 進行更新和修改工作。這兩次逝世將 Vim 社區籠罩在悲傷之中,重要的維護者和創始人相繼離去,留下了難以填補的空缺。

「萬里挑一」的編輯器
Vim 將不少人引領至程式設計師之路,成為了許多程式設計師生活的一部分,不少科幻小說都會提及 Vim,它從 Unix 開始走過了漫長的旅程,適應了許多其他的作業系統。因此,有許多網友在今天都發布了悼文。即使是經歷了編輯器領域最初的「聖戰」之一:Emacs 與 Vi 之爭,那些堅持認為自己選擇的編輯器是完美典範的人,也為 Moolenaar 這位天才的逝世感到惋惜。

還有一位網友,分享了自己的個人軼事:

翻譯:
當我剛開始涉足軟體領域時,我非常堅持「思考的速度要比打字的速度要快」這一理念,幸運的是,我結識了一些非常專業的駭客,其中一位是絕對的「Vim 巫師」。
他是一個非常謙遜的人,所以我花了一些時間才知道他如此精通 Vi 的原因是他曾經寫過一個真正的 Vi,叫做 Xvi。
我問他,既然能寫出 Xvi,為什麼還要使用 Vim,而他的回答令我終生難忘:「編寫一個 Vi 是任何程式設計師只要付出努力就能做到的事情,但只有像 Bram 這樣的人才能寫一個和 Vim 一樣好的 Vi。顯然我會選擇更好的工具。」
Bram 改變了我們許多人的生活和職業,包括我在內。我從未與他親自交往過,但從我所見的一切來看,他謙遜、聰明、樂於助人,且認真對待自己的工藝。
英雄永垂不朽。
Bram Moolenaar 是荷蘭人,他出生於 1961 年,在 24 歲那年畢業於代爾夫特理工大學,獲得電氣工程學位。1988 年,Moolenaar 給自己買了一臺 Amiga 電腦。由於他習慣使用 Vi 進行編輯,因此他首先在 Amiga 上尋找類似 Vi 的程序。
Moolenaar 測試了 Vi 的許多「克隆」版本,但沒有一個能讓他滿意;所以他選擇了最好的一個,並開始加以改進。最初,Moolenaar 的主要目標是能夠做 Vi 所能做的一切。緊接著,他逐漸添加了一些附加功能,例如多級撤消。
1988 年,Moolenaar 在 Amiga 的公共域磁碟集(由 Fred Fish 製作)上發佈了一個 Vim 版本(當時還被稱為「Vi IMitation」)。發佈後的反響不錯,逐漸開始有人向 Moolenaar 發送補丁,還有人努力將 Vim 移植到其他平臺,例如 MS-DOS 和 Unix。

Vim 的開始界面
起初,Vim 只是供 Moolenaar 自己使用。一段時間後,他覺得 Vim 對其他人有用,並將其發送到世界各地。從那時起,Moolenaar 越來越努力地讓這個程序適合廣大開發者。他生前曾說:「創造有用的東西很有趣。此外,還有一群很好的共同作者和高級使用者,這非常鼓舞人心。」
於是,Moolenaar 不斷添加了更多功能,到 1.22 版本,Vim 包含了比 Vi 更多的功能。於是,Moolenaar 決定將名稱從「Vi IMitation」更改為「Vi IMproved」。隨著時間的推移,程式碼被進行了無數次重新設計和擴展,以至於原始的「克隆」版本 Vi 幾乎沒有保留下來。
Moolenaar 曾經總結過 Vim 的優點:
「現在我很難想出使用 Vi 而不是 Vim 的理由。我建議所有 Vi 使用者切換到 Vim。優點很長,這裡僅列出一些。」
無限制的行長度,允許 NUL 位元組:可以編輯任何檔案,包括二進位制檔案。
多級撤消和重做:無需擔心在意外打開大寫鎖定時破壞檔案。
多窗口和緩衝區:同時編輯多個檔案,在它們之間複製文字。
語法高亮:快速理解文字的結構並發現錯誤。
命令列歷史和自動完成:更正拼寫錯誤,調用舊命令,快速輸入長檔案名。
刪除和插入矩形文字區域:編輯表格。
錯誤訊息解析:運行編譯器並立即跳轉到發現錯誤的位置。
帶超連結的線上幫助:查找任何命令的全面文件並跳轉到相關主題。
強大的手稿語言:添加自己的擴展功能。
……

享譽無數的「慈善軟體」
Vim 開源且自由分發,使用者不需要支付費用來使用它。儘管如此,許多經常使用 Vim 的人還是希望能以某種方式回報 Moolenaar 的工作。於是,他想到了慈善軟體的概念。
慈善軟體的基本想法就是要求每個使用 Vim 的人給慈善機構捐贈。因此,使用 Vim 是免費的,但如果有人認為它值得付費,就可以把那些錢捐給慈善機構。
想法形成後,Moolenaar 開始選擇合適的慈善機構——荷蘭國際兒童保育基金會(ICCF Holland)。
1994 年,Moolenaar 曾經作為志願者在烏干達南部的一個項目中工作了一年,這個地區受到愛滋病的嚴重打擊,約 10% 到 30% 的成年人被愛滋病所感染。許多家庭的父母死去,只留下了他們的孩子。這個項目以多種方式幫助這些需要幫助的孩子,他們會為孩子找到一個新家,確保孩子能夠上學,獲得個性化的關懷。

Nabasagi Morine,ICCF Holland 資助的兒童之一
在 Moolenaar 從烏干達回來後,他的心仍然留在那裡。他決定至少以籌集資金的方式來繼續支持這個項目。因此,他開始呼籲 Vim 的使用者考慮為烏干達的孤兒捐贈。他還建立了一個收養計劃,使用者可以為一個孩子提供經濟支持,讓孩子得到長期的幫助。由於他們只與志願者合作,並且資金直接發送到項目中,所以幾乎全部的籌款都真正用在了烏干達。
Moolenaar 的行動也得到了回報,ICCF 的籌款日益增多,Vim 也開始贏得多項獎項,並被認為是最受歡迎的文字編輯器之一。

Linux Journal 的讀者在 2001 年、2002 年、2003 年、2004 年和 2005 年將 Vim 評選為他們最喜歡的文字編輯器。

1999 年,Vim 入圍 LinuxWorld 「編輯的選擇」獎決賽。該獎項由 Debian 版本 Vim 的開發者 Wichert Akkerman 在 LinuxWorld 會議上頒發。

2000 年 2 月,在紐約舉行的 LinuxWorld 博覽會上,Vim 獲得了「開源文字編輯器」類別的 Slashdot Beanie 獎提名。

但是,最讓 Moolenaar 自豪的還是由 NLUUG 在 2008 年頒發的這個獎項。NLUUG 是荷蘭的 Unix 使用者團體,今年是他們成立的 40 週年。此前獲得該獎項的其他人還包括 Python 之父 Guido van Rossum 和荷蘭網際網路先驅 Piet Beertema。Moolenaar 在自己的個人主頁上記錄了對於獲獎的喜悅之情。

戛然而止的旅程
Moolenaar 熱愛旅行,他會在個人網站 moolenaar.net 上記錄生活,時不時更新自己旅行的照片。從南半球到北半球,從亞歐大陸到非洲沙漠,哪兒都有他的腳印。

2006 年,Moolenaar 在中國拍攝了 400+ 張照片
為了記錄 2023 年的生活,他還在個人主頁上晒了自己製作的日曆:由一張紙製成的桌面日曆。在摺疊後,一側顯示 12 個月的日曆。另一面是關於 ICCF-Holland 和 Vim 的簡要資訊。

Moolenaar 是一個起源於荷蘭的名字。這是一種職業,形容操作磨坊(通常是風車)的人。荷蘭曾經有很多風車,它們被用來從圩田抽水、磨麵粉、鋸木頭,以風的力量編織了一段繁榮的歲月。
然而,時間的車輪滾滾向前,荷蘭的風車逐漸褪去了昔日的輝煌。如今,荷蘭的天際線上已不再是那些翻飛的巨翼,取而代之的是現代科技的輪廓。而在這個風車凋零的時代,Moolenaar 以他的程式碼詮釋了另一種風景。正如他的名字所映照的——在數字時代操作著”風車”的人。
荷蘭的風車或許愈發稀少,但風車的精神卻在 Moolenaar 的銘志中得以延續。當我們在程式碼的海洋中航行,彷彿也能感受到那微風拂過風車的聲音,那是 Moolenaar 的風,永遠在我們心間飄蕩。
所幸的是,Vim 項目還會由開源開發者們持續運營下去。
項目的長期貢獻者 Christian Brabandt 在聞訊之後發佈了帖子(https://groups.google.com/g/vim_dev/c/6_yWxGhB_8I/m/ibserACYBAAJ),他在表達了自己的驚訝與哀傷的同時,宣佈會攜手其他貢獻者一同延續這個項目:
就像你們所有人一樣,當我聽到這個訊息時,我感到非常震驚。對 Vim 社區而言,Bram 是一位傑出的領袖,我在過去的幾年裡非常享受與他一起工作。將近 20 年前,我就開始參與 Vim 的開發。
Bram 在創建一個偉大的社區方面給予了我們極大的啟發,他通過慈善事業幫助了許多人,也是一位偉大的導師。但是現在他離開得太早了。我們失去了一位偉大的領袖,我很遺憾從未有機會親自見過他……
然而,對於社區的所有人,我想說:我會繼續下去,我希望其他貢獻者也能堅持做好工作。我可以訪問 Vim 的主頁和 Vim 組織(雖然我不確定自己是否有全部許可權,但我相信我們會在不久的將來解決細節問題)。
一旦我從度假歸來,我會審查 Pull Requests 並進行審查(還會將缺失的補丁提交到 GitHub)。我歡迎任何人為使 Vim 變得更好作出貢獻。
我仍然不了解各個領域的內部情況(如 vim9、虛擬文字、語法高亮等),也不知道我能投入多少時間,但我希望我們能夠一起繼續取得成功。
謝謝,Chris