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