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