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的最佳開放源代碼文本編輯器大獎(jiǎng),,又將Emacs推至二線,總的來看,,Vim和Emacs在文本編輯方面都是非常優(yōu)秀的,。
在插入模式之外基本上來說,盡可能少的呆在插入模式里面,,因?yàn)樵诓迦肽J嚼锩鎂IM就像一個(gè)“啞巴”編輯器一樣,。VIM的強(qiáng)大之處在于他的命令模式!
使用h,、j,、k、l
使用VIM高效率編輯的第一步,,就是放棄使用箭頭鍵,。使用VIM就不用頻繁的在箭頭鍵和字母鍵之間移來移去了,這會(huì)節(jié)省很多時(shí)間,。當(dāng)命令模式時(shí),,可以用h、j、k,、l來分別實(shí)現(xiàn)左,、下,、上,、右箭頭的功能。
在當(dāng)前行里面有效的移動(dòng)光標(biāo)
很多編輯器只提供了簡單的命令來控制光標(biāo)的移動(dòng)(比如左、上,、右、下,、到行首/尾等),。VIM則提供了很多強(qiáng)大的命令來滿足控制光標(biāo)的欲望,。當(dāng)光標(biāo)從一點(diǎn)移動(dòng)到另外一點(diǎn),在這兩點(diǎn)之間的文本(包括這兩個(gè)點(diǎn))稱作被“跨過”,,這里的命令也被稱作是motion,。
在整個(gè)文件里面有效移動(dòng)光標(biāo)
VIM有很多命令,可以用來到達(dá)文件里面你想到達(dá)的地方,。
使用關(guān)鍵詞自動(dòng)完成
VIM有一個(gè)非常漂亮的關(guān)鍵詞自動(dòng)完成系統(tǒng),。使用關(guān)鍵詞自動(dòng)完成功能,只需要輸入開始幾個(gè)字母(比如iAmAL),然后按
聰明的進(jìn)入插入模式
VIM提供了很多進(jìn)入插入模式的命令。
有效的移動(dòng)大段的文本
使用可視選擇(visual selections)和合適的選擇模式。不像最初的VI,VIM允許你高亮(選擇)一些文本,并且進(jìn)行操作,。
在可視選擇模式下剪切和拷貝
粘貼
粘貼很簡單,,按p。
使用多重剪貼板
很多編輯器都只提供了一個(gè)剪貼板,。VIM有很多。剪貼板在VIM里面被稱為寄存器(Registers)。你可以列出當(dāng)前定義的所有寄存器名和它們的內(nèi)容,,命令為“:reg”,。最好使用小寫字母來作為寄存器的名稱,,因?yàn)榇髮懙挠行┍籚IM占用了。
避免重復(fù)
在VI里面,,輸入.(小數(shù)點(diǎn)符號(hào)),,將會(huì)重復(fù)輸入的上一個(gè)命令,。
使用數(shù)字也是VIM強(qiáng)大的而且很節(jié)省時(shí)間的重要特性之一。在很多VIM的命令之前都可以使用一個(gè)數(shù)字,。
Vim有許多有用的功能,,可以與現(xiàn)代文本編輯器競爭,如Sublime Text,,Atom,,UltraEdit或jEdit。它們包括支持正則表達(dá)式的搜索,,輕松重復(fù)命令的能力,,直接記錄和執(zhí)行宏,自動(dòng)完成,,文件合并,鼠標(biāo)集成,,拼寫檢查,,語法突出顯示,分支撤消/重做歷史,,支持流行網(wǎng)絡(luò)協(xié)議和文件存檔格式等,。
雖然Vim的功能令人印象深刻,但其真正的優(yōu)勢在于其可擴(kuò)展性,。Vim有自己的腳本語言,,稱為Vim腳本(也稱為vimscript或VimL),用戶可以通過多種方式使用它來增強(qiáng)Vim,,例如為其他編程語言啟用語法高亮,,自動(dòng)化語法檢查或?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,每隔一兩年或兩三年就會(huì)有個(gè)小版本更新,,但是這次跨越大版本更新,,帶來了不少新的特性,據(jù)說有一些是從其它的 Vi流派吸收來的特性,。
2018年又發(fā)布了Vim8.1版本,,Vim8.1的主要新功能是支持在Vim窗口中運(yùn)行終端。它建立在Vim8.0中添加的異步功能之上,。終端窗口可用于多種用途,,也用于測試,以獲取屏幕截圖并將其與預(yù)期狀態(tài)進(jìn)行比較,。這允許測試交互式操作,,例如彈出菜單。