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