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