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