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