Vim是(shi)一(yi)個類似(si)于Vi的(de)(de)(de)(de)(de)(de)著名(ming)的(de)(de)(de)(de)(de)(de)功能(neng)強大、高度可(ke)定制的(de)(de)(de)(de)(de)(de)文(wen)本(ben)編(bian)輯(ji)器(qi),在(zai)Vi的(de)(de)(de)(de)(de)(de)基礎(chu)上改進和(he)增加了(le)很多特性。VIM是(shi)自由軟件。Vim普遍(bian)被推(tui)崇為類Vi編(bian)輯(ji)器(qi)中最(zui)好的(de)(de)(de)(de)(de)(de)一(yi)個,事實上真正的(de)(de)(de)(de)(de)(de)勁敵來(lai)自Emacs的(de)(de)(de)(de)(de)(de)不同變體。1999年Emacs被選為Linuxworld文(wen)本(ben)編(bian)輯(ji)分類的(de)(de)(de)(de)(de)(de)優勝者,Vim屈居第二。但在(zai)2000年2月(yue)Vim贏得(de)了(le)Slashdot Beanie的(de)(de)(de)(de)(de)(de)最(zui)佳開(kai)放源代碼文(wen)本(ben)編(bian)輯(ji)器(qi)大獎,又(you)將(jiang)Emacs推(tui)至二線(xian),總的(de)(de)(de)(de)(de)(de)來(lai)看,Vim和(he)Emacs在(zai)文(wen)本(ben)編(bian)輯(ji)方面都是(shi)非常優秀的(de)(de)(de)(de)(de)(de)。
在插(cha)(cha)入模(mo)式(shi)(shi)之(zhi)外基本上(shang)來說(shuo),盡可能少的(de)呆在插(cha)(cha)入模(mo)式(shi)(shi)里(li)面,因為在插(cha)(cha)入模(mo)式(shi)(shi)里(li)面VIM就像一個(ge)“啞巴(ba)”編(bian)輯器(qi)一樣。VIM的(de)強大之(zhi)處在于他的(de)命令模(mo)式(shi)(shi)!
使用h、j、k、l
使(shi)用(yong)VIM高效率編輯的第一步,就是放棄(qi)使(shi)用(yong)箭(jian)頭(tou)鍵。使(shi)用(yong)VIM就不(bu)用(yong)頻繁的在箭(jian)頭(tou)鍵和字母(mu)鍵之間移來(lai)(lai)移去了(le),這會節省很多時間。當命令模(mo)式(shi)時,可以(yi)用(yong)h、j、k、l來(lai)(lai)分(fen)別(bie)實現(xian)左、下、上、右箭(jian)頭(tou)的功(gong)能。
在當前行里面(mian)有效的(de)移動光標
很多編(bian)輯器只提供(gong)了簡單的(de)命(ming)令(ling)來控(kong)(kong)制(zhi)光(guang)標(biao)的(de)移動(dong)(dong)(比如左、上、右(you)、下、到行(xing)首/尾等)。VIM則提供(gong)了很多強大的(de)命(ming)令(ling)來滿足控(kong)(kong)制(zhi)光(guang)標(biao)的(de)欲望(wang)。當光(guang)標(biao)從一點移動(dong)(dong)到另外一點,在(zai)這兩點之間(jian)的(de)文本(ben)(包(bao)括這兩個點)稱(cheng)作被(bei)(bei)“跨過”,這里的(de)命(ming)令(ling)也被(bei)(bei)稱(cheng)作是motion。
在整(zheng)個(ge)文件里面(mian)有效移動光標
VIM有很多命(ming)令,可以(yi)用來到(dao)達文件里面你(ni)想到(dao)達的(de)地方。
使用關鍵(jian)詞自動完成(cheng)
VIM有一個非常漂亮的關鍵詞自動完成系統。使用關鍵詞自動完成功能,只需要輸入開始幾個字母(比如iAmAL),然后按
聰明的進入插入模式
VIM提供(gong)了很多進入插(cha)入模式的(de)命令。
有效的(de)移動大段的(de)文本
使(shi)用可(ke)視選擇(ze)(ze)(visual selections)和合適的(de)選擇(ze)(ze)模(mo)式。不(bu)像(xiang)最初的(de)VI,VIM允(yun)許你高亮(選擇(ze)(ze))一些文本,并且進行操作。
在可視選擇模(mo)式下剪切和拷貝
粘貼
粘貼很(hen)簡單,按p。
使用多重剪貼板
很多(duo)(duo)編輯器都只提供(gong)了一個剪(jian)貼板。VIM有(you)很多(duo)(duo)。剪(jian)貼板在(zai)VIM里面(mian)被(bei)稱為(wei)寄存(cun)器(Registers)。你可以列出當前定(ding)義(yi)的(de)(de)所有(you)寄存(cun)器名和它們的(de)(de)內容,命令(ling)為(wei)“:reg”。最好(hao)使(shi)用小寫(xie)字母來作(zuo)為(wei)寄存(cun)器的(de)(de)名稱,因(yin)為(wei)大寫(xie)的(de)(de)有(you)些被(bei)VIM占(zhan)用了。
避免重復
在VI里(li)面,輸(shu)入(ru).(小數(shu)點符號),將會(hui)重復輸(shu)入(ru)的上一(yi)個命令。
使(shi)(shi)用數字也是VIM強大的(de)(de)而且(qie)很節省(sheng)時間的(de)(de)重要特(te)性之(zhi)一。在很多VIM的(de)(de)命令(ling)之(zhi)前都可以使(shi)(shi)用一個數字。
Vim有許(xu)多有用的(de)功能,可以(yi)與現代文本編(bian)輯(ji)器競爭,如Sublime Text,Atom,UltraEdit或jEdit。它們包括支(zhi)(zhi)持正(zheng)則表達式的(de)搜索,輕松重復(fu)命令的(de)能力,直(zhi)接記(ji)錄和(he)執行(xing)宏,自動完成,文件(jian)合并,鼠(shu)標集(ji)成,拼(pin)寫檢查,語法突出顯示(shi),分(fen)支(zhi)(zhi)撤消/重做(zuo)歷史,支(zhi)(zhi)持流行(xing)網絡協(xie)議和(he)文件(jian)存檔格(ge)式等。
雖然(ran)Vim的(de)功能令人印象(xiang)深刻,但(dan)其(qi)真正的(de)優勢在于其(qi)可(ke)擴展(zhan)性。Vim有自己的(de)腳本(ben)語言,稱(cheng)為(wei)Vim腳本(ben)(也稱(cheng)為(wei)vimscript或VimL),用戶可(ke)以通(tong)過(guo)多種(zhong)方式使用它來增強Vim,例如為(wei)其(qi)他編程語言啟(qi)用語法高(gao)亮,自動化(hua)語法檢查或將(jiang)Vim與其(qi)他應用程序和服務。
大(da)(da)多(duo)數經(jing)驗豐富的Vim用(yong)戶(hu)很難(nan)想象在沒(mei)有任何腳(jiao)(jiao)本的情況下使用(yong)文(wen)本編輯器,并且有很多(duo)可供選(xuan)擇。Vim Awesome是世界上最大(da)(da)的Vim腳(jiao)(jiao)本目錄之一,其中包(bao)含超(chao)過18,000個。一些最值得注(zhu)意(yi)的Vim腳(jiao)(jiao)本包(bao)括vim-multiple-cursors,它(ta)允許(xu)您(nin)創建多(duo)個選(xuan)擇,NERDTree,它(ta)在側(ce)面(mian)板中顯示交互式文(wen)件樹視圖,以及Emmet,一個強大(da)(da)的HTML,CSS和JavaScript完(wan)成工具。
除了可擴展性之外,Vim還具(ju)有高度可配(pei)置(zhi)(zhi)(zhi)性,包含Vim核心全(quan)局設置(zhi)(zhi)(zhi)(稱為(wei)vimrc)的(de)文件可以在各個(ge)Vim安裝之間共享。如果您不想在閑暇時間搞亂設置(zhi)(zhi)(zhi)和編輯配(pei)置(zhi)(zhi)(zhi)文件但仍(reng)希望充分發揮(hui)Vim的(de)優勢,可以從互聯(lian)網上下載許多現成(cheng)配(pei)置(zhi)(zhi)(zhi)文件中(zhong)的(de)一(yi)個(ge),或(huo)者使(shi)用Vim等工具(ju)創建一(yi)個(ge)配(pei)置(zhi)(zhi)(zhi)。
Bram Moolenaar在80年代(dai)末購入他的(de)Amiga計算機時(shi)(shi),Amiga上沒(mei)有他最(zui)常用的(de)編輯器vi。Bram從一個開(kai)源(yuan)的(de)vi復制Stevie開(kai)始,開(kai)發了(le) Vim的(de)1.0版(ban)本。最(zui)初的(de)目(mu)標(biao)只是完全復制vi的(de)功能(neng),那個時(shi)(shi)候(hou)的(de)Vim是Vi IMitation(模擬(ni))的(de)簡稱(cheng)。1991年Vim1.14版(ban)被(bei)(bei)"Fred Fish Disk#591" ——Amiga用的(de)免費軟體集收錄了(le)。1992年1.22版(ban)本的(de)Vim被(bei)(bei)移植到(dao)了(le)UNIX和MS-DOS上。從那個時(shi)(shi)候(hou)開(kai)始,Vim的(de)全名(ming)就變(bian)成ViIMproved了(le)。
在這(zhe)(zhe)之后(hou),Vim加(jia)(jia)入了(le)不計其數(shu)的新功(gong)(gong)能(neng)(neng)(neng)。做為(wei)第一個(ge)里(li)程碑的是1994年的3.0版(ban)(ban)本(ben)(ben)加(jia)(jia)入了(le)多(duo)(duo)視(shi)(shi)窗(chuang)編(bian)輯(ji)模式(分(fen)割視(shi)(shi)窗(chuang))。從那(nei)之后(hou),同一熒幕(mu)可(ke)以(yi)(yi)(yi)顯示(shi)的Vim編(bian)輯(ji)文件(jian)(jian)數(shu)可(ke)以(yi)(yi)(yi)不止一個(ge)了(le)。1996年發布的Vim4.0是第一個(ge)利用圖形接口(GUI)的版(ban)(ban)本(ben)(ben)。1998年5.0版(ban)(ban)本(ben)(ben)的Vim加(jia)(jia)入了(le) highlight(語(yu)法(fa)高亮(liang))功(gong)(gong)能(neng)(neng)(neng)。2001年的Vim6.0版(ban)(ban)本(ben)(ben)加(jia)(jia)入了(le)代碼(ma)折疊、插(cha)件(jian)(jian)、多(duo)(duo)國語(yu)言支(zhi)持(chi)、垂直分(fen)割視(shi)(shi)窗(chuang)等功(gong)(gong)能(neng)(neng)(neng)。2006年5月發布的Vim7.0版(ban)(ban)更(geng)加(jia)(jia)入了(le)拼字檢查、上下文相關(guan)補(bu)完(wan),標簽頁(ye)編(bian)輯(ji)等新功(gong)(gong)能(neng)(neng)(neng)。2008年8月發布的Vim7.2,該版(ban)(ban)本(ben)(ben)合(he)并了(le)vim7.1以(yi)(yi)(yi)來的所有修正補(bu)丁,并且加(jia)(jia)入了(le)腳本(ben)(ben)的浮點數(shu)支(zhi)持(chi),2010年08月15日,歷時兩年的時間,vim又發布了(le)vim7.3這(zhe)(zhe)個(ge)版(ban)(ban)本(ben)(ben),這(zhe)(zhe)個(ge)版(ban)(ban)本(ben)(ben)修復了(le)前面版(ban)(ban)本(ben)(ben)的一些bug,以(yi)(yi)(yi)及添加(jia)(jia)了(le)一些新的特征(zheng),這(zhe)(zhe)個(ge)版(ban)(ban)本(ben)(ben)比前面幾個(ge)版(ban)(ban)本(ben)(ben)來的要更(geng)加(jia)(jia)優秀。
十年以后,Vim終于發(fa)布了一個(ge)新(xin)的(de)大版(ban)本(ben)8.0,結(jie)束了從2006年5月7日開始的(de)7.0世(shi)代。雖然這十年間,Vim也一直在(zai)不(bu)斷更新(xin),從7.0到三年前的(de)7.4,每隔(ge)一兩年或兩三年就會有個(ge)小版(ban)本(ben)更新(xin),但是(shi)這次跨(kua)越大版(ban)本(ben)更新(xin),帶來了不(bu)少新(xin)的(de)特性,據說有一些是(shi)從其它的(de) Vi流派吸收來的(de)特性。
2018年又(you)發布(bu)了Vim8.1版本,Vim8.1的(de)主要新(xin)功能是支持在Vim窗口中(zhong)運行(xing)終(zhong)端。它建立在Vim8.0中(zhong)添(tian)加的(de)異(yi)步(bu)功能之上。終(zhong)端窗口可用于多種用途,也用于測(ce)試,以獲取屏幕截圖并將其與預期狀態進(jin)行(xing)比較。這允(yun)許(xu)測(ce)試交(jiao)互式(shi)操作,例如彈(dan)出(chu)菜單。