天天看點

愛 Vim 的七個理由

當我剛剛開始用 vi 文本編輯器的時候,我憎恨它!我認為這是有史以來設計上最痛苦和反人類的編輯器。但我還是決定我必須學會它,因為如果你使用的是 unix,vi 無處不在并且是唯一一個保證你可以使用的編輯器。在 1998 年是如此,但是直到今天 vi 也仍然是可用的,現有的幾乎每個發行版中,vi 基本上都是基礎安裝的一部分。

在我學會能使用任何功能前,我已經在 vi 上花費差不多 1 個月的時間,但是我仍然不喜歡它。不過那時我已經意識到有個強大的編輯器隐藏在這個古怪的外表後面。是以我堅持使用它,并且最終發現一旦你知道你在幹什麼,它就是一個快的令人難以置信的編輯器。

"vi" 這個名稱是 “可視visual” 的縮寫。在 vi 出現的時候,行編輯器是很普遍的,能一次性顯示并編輯多個行是非同尋常的。vim,來自“vi improved”的縮寫,最初由 bram moolenaar 釋出于 1991 年,它成為了主要的仿 vi 軟體,并且擴充了這個強大的編輯器已有的功能。vim 強大的正規表達式和“:”指令行文法開始于行編輯和電傳打字機時代。

vim,有 40 年的曆史了,有足夠的時間發展出海量而複雜的技巧,即使是懂得最多的使用者都不能完全掌握它。這裡列出了一些愛 vim 的理由:

配色方案:你可能知道 vim 有彩色文法高亮。但你知道可以下載下傳數以百計的配色方案麼?在這找到些更好的。

你再也不需要讓你的手離開鍵盤或者去碰觸滑鼠。

vi 或者 vim 存在任何地方,甚至在 openwrt 裡面也有 vi(好吧,其實是在 busybox中,它挺好用的)。

vimscript:你可能會想重映射幾個鍵,但是你知道 vim 有自己的程式設計語言麼?你可以重新定義你的編輯器的行為,或者創造特定語言的編輯器擴充。(最近我在定制 vim 用于 ansible 的行為。)學習這個語言最佳的切入點是看 steve losh 著名的書《learn vimscript the hard way》。

vim 有插件。使用 vundle(我用的就是它)或者 pathogen 來管理你的插件來提升 vim 的功能。

插件可以将 git(或者你選擇的 vcs)內建到 vim 中。

有龐大而活躍的線上社群,如果你線上上提問關于 vim 的問題,肯定會有人回答。

我一開始讨厭 vi 的可笑之處在于,這 5 年來不斷的在嘗試新的編輯器中碰壁,總是想找到“一些更好的”。我從來沒有像讨厭 vi 一樣讨厭過其它的編輯器,現在我已經使用它 17 年了,因為我想象不出一個更好的編輯器。額,或許有稍微好一點的:可以嘗試下 neovim -這是未來的主流。看起來 bram moolenaar 将會把 neovim 的大部分融入到 vim 第 8 版中,這意味着将會在現有的代碼基礎上減少 30%、更好的代碼補全功能、真正的異步、内置終端、内置滑鼠支援、完全相容。

在本文作者在多倫多的 linuxcon 演講中(lctt 譯注:linuxcon 是 linux 基金會舉辦的年度會議),他解釋了一些在你可能錯過的、過去四十年增加的雜亂的擴充和改進。這個内容不适合初學者,是以如果你不知道為什麼“hjklia:wq”是很重要的,這就可能不是講給你聽的。它還會涉及一點關于 vi 的曆史,因為知道一些曆史能幫助我們了解我們的處境。關注他的演講能讓你知道如何使你最喜歡的編輯器更好更快。