Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎(chǔ)上改進和增加了很多特性。VIM是自由軟件。Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworld文本編輯分類的優(yōu)勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是非常優(yōu)秀的。
Vim是從 vi 發(fā)展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統(tǒng)用戶最喜歡的文本編輯器。
vim的設(shè)計理念是命令的組合。用戶學(xué)習(xí)了各種各樣的文本間移動/跳轉(zhuǎn)的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進行文本編輯。同時VIM與很多快捷鍵設(shè)置和正則表達式類似,可以輔助記憶。并且vim針對程序員做了優(yōu)化。
Vim 發(fā)展歷程
Bram Moolenaar 在 80 年代末購入他的Amiga計算機時,Amiga 上沒有他最常用的編輯器vi。Bram 從一個開源的 vi 復(fù)制 Stevie 開始,開發(fā)了 Vim 的 1.0 版本。最初的目標(biāo)只是完全復(fù)制 vi 的功能,那個時候的 Vim 是Vi IMitation(模擬)的簡稱。1991 年 Vim 1.14 版被 "Fred Fish Disk #591" ——Amiga 用的免費軟體集收錄了。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和MS-DOS上。從那個時候開始,Vim 的全名就變成 Vi IMproved了。
在這之后,Vim 加入了不計其數(shù)的新功能。做為第一個里程碑的是 1994 年的 3.0 版本加入了多視窗編輯模式(分割視窗)。從那之后,同一熒幕可以顯示的 Vim 編輯文件數(shù)可以不止一個了。1996 年發(fā)布的 Vim 4.0 是第一個利用圖形接口(GUI)的版本。1998 年 5.0 版本的 Vim 加入了 highlight(語法高亮)功能。2001 年的 Vim 6.0 版本加入了代碼折疊、插件、多國語言支持、垂直分割視窗等功能。2006 年 5 月發(fā)布的 Vim 7.0 版更加入了拼字檢查、上下文相關(guān)補完,標(biāo)簽頁編輯等新功能。 2008 年 8 月發(fā)布的 Vim 7.2,該版本合并了 vim 7.1 以來的所有修正補丁,并且加入了腳本的浮點數(shù)支持,2010年08月15日,歷時兩年的時間,vim又發(fā)布了vim 7.3這個版本,這個版本修復(fù)了前面版本的一些bug,以及添加了一些新的特征,這個版本比前面幾個版本來的要更加優(yōu)秀。
十年以后,Vim 終于發(fā)布了一個新的大版本 8.0,結(jié)束了從 2006 年 5 月 7 日開始的 7.0 世代。雖然這十年間,Vim 也一直在不斷更新,從 7.0 到三年前的 7.4,每隔一兩年或兩三年就會有個小版本更新,但是這次跨越大版本更新,帶來了不少新的特性,據(jù)說有一些是從其它的 Vi 流派吸收來的特性。
2018年又發(fā)布了Vim 8.1版本,Vim 8.1的主要新功能是支持在Vim窗口中運行終端。 它建立在Vim 8.0中添加的異步功能之上。 終端窗口可用于多種用途,也用于測試,以獲取屏幕截圖并將其與預(yù)期狀態(tài)進行比較。 這允許測試交互式操作,例如彈出菜單。
Vim 優(yōu)點
高效率移動
-
在插入模式之外基本上來說,盡可能少的呆在插入模式里面,因為在插入模式里面 VIM 就像一個“啞巴”編輯器一樣。 VIM 的強大之處在于他的命令模式!
-
使用 h、j、k、l使用 VIM 高效率編輯的第一步,就是放棄使用箭頭鍵。使用 VIM就不用頻繁的在箭頭鍵和字母鍵之間移來移去了,這會節(jié)省很多時間。當(dāng)命令模式時,可以用 h、j、k、l 來分別實現(xiàn)左、下、上、右箭頭的功能。
-
在當(dāng)前行里面有效的移動光標(biāo)很多編輯器只提供了簡單的命令來控制光標(biāo)的移動(比如左、上、右、下、到行首/尾等)。VIM 則提供了很多強大的命令來滿足控制光標(biāo)的欲望。當(dāng)光標(biāo)從一點移動到另外一點,在這兩點之間的文本(包括這兩個點)稱作被“跨過”,這里的命令也被稱作是 motion。
-
在整個文件里面有效移動光標(biāo)VIM 有很多命令,可以用來到達文件里面你想到達的地方。
高效的輸入
-
使用關(guān)鍵詞自動完成VIM 有一個非常漂亮的關(guān)鍵詞自動完成系統(tǒng)。使用關(guān)鍵詞自動完成功能,只需要輸入開始幾個字母(比如 iAmAL),然后按
(按住 Ctrl,再按 N)或者 。如果 VIM 沒有給出你想要的詞,繼續(xù)按,直到你滿意為止,VIM 會一直循環(huán)它找到的匹配的字符串。 -
聰明的進入插入模式VIM 提供了很多進入插入模式的命令。
-
有效的移動大段的文本使用可視選擇(visual selections)和合適的選擇模式。不像最初的 VI,VIM 允許你高亮(選擇)一些文本,并且進行操作。
-
在可視選擇模式下剪切和拷貝
-
粘貼粘貼很簡單,按 p。
-
使用多重剪貼板很多編輯器都只提供了一個剪貼板。VIM 有很多。剪貼板在 VIM 里面被稱為寄存器(Registers)。你可以列出當(dāng)前定義的所有寄存器名和它們的內(nèi)容,命令為“:reg”。最好使用小寫字母來作為寄存器的名稱,因為大寫的有些被 VIM 占用了。
-
避免重復(fù)在 VI 里面,輸入 . (小數(shù)點符號),將會重復(fù)輸入的上一個命令。
-
使用數(shù)字也是 VIM 強大的而且很節(jié)省時間的重要特性之一。在很多 VIM 的命令之前都可以使用一個數(shù)字。
Vim 功能與優(yōu)勢
Vim有許多有用的功能,可以與現(xiàn)代文本編輯器競爭,如Sublime Text,Atom,UltraEdit或jEdit。它們包括支持正則表達式的搜索,輕松重復(fù)命令的能力,直接記錄和執(zhí)行宏,自動完成,文件合并,鼠標(biāo)集成,拼寫檢查,語法突出顯示,分支撤消/重做歷史,支持流行網(wǎng)絡(luò)協(xié)議和文件存檔格式等。
雖然Vim的功能令人印象深刻,但其真正的優(yōu)勢在于其可擴展性。 Vim有自己的腳本語言,稱為Vim腳本(也稱為vimscript或VimL),用戶可以通過多種方式使用它來增強Vim,例如為其他編程語言啟用語法高亮,自動化語法檢查或?qū)im與其他應(yīng)用程序和服務(wù)。
大多數(shù)經(jīng)驗豐富的Vim用戶很難想象在沒有任何腳本的情況下使用文本編輯器,并且有很多可供選擇。 Vim Awesome是世界上最大的Vim腳本目錄之一,其中包含超過18,000個。一些最值得注意的Vim腳本包括vim-multiple-cursors,它允許您創(chuàng)建多個選擇,NERDTree,它在側(cè)面板中顯示交互式文件樹視圖,以及Emmet,一個強大的HTML,CSS和JavaScript完成工具。
除了可擴展性之外,Vim還具有高度可配置性,包含Vim核心全局設(shè)置(稱為vimrc)的文件可以在各個Vim安裝之間共享。如果您不想在閑暇時間搞亂設(shè)置和編輯配置文件但仍希望充分發(fā)揮Vim的優(yōu)勢,可以從互聯(lián)網(wǎng)上下載許多現(xiàn)成配置文件中的一個,或者使用Vim等工具創(chuàng)建一個配置。