VIM VI終極教程 (第四版)_第1頁
VIM VI終極教程 (第四版)_第2頁
VIM VI終極教程 (第四版)_第3頁
VIM VI終極教程 (第四版)_第4頁
VIM VI終極教程 (第四版)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

VI/VIM終極教程第四版Vim是一個(gè)類似于Vi的文本編輯器,不過在Vi的基礎(chǔ)上增加了很多新的特性,Vim普遍被推崇為類Vi編輯器中最好的一個(gè),事實(shí)上真正的勁敵來自Emacs的不同變體。1999年Emacs被選為L(zhǎng)inuxworld文本編輯分類的優(yōu)勝者,Vim屈居第二。但在2000年2月Vim贏得了SlashdotBeanie的最佳開放源代碼文本編輯器大獎(jiǎng),又將Emacs推至二線,總的來看,Vim和Emacs同樣都是非常優(yōu)秀的文本編輯器。目錄簡(jiǎn)介發(fā)展歷史學(xué)習(xí)方法高效率移動(dòng)高效的輸入高效的讀代碼版本信息Emacs和Vim二款神一樣的代碼編輯器展開簡(jiǎn)介發(fā)展歷史學(xué)習(xí)方法高效率移動(dòng)高效的輸入高效的讀代碼版本信息Emacs和Vim二款神一樣的代碼編輯器展開簡(jiǎn)介Vim是從vi發(fā)展出來的一個(gè)文本編輯器。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。和Emacs并列成為類Unix系統(tǒng)用戶最喜歡的編輯器。[1]使用vim先知道其設(shè)計(jì)理念是很重要的,有助于記憶,舉一反三;1.vim的設(shè)計(jì)理念是組合;命令組合:Vim強(qiáng)大的編輯能力中很大部分是來自于其普通模式命令。vim的設(shè)計(jì)理念是命令的組合。例如普通模式命令"dd"刪除當(dāng)前行,"dj"代表刪除到下一行,原理是第一個(gè)"d"含義是刪除,"j"鍵代表移動(dòng)到下一行,組合后"dj"刪除當(dāng)前行和下一行。另外還可以指定命令重復(fù)次數(shù),"2dd"(重復(fù)"dd"兩次),和"dj"的效果是一樣的。"d^","^"代表行首,故組合后含義是刪除到光標(biāo)開始到行首間的內(nèi)容(不包含光標(biāo));"d$"$"代表行尾,刪除到行尾的內(nèi)容(包含光標(biāo));用戶學(xué)習(xí)了各種各樣的文本間移動(dòng)/跳轉(zhuǎn)的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進(jìn)行文本編輯。模式間的組合:在普通模式中,有很多方法可以進(jìn)入插入模式。比較普通的方式是按"a"(append/追加)鍵或者"i"(insert/插入)鍵。2.很多快捷鍵設(shè)置和正則表達(dá)式類似,可以輔助記憶;^$w等3.vim針對(duì)程序語言代碼編寫者;寫代碼的時(shí)候手需要時(shí)刻保持在鍵盤上,隨機(jī)定位代碼、隨機(jī)刪除代碼、移動(dòng)代碼、插入代碼的操作大大多于閱讀、翻頁操作,中間卡頓一下效率就大大降低了;但對(duì)普通用戶而言,順序?qū)憽⒃O(shè)置字體格式、翻頁讀多于隨機(jī)寫刪除操作,且每個(gè)動(dòng)作之間本身就有很多的停頓,用其他UI編輯器(word,notePad++等)效率反而比VIM高效,使用vim進(jìn)行操作只會(huì)徒增你的疑惑:vim為什么這么流行。(如果你不是一個(gè)代碼開發(fā)者,估計(jì)你看完這段話也無法感同身受,建議先去學(xué)一門編程語言,新手推薦學(xué)C,java入門,做到一道50行代碼的課后習(xí)題,來感受下寫代碼的過程)發(fā)展歷史\o"查看圖片"

BramMoolenaar在80年代末購(gòu)入他的Amiga計(jì)算機(jī)時(shí),Amiga上還沒有他最常用的編輯器vi。Bram從一個(gè)開源的vi復(fù)制Stevie開始,開發(fā)了Vim的1.0版本。最初的目標(biāo)只是完全復(fù)制vi的功能,那個(gè)時(shí)候的Vim是ViIMitation(模擬)的簡(jiǎn)稱。1991年Vim1.14版被"FredFishDisk#591"這個(gè)Amiga用的免費(fèi)軟體集所收錄了。1992年1.22版本的Vim被移植到了UNIX和MS-DOS上。從那個(gè)時(shí)候開始,Vim的全名就變成ViIMproved(改良)了。在這之后,Vim加入了不計(jì)其數(shù)的新功能。做為第一個(gè)里程碑的是1994年的3.0版本加入了多視窗編輯模式(分割視窗)。從那之后,同一熒幕可以顯示的Vim編輯文件數(shù)可以不止一個(gè)了。1996年發(fā)布的Vim4.0是第一個(gè)利用圖型接口(GUI)的版本。1998年5.0版本的Vim加入了highlight(語法高亮)功能。2001年的Vim6.0版本加入了代碼折疊、插件、多國(guó)語言支持、垂直分割視窗等功能。2006年5月發(fā)布的Vim7.0版更加入了拼字檢查、上下文相關(guān)補(bǔ)完,標(biāo)簽頁編輯等新功能。2008年8月發(fā)布的Vim7.2,該版本合并了vim7.1以來的所有修正補(bǔ)丁,并且加入了腳本的浮點(diǎn)數(shù)支持,在2010年08年15,歷時(shí)兩年的時(shí)間,vim又發(fā)布了vim7.3這個(gè)版本,這個(gè)版本修復(fù)了前面版本的一些bug,以及添加了一些新的特征,這個(gè)版本比前面幾個(gè)版本來的要更加優(yōu)秀。主要功能根據(jù)設(shè)定可以和原始vi完全兼容多緩沖編輯任意個(gè)數(shù)的分割窗口(橫,豎)具備列表和字典功能的腳本語言可以在腳本中調(diào)用Perl,Ruby,Python,Tcl,MzScheme,C,C++單詞縮寫功能動(dòng)態(tài)單詞補(bǔ)完多次撤銷和重做對(duì)應(yīng)400種以上文本文件的語法高亮C/C++,Perl,Java,Ruby,Python等40種以上語言的自動(dòng)縮排利用ctags的標(biāo)簽中跳轉(zhuǎn)崩潰后文件恢復(fù)光標(biāo)位置和打開的緩沖狀態(tài)的保存復(fù)原(session功能)可以對(duì)兩個(gè)文件進(jìn)行差分,同步功能的diff模式遠(yuǎn)程文件編輯。[1]學(xué)習(xí)方法Vim目前已經(jīng)有各主流系統(tǒng)的版本,盡管vim較vi已經(jīng)改良了不少,但是初次使用還是會(huì)一頭霧水,不知如何操作,所以學(xué)習(xí)vim要首先過2關(guān)。第一關(guān)是理解vim的設(shè)計(jì)思路,vim設(shè)計(jì)之初就是整個(gè)文本編輯都用鍵盤而非鼠標(biāo)來完成,鍵盤上幾乎每個(gè)鍵都有固定的用法,且vim的制作者希望用戶在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工作,將此模式設(shè)計(jì)為默認(rèn)模式,初學(xué)者打開vim,如果直接輸入單詞,結(jié)果就會(huì)滴滴亂響,這是因?yàn)関im把用戶輸入的單詞理解為命令了。第二關(guān)是命令關(guān),vim有過百條命令對(duì)應(yīng)編輯的需要,如果能熟練使用vim這些命令,編輯速度確實(shí)比鼠標(biāo)要快很多,但是想全都記住它們也是一件難事,我想記住它們最好的方法就是多多來練習(xí),確實(shí)把vim用在日常的文本編輯中去,且遇到難題不要放棄,而是查找解決的方法,每解決一個(gè)難題,你的vim技能就上升一級(jí)。其實(shí),Vim與其它編輯器一個(gè)很大的區(qū)別在于,它可以完成復(fù)雜的編輯與格式化功能.在這些領(lǐng)域還少有軟件能與它分庭抗禮,但是,與所有的靈活性的代價(jià)一樣,你需要用自己的雙手來實(shí)現(xiàn)它.這在事實(shí)上造成了用戶在使用Vim過程中的幾個(gè)自然階段.一開始是notepad,word,edit壟斷你的大腦,這些東西根深蒂固,揮之不去Vim的使用對(duì)你而言是一場(chǎng)噩夢(mèng),它降低而不是提高了你的工作效率.對(duì)三種工作模式的不解甚至使你認(rèn)為它是一個(gè)充滿BUG或者至少是一個(gè)古怪的與當(dāng)今友好用戶界面設(shè)計(jì)嚴(yán)重脫節(jié)的軟件.事實(shí)上,這些起初看起來古怪的特性是Vim(或者是vi)的作者和它的用戶們?cè)谧约郝L(zhǎng)的文字編輯和程序設(shè)計(jì)生涯中總結(jié)出來的最快速最實(shí)在的操作,在幾乎等于計(jì)算機(jī)本身歷史的成長(zhǎng)期中,歷經(jīng)無數(shù)嚴(yán)厲苛刻的計(jì)算機(jī)用戶的批評(píng)與檢驗(yàn),無用的特性或糟糕的設(shè)計(jì)在Vim用戶群面前根本就沒有生存的余地.Vim細(xì)心而謹(jǐn)慎的作者們也不允許自己精心設(shè)計(jì)的軟件里有這樣?xùn)|西.第二個(gè)階段你開始熟悉一些基本的操作,這些操作足以應(yīng)付你日常的工作,你使用這些操作時(shí)根本就不假思索.但這些階段你仍然很少去碰Vim那晦澀的在線幫助文檔.它在你心里只是notepad,edit一個(gè)勉強(qiáng)合格的替代品.第三個(gè)階段,精益求精的你不滿足于無休無止的簡(jiǎn)單操作,冗長(zhǎng)而乏味,有沒有更好的辦法可以四兩拔斤.于是,從UNIX參考手冊(cè)上,從同事口中,你漸漸叩開:helpxxx的大門.開始探索里面充滿魔力的咒語.從雜耍般的帶有表演性質(zhì)的技巧開始,這些技巧令人眩目但少有實(shí)用性.不過這卻是你擁有魔力的第一步.接下來,你開始認(rèn)識(shí)到這些咒語背后的真經(jīng),開始偷偷修改一些奇怪的符號(hào),于是,奇跡產(chǎn)生了,魔力不但仍然有效,而且真實(shí)地作用于你現(xiàn)實(shí)中的文字編輯生活.你在第二階段由于熟練操作而塵封已久的大腦突然開始運(yùn)作.但這個(gè)過程并非是達(dá)到某個(gè)臨界狀態(tài)后的一路坦途,不斷的挫折,新的挑戰(zhàn),看似MissionImpossible的任務(wù).永遠(yuǎn)伴隨著任何一個(gè)人的任何一個(gè)學(xué)習(xí)過程.這是你使用Vim的最后一個(gè)階段,也是最漫長(zhǎng)最有挑戰(zhàn)性同時(shí)也充滿無數(shù)奇趣的階段.這個(gè)階段里你開始定制一些希奇古怪的顏色.開始以敲入i18n來輸入internationalization,開始讓Vim替你糾正經(jīng)常把the誤敲成teh的毛病,開始讓Vim與系統(tǒng)里各種精悍而強(qiáng)大的兄弟工具進(jìn)行合作,開始寫越來越長(zhǎng)的script,每一次的文本編輯體驗(yàn)都妙趣橫生高潮迭起.你的頭腦因?yàn)橐肰im完成高效的編輯而高度緊張.你開始在Vim郵件列表里提一些確實(shí)是問題的問題.也開始發(fā)現(xiàn)你在Vim里做了以前在SHELL里做的幾乎一切事.事實(shí)上你已經(jīng)成了一個(gè)無可救藥的Vim骨灰級(jí)玩家.重復(fù),高效率移動(dòng)1、在插入模式之外基本上來說,你應(yīng)該盡可能少的呆在插入模式里面,因?yàn)樵诓迦肽J嚼锩鎂IM就像一個(gè)“啞巴”編輯器一樣。很多新手都會(huì)一直呆在插入模式里面,因?yàn)檫@樣易于使用。但VIM的強(qiáng)大之處在于他的命令模式!你會(huì)發(fā)現(xiàn),在你越來越了解VIM之后,你就會(huì)花越來越少的時(shí)間使用插入模式了。2、使用h、j、k、l使用VIM高效率編輯的第一步,就是放棄使用箭頭鍵。使用VIM,你就不用頻繁的在箭頭鍵和字母鍵之間移來移去了,這會(huì)節(jié)省你很多時(shí)間。當(dāng)你在命令模式時(shí),你可以用h、j、k、l來分別實(shí)現(xiàn)左、下、上、右箭頭的功能。一開始可能需要適應(yīng)一下,但一旦習(xí)慣這種方式,你就會(huì)發(fā)現(xiàn)這樣操作的高效之處了。在你編輯你的電子郵件或者其他有段落的文本時(shí),你可能會(huì)發(fā)現(xiàn)使用方向鍵和你預(yù)期的效果不一樣,有時(shí)候可能會(huì)一次跳過了很多行。這是因?yàn)槟愕亩温湓赩IM看來是一個(gè)大的長(zhǎng)長(zhǎng)的行。這時(shí)你可以在按h、j、k或者l之前鍵入一個(gè)g,這樣VIM就會(huì)按屏幕上面的行如你所愿的移動(dòng)了。3、在當(dāng)前行里面有效的移動(dòng)光標(biāo)很多編輯器只提供了簡(jiǎn)單的命令來控制光標(biāo)的移動(dòng)(比如左、上、右、下、到行首/尾等)。VIM則提供了很多強(qiáng)大的命令來滿足你控制光標(biāo)的欲望。當(dāng)光標(biāo)從一點(diǎn)移動(dòng)到另外一點(diǎn),在這兩點(diǎn)之間的文本(包括這兩個(gè)點(diǎn))稱作被“跨過”,這里的命令也被稱作是motion。(簡(jiǎn)單說明一下,后面會(huì)用到這個(gè)重要的概念)4、常用到的一些命令(motion)fx:移動(dòng)光標(biāo)到當(dāng)前行的下一個(gè)x處。很明顯,x可以是任意一個(gè)字母,而且你可以使用;來重復(fù)你的上一個(gè)f命令。tx:和上面的命令類似,但是是移動(dòng)到x的左邊一個(gè)位置。(這真的很有用)Fx:和fx類似,不過是往回找。使用,來重復(fù)上一個(gè)F命令。Tx:和tx類似,不過是往回移動(dòng)到x的右邊一個(gè)位置。b:光標(biāo)往前移動(dòng)一個(gè)詞。w:光標(biāo)往后移動(dòng)一個(gè)詞。0:移動(dòng)光標(biāo)到當(dāng)前行首。(是數(shù)字0)^:移動(dòng)光標(biāo)到當(dāng)前行的第一個(gè)字母位置。$:移動(dòng)光標(biāo)到行尾。):移動(dòng)光標(biāo)到下一個(gè)句子。(:移動(dòng)光標(biāo)到上一個(gè)句子。5、在整個(gè)文件里面有效移動(dòng)光標(biāo)VIM有很多命令,可以用來到達(dá)文件里面你想到達(dá)的地方。下面是一些在文件里面移動(dòng)的命令:<Ctrl-f>:向下移動(dòng)一屏。<Ctrl-d>:向下移動(dòng)半屏。<Ctrl-b>:向上移動(dòng)一屏。<Ctrl-u>:向上移動(dòng)半屏。[2]G:到文件尾numG:移動(dòng)光標(biāo)到指定的行(num)。(比如10G就是到第10行)gg:到文件首H:移動(dòng)光標(biāo)到屏幕上面M:移動(dòng)光標(biāo)到屏幕中間L:移動(dòng)光標(biāo)到屏幕下面*:讀取光標(biāo)處的字符串,并且移動(dòng)光標(biāo)到它再次出現(xiàn)的地方。#:和上面的類似,但是是往反方向?qū)ふ摇?text:從當(dāng)前光標(biāo)處開始搜索字符串text,并且到達(dá)text出現(xiàn)的地方。必須使用回車來開始這個(gè)搜索命令。如果想重復(fù)上次的搜索的話,按n移動(dòng)到下個(gè)text處,N移動(dòng)到上一個(gè)text處。?text:和上面類似,但是是反方向。m{a-z}:在當(dāng)前光標(biāo)的位置標(biāo)記一個(gè)書簽,名字為a-z的單個(gè)字母。書簽名只能是小寫字母。你看不見書簽的存在,但它確實(shí)已經(jīng)在那里了。`a:到書簽a處。注意這個(gè)不是單引號(hào),它一般位于大部分鍵盤的1的左邊。`.:到你上次編輯文件的地方。這個(gè)命令很有用,而且你不用自己去標(biāo)記它。%:在成對(duì)的括號(hào)等符號(hào)間移動(dòng),比如成對(duì)的[],{},()之間。將光標(biāo)放到任意符號(hào)上,然后通過%來移動(dòng)到和這個(gè)符號(hào)匹配的符號(hào)上,%還可以正確的識(shí)別括號(hào)的嵌套層數(shù),總是移動(dòng)到真正匹配的位置上。因此這個(gè)命令在編輯程序代碼的時(shí)候非常有用,可以讓你方便的在一段代碼的頭尾間移動(dòng)。高效的輸入1、使用關(guān)鍵詞自動(dòng)完成VIM有一個(gè)非常漂亮的關(guān)鍵詞自動(dòng)完成系統(tǒng)。這表示,你可以輸入一個(gè)長(zhǎng)詞的一部分,然后按一下某個(gè)鍵,然后VIM就替你完成了這個(gè)長(zhǎng)詞的輸入了。舉個(gè)例子:你有一個(gè)變量名為iAmALongAndAwkwardVarName在你寫的代碼的某個(gè)地方。也許你不想每回都自己一個(gè)一個(gè)字母的去輸入它。使用關(guān)鍵詞自動(dòng)完成功能,你只需要輸入開始幾個(gè)字母(比如iAmAL),然后按<C-N>(按住Ctrl,再按N)或者<C-P>。如果VIM沒有給出你想要的詞,繼續(xù)按,直到你滿意為止,VIM會(huì)一直循環(huán)它找到的匹配的字符串。2、聰明的進(jìn)入插入模式很多新手進(jìn)入插入模式都只是用i。這樣當(dāng)然可以進(jìn)入插入模式,但通常不是那么合適,因?yàn)閂IM提供了很多進(jìn)入插入模式的命令。下面是最常用的一些:i:在當(dāng)前字符的左邊插入I:在當(dāng)前行首插入a:在當(dāng)前字符的右邊插入A:在當(dāng)前行尾插入o:在當(dāng)前行下面插入一個(gè)新行O:在當(dāng)前行上面插入一個(gè)新行c{motion}:刪除motion命令跨過的字符,并且進(jìn)入插入模式。比如:c$,這將會(huì)刪除從光標(biāo)位置到行尾的字符并且進(jìn)入插入模式。ct!,這會(huì)刪除從光標(biāo)位置到下一個(gè)嘆號(hào)(但不包括),然后進(jìn)入插入模式。被刪除的字符被存在了剪貼板里面,并且可以再粘貼出來。d{motion}:和上面差不多,但是不進(jìn)入插入模式。3、有效的移動(dòng)大段的文本使用可視選擇(visualselections)和合適的選擇模式不像最初的VI,VIM允許你高亮(選擇)一些文本,并且進(jìn)行操作。這里有三種可視選擇模式:v:按字符選擇。經(jīng)常使用的模式,所以親自嘗試一下它。V:按行選擇。這在你想拷貝或者移動(dòng)很多行的文本的時(shí)候特別有用。<C-V>:按塊選擇。非常強(qiáng)大,只在很少的編輯器中才有這樣的功能。你可以選擇一個(gè)矩形塊,并且在這個(gè)矩形里面的文本會(huì)被高亮。在選擇模式的時(shí)候使用上面所述的方向鍵和命令(motion)。比如,vwww,會(huì)高亮光標(biāo)前面的三個(gè)詞。Vjj將會(huì)高亮當(dāng)前行以及下面兩行。4、在可視選擇模式下剪切和拷貝一旦你高亮了選區(qū),你或許想進(jìn)行一些操作:d:剪貼選擇的內(nèi)容到剪貼板。y:拷貝選擇的內(nèi)容到剪貼板。c:剪貼選擇的內(nèi)容到剪貼板并且進(jìn)入插入模式。在非可視選擇模式下剪切和拷貝如果你很清楚的知道你想拷貝或者剪切什么,那你根本就不需要進(jìn)入可視選擇模式。這樣也會(huì)節(jié)省時(shí)間:d{motion}:剪切motion命令跨過的字符到剪貼板。比如,dw會(huì)剪切一個(gè)詞而dfS會(huì)將從當(dāng)前光標(biāo)到下一個(gè)S之間的字符剪切至剪貼板。y{motion}:和上面類似,不過是拷貝。c{motion}:和d{motion}類似,不過最后進(jìn)入插入模式。dd:剪切當(dāng)前行。yy:拷貝當(dāng)前行。cc:剪切當(dāng)前行并且進(jìn)入插入模式。D:剪切從光標(biāo)位置到行尾到剪貼板。Y:拷貝當(dāng)前行。C:和D類似,最后進(jìn)入插入模式。x:剪切當(dāng)前字符到剪貼板。s:和x類似,不過最后進(jìn)入插入模式。5、粘貼粘貼很簡(jiǎn)單,按p。6、使用多重剪貼板很多編輯器都只提供了一個(gè)剪貼板。VIM有很多。剪貼板在VIM里面被稱為寄存器(Registers)。你可以列出當(dāng)前定義的所有寄存器名和它們的內(nèi)容,命令為“:reg”。最好使用小寫字母來作為寄存器的名稱,因?yàn)榇髮懙挠行┍籚IM占用了。使用寄存器的命令為雙引號(hào)“。比如:我們要拷貝當(dāng)前行到寄存器k。你應(yīng)該按“kyy。(你也可以使用V”ky。為什么這樣也可以呢?)現(xiàn)在當(dāng)前行應(yīng)該已經(jīng)存在了寄存器k里面直到你又拷貝了一些東西進(jìn)入寄存器k?,F(xiàn)在你可以使用命令“kp來粘貼寄存器k里面的內(nèi)容到你想要的位置。7、避免重復(fù)令人驚奇的.命令在VI里面,輸入.(小數(shù)點(diǎn)符號(hào)),將會(huì)重復(fù)你輸入的上一個(gè)命令。比如,你上個(gè)命令為“dw”(刪除一個(gè)詞),VI將會(huì)接著再刪除一個(gè)詞。8、使用數(shù)字使用數(shù)字也是VIM強(qiáng)大的而且很節(jié)省時(shí)間的重要特性之一。在很多VIM的命令之前都可以使用一個(gè)數(shù)字,這個(gè)數(shù)字將會(huì)告訴VIM這個(gè)命令需要執(zhí)行幾次。比如:3j將會(huì)把光標(biāo)向下移動(dòng)三行。10dd將會(huì)刪除十行。y3t″將會(huì)拷貝從當(dāng)前光標(biāo)到第三個(gè)出現(xiàn)的引號(hào)之間的內(nèi)容到剪貼板。數(shù)字是擴(kuò)展motion命令作用域非常有效的方法。高效的讀代碼建議在vim上安裝Taglist+cscope+ctags插件有利于高效讀代碼,有利于學(xué)習(xí)![3]1、安裝對(duì)于小編我來說我使用的是Ubuntu,安裝軟件一般使用的命令是apt-getinstall***!對(duì)于vim+Taglist+cscope+ctags組合編輯器的創(chuàng)建,vim,cscope,ctags安裝起來比較方便使用上述命令即可安裝?。▽?duì)于不同的Linux發(fā)行版本安裝軟件的命令不太一樣,需要根據(jù)自己的安裝版稍微修改,比如說Fedora即使用yum命令安裝)對(duì)于Taglist使用這個(gè)方法安裝不了,我們需要先下載,然后安裝完成:首先上網(wǎng)下載Taglist插件,下載完成后解壓,再將文件下的taglist.vim使用cp命令拷貝到HOME/.vim/plugin文件夾下(cp-rtaglist.vim~/.vim/plugin)2、vim的配置vim是一個(gè)非常好用的編輯工具,以下介紹幾個(gè)常用的底行模式命令:(1).設(shè)置縮進(jìn):setsmartindent//設(shè)置縮進(jìn):setsmartindentshiftwidth=4//C語言自動(dòng)縮進(jìn),縮進(jìn)值為4個(gè)字符寬度(2).顯示光標(biāo)行列信息:setruler//顯示光標(biāo)信息(右下角)(3).查看制表符:setlist//顯示制表符,以^符號(hào)顯示制表符的位置(4).查看行數(shù)信息:setnumber//顯示行號(hào)(左邊)(5).關(guān)鍵字高亮:syntaxon//關(guān)鍵字高亮(6).多文件編輯,在編寫程序時(shí)有可能需要同時(shí)編輯多個(gè)文件,在這種情況下,需要如下設(shè)置:splittwo.c//多文件編輯當(dāng)然,如果不嫌麻煩,可以在每次打開Vim時(shí)輸入如上命令,如我經(jīng)常用的是:setnumber:setruler:syntaxon:setsmartindent命令,如果將平時(shí)在底行模式下輸入的命令直接寫入配置文件,則以后使用Vim時(shí)不用再次輸入這些命令。首先,試著在Vi的底行模式下輸入如下命令,如果不支持的話,去下載一個(gè)Vim的全版本,sudoapt-getinstallvim-full。以下是修改配置文件的方法:(1).找到Vimrc文件。(2)查看文件的權(quán)限:ls-lvimrcshisir@shisir-desktop:/usr/share/vim$cd/etc/vimshisir@shisir-desktop:/etc/vim$lsgvimrcvimrcvimrc.tinyshisir@shisir-desktop:/etc/vim$ls-lvimrc-r--r--r--1rootroot24922009-04-1008:08vimrc(3)如果沒有寫權(quán)限的話,修改權(quán)限,使我們可以修改該配置文件sudochmoda+wvimrc(4)根據(jù)個(gè)人需要將上述命令寫入配置文件比如,我個(gè)人的設(shè)置是:syntaxon,setruler,setnumber,setsmartindentshiftwidth=4下面貼上我的vimrc文件的配置信息:"顯示行號(hào)setnumber"檢測(cè)文件的類型filetypeon"記錄歷史的行數(shù)sethistory=1000"自動(dòng)對(duì)齊setautoindentsetcindent"智能選擇對(duì)齊方式setsmartindent"tab為4個(gè)空格settabstop=4"當(dāng)前行之間交錯(cuò)時(shí)使用4個(gè)空格setshiftwidth=4"設(shè)置匹配模式,輸入左括號(hào)會(huì)出現(xiàn)右括號(hào)setshowmatch"編輯時(shí)顯示光標(biāo)狀態(tài)setruler"快速匹配setincsearch"修改文件自動(dòng)備份ifhas("vms")setnobackupelsesetbackupendif"""""""""""""設(shè)置開啟ctags"""""""""""""settags=/home/zhouyl/linux-3.4.7/tags;"這邊設(shè)置的是你使用ctags-R的目錄,后面有介紹!你根據(jù)自己的使用修改這個(gè)路徑setautochdir"""""""""""""""""Taglist設(shè)置"""""""""""""""""""letTlist_Auto_Open=1letTlist_Ctags_Cmd='/usr/bin/ctags'letTlist_Show_One_File=1letTlist_Exit_OnlyWindow=1""""""""""""""""""""""cscope設(shè)置""""""""""""""""""setcscopequickfix=s-,c-,d-,i-,t-,e-ifhas("cscope")setcsprg=/usr/bin/cscopesetcsto=1setcstsetnocsverb"addanydatabaseincurrentdirectoryiffilereadable("cscope.out")csaddcscope.outendifsetcsverbendif因?yàn)槲业奈臋n中的原配置文件已經(jīng)有了語法高亮:"Vim5andlaterversionssupportsyntaxhighlighting.Uncommentingthenext"lineenablessyntaxhighlightingbydefault.ifhas("syntax")syntaxonendif所以我就沒寫了,您如果vimrc文件里面沒有此項(xiàng)建議自己加上syntaxon設(shè)置語法高亮PS:在配置文件中"符號(hào)后的內(nèi)容是注釋,而且在配置文件中是不需要添加符號(hào)的,這里關(guān)于cscope、ctags和Taglist的設(shè)置可以先寫上,后面將對(duì)這三個(gè)插件有介紹。好了,現(xiàn)在去開一個(gè)Vim,編輯一個(gè)程序看看,是不是感覺很不一般呢?好了,下面順便演示下,智能補(bǔ)全的用法,我分四種情況:1、前面申明過的變量或者函數(shù)名的補(bǔ)全;2、結(jié)構(gòu)體等自建結(jié)構(gòu)的補(bǔ)全;3、STL等標(biāo)準(zhǔn)庫的補(bǔ)全;4、括號(hào)、引號(hào)等自動(dòng)匹配補(bǔ)全。對(duì)于第一種情況,寫程序的過程中,直接用CTRL+p即可選擇,對(duì)于第二種情況,如果想申明了結(jié)構(gòu)體T,想在輸入T.時(shí)彈出成員供選擇,只需在用之前按一下:CTRL+F12,然后效果如圖:\o"查看圖片"

3、Taglist插件的使用TagList插件,是一款基于ctags,在vim代碼窗口旁以分割窗口形式(如上圖所示)顯示當(dāng)前的代碼結(jié)構(gòu)概覽,增加代碼瀏覽的便利程度的vim插件.在Vim中加載代碼文件后,可以使用以下命令控制taglist:TlistOpen打開并將輸入焦點(diǎn)至于標(biāo)簽列表窗口,效果如上圖所示:TlistClose關(guān)閉標(biāo)簽列表窗口:TlistToggle切換標(biāo)簽列表窗口狀態(tài)(打開←→關(guān)閉),標(biāo)簽列表窗口是否獲得焦點(diǎn)取決于其他配置ctl-w+w或ctl-w+方向鍵窗口切換(taglist本質(zhì)上是一個(gè)vim分隔窗口,因此可以使用ctl-w系列快捷鍵對(duì)窗口進(jìn)行切換操作)在Taglist窗口主要有以下操作按F1:打開幫助回車鍵:跳到光標(biāo)所在的標(biāo)記的定義處(如將光標(biāo)移到main函數(shù),按回車鍵)o:新建一個(gè)窗口,跳到標(biāo)記定義處p:預(yù)覽標(biāo)記定義(仍然在taglist窗口)空格:顯示標(biāo)記的原型(如函數(shù)原型)u:更新標(biāo)記列表(比如源文件新增了一個(gè)函數(shù),并在保存后,可在taglist窗口按u)s:選擇排序字段(暫時(shí)我也不知道什么意思)d:刪除光標(biāo)所在的taglist文件(如用vi打開了兩個(gè)文件f1.c,f2.c可以刪除f1.c的標(biāo)記)x:n放大/縮小taglist窗口+:展開(指標(biāo)記)-:折疊*:全部展開=:全部折疊[[:將光標(biāo)移到前一個(gè)文件的起點(diǎn)]]:將光標(biāo)移到后一個(gè)文件的起點(diǎn)q:退出taglist窗口F1:關(guān)閉幫助4、ctags插件的使用VIM簡(jiǎn)單易用,大家只要看看VIM自帶的vitutor,大約只要20分鐘就能掌握VIM的用法,上面也簡(jiǎn)單介紹了點(diǎn)vim的用法。但是對(duì)于Linux下的C/C++的程序員,使用VIM+Ctags的組合來寫程序也許是最佳的選擇。^_^盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。并且VIM中已經(jīng)默認(rèn)安裝了Ctags,它可以幫助程序員很容易地瀏覽源代碼。熟練的使用ctags僅需記住下面七條命令:(很簡(jiǎn)單吧,呵呵)1.$ctags–R*($為L(zhǎng)inux系統(tǒng)Shell提示符)2.$vi–ttag(請(qǐng)把tag替換為您欲查找的變量或函數(shù)名)3.:ts(ts助記字:tagslist,“:”開頭的命令為VI中命令行模式命令)4.:tp(tp助記字:tagspreview)---此命令不常用,可以不用記5.:tn(tn助記字:tagsnext)---此命令不常用,可以不用記6.Ctrl+]跳到光標(biāo)所在函數(shù)或者結(jié)構(gòu)體的定義處7.Ctrl+T返回查找或跳轉(zhuǎn)下面我們逐條的解釋上面的命令:“$ctags–R*”:“-R”表示遞歸創(chuàng)建,也就包括源代碼根目錄(當(dāng)前目錄)下的所有子目錄?!?”表示所有文件。這條命令會(huì)在當(dāng)前目錄下產(chǎn)生一個(gè)“tags”文件,當(dāng)用戶在當(dāng)前目錄中運(yùn)行vi時(shí),會(huì)自動(dòng)載入此tags文件。Tags文件中包括這些對(duì)象的列表:用#define定義的宏枚舉型變量的值函數(shù)的定義、原型和聲明名字空間(namespace)類型定義(typedefs)變量(包括定義和聲明)類(class)、結(jié)構(gòu)(struct)、枚舉類型(enum)和聯(lián)合(union)類、結(jié)構(gòu)和聯(lián)合中成員變量或函數(shù)VIM用這個(gè)“tags”文件來定位上面這些做了標(biāo)記的對(duì)象。剩下的命令就是定位這些對(duì)象的方法:“$vi–ttag”:在運(yùn)行vim的時(shí)候加上“-t”參數(shù),例如:[/usr/src]$vim-tmain這個(gè)命令將打開定義“main”(變量或函數(shù)或其它)的文件,并把光標(biāo)定位到這一行。如果這個(gè)變量或函數(shù)有多處定義,在VI命令行模式“:ts”命令就能列出一個(gè)列表供用戶選擇?!埃簍p”為上一個(gè)tag標(biāo)記文件,“:tn”為下一個(gè)tag標(biāo)記文件。當(dāng)然,若當(dāng)前tags文件中用戶所查找的變量或函數(shù)名只有一個(gè),“:tp,:tn”命令不可用。:(最方便的方法是把光標(biāo)移到變量名或函數(shù)名上,然后按下“Ctrl+]”,這樣就能直接跳到這個(gè)變量或函數(shù)定義的源文件中,并把光標(biāo)定位到這一行。用“Ctrl+T”可以退回原來的地方。即使用戶使用了N次“Ctrl+]”查找了N個(gè)變量,按N次“Ctrl+t”也能回到最初打開的文件,它會(huì)按原路返回。^_^注意:運(yùn)行vim的時(shí)候,必須在“tags”文件所在的目錄下運(yùn)行。否則,運(yùn)行vim的時(shí)候還要用“:settags=”命令設(shè)定“tags”文件的路徑,這樣vim才能找到“tags”文件。在完成編碼時(shí),可以手工刪掉tags文件(帚把不到,灰塵不會(huì)自己跑掉^_^)。5、cscope插件的使用[4]Cscope是一個(gè)類似ctags的工具。你可以把它想作是超過頻的ctags,因?yàn)樗δ鼙萩tags強(qiáng)大很多。在Vim里,通過cscope查詢結(jié)果來跳轉(zhuǎn)就象跳轉(zhuǎn)到其他的標(biāo)簽完全一樣;它被保存在標(biāo)簽棧里。這樣你就可以象使用|tags|一樣在函數(shù)等等之間便捷的跳轉(zhuǎn)。在VIM中使用cscope非常簡(jiǎn)單,首先調(diào)用“cscopeadd”命令添加一個(gè)cscope數(shù)據(jù)庫,然后就可以調(diào)用“cscopefind”命令進(jìn)行查找了。VIM支持8種cscope的查詢功能,如下:例如,我們想在代碼中查找調(diào)用work()函數(shù)的函數(shù),我們可以輸入:“:csfindcwork”,回車后發(fā)現(xiàn)沒有找到匹配的功能,可能并沒有函數(shù)調(diào)用work()。我們?cè)佥斎搿?csfindswork”,查找這個(gè)符號(hào)出現(xiàn)的位置,現(xiàn)在vim列出了這個(gè)符號(hào)出現(xiàn)的所有位置。我們還可以進(jìn)行字符串查找,它會(huì)雙引號(hào)或單引號(hào)括起來的內(nèi)容中查找。還可以輸入一個(gè)正則表達(dá)式,這類似于egrep程序的功能。在源代碼目錄下打開vim。要使用cscope查找就必須加載cscope.out文件.在vim命令行下執(zhí)行:(按照上述方法配置好的vimrc中有這一步):csaddcscope.out在vim命令行下執(zhí)行::cshelpcscopecommands:add:Addanewdatabase(Usage:addfile|dir[pre-path][flags])find:Queryforapattern(Usage:findc|d|e|f|g|i|s|tname)c:Findfunctionscallingthisfunction//查找調(diào)用本函數(shù)的函數(shù)d:Findfunctionscalledbythisfunction//查找本函數(shù)調(diào)用的函數(shù)e:Findthisegreppattern//查找egrep模式,相當(dāng)于egrep功能,但查找速度快多了f:Findthisfile//查找并打開文件,類似vim的find功能g:Findthisdefinition//查找函數(shù)、宏、枚舉等定義的位置,類似ctags的功能i:Findfiles#includingthisfile//查找包含本文件的文件s:FindthisCsymbol//查找C語言符號(hào),即查找函數(shù)名、宏、枚舉值等出現(xiàn)的地方t:Findassignmentsto//查找指定的字符串help:Showthismessage(Usage:help)\o"查看圖片"

VIM命令kill:Killaconnection(Usage:kill#)reset:Reinitallconnections(Usage:reset)show:Showconnections(Usage:show)例如:使用cscope查找do_fork函數(shù)的定義:在vim命令行下執(zhí)行::csfgdo_fork版本信息Emacs和Vim二款神一樣的代碼編輯器今天有一位從事程序猿N年的哥們?cè)赒Q上給本小編吐槽,“你個(gè)啥子網(wǎng)站,連個(gè)Emacs這樣神一樣的編輯器都沒有,你弄些啥嘛”,俺沉默了10秒外加5秒的發(fā)呆,Emacs?神一樣的編輯器?這種說法讓UltraEdit和Editplus情以何堪,還有那個(gè)號(hào)稱程序員們最喜愛的編輯器Notepad++聽完一定會(huì)痛哭流淚。趕快找度娘,問問是否如此,在看到一篇文章“Emacs和Vim,神的編輯器和編輯器之神”之后,讓我覺得有一種不發(fā)布Emacs和Vim簡(jiǎn)直就是犯罪的沖動(dòng),于是急沖沖發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論