vim下ctags的安裝和使用基礎

最近幫老師當助教,順便接觸了一下vim和ctags,說實話,linux之前用的不太多,除了寫過幾個網絡實驗箱的驅動程序之外基本上沒怎麼用過,因此此次也算是個很好的機會吧。linux

對linux稍加熟悉的同窗都確定知道Vi命令,這個是linux自帶的編輯工具,應該至關於windows的記事本吧,所謂vim,是一個相似於Vi的文本編輯器,不過在Vi的基礎上增長了不少新的特性,Vim廣泛被推崇爲類Vi編輯器中最好的一個,事實上Vim真正的勁敵來自Emacs的不一樣變體。1999 年Emacs被選爲Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼編輯器大獎,又將Emacs推至二線,總的來看,Vim和Emacs一樣都是很是優秀的文本編輯器。我記得有個NB的師兄曾經對我說過,在程序員的世界裏,Vim和Emacs分別被稱之爲「神的編輯器」和「編輯器之神」,只是時間長了我如今記不清他倆是怎樣一個對應關係了。c++

廢話說了很多了,下面說說ctags,摘抄一段維基百科上的定義,幫助理解,「Ctags是一個用於從程序源代碼樹產生索引文件(或tag文件),從而便於文本編輯器來實現快速定位的實用工具」。在產生的tag文件中,每個tag的入口指向了一個編程語言的對象。這個對象能夠是變量定義、函數、類或其餘的物件。Ctags是開放源代碼的程序。支持Ctags產生的tag文件的編輯器以及編輯器插件包括:Vim,Vile,Lemmy,等等。程序員

下面簡單說下ctags的安裝,其實在linux下就一句命令:apt-get install ctags,和linux下其餘軟件的安裝同樣,簡單吧!固然,可能有時候因爲源或者其餘東西的緣由,你可能單靠這一句命令還搞不定,這時候我推薦一種看起來很笨的方法,不過該方法確實好用,上週五上機的時候有一位同窗就碰到了這樣的問題,個人方法就是到官方網站上(http://ctags.sourceforge.net/)下載安裝包,而後解壓,執行./configure,而後make,make install就OK了,這樣安裝通常不會有別的問題了。編程

下面簡單說下ctags文件,這但是ctags的核心啊,首先須要執行ctags -R --c++-kinds=+px --fields=+iaS --extra=+q .生成一個tags文件,雖然有一大串的參數,可是其實咱們使用的時候直接使用ctags -R .就OK,其中參數R表示遞歸,.表示全部文件,簡單來講就是在當前目錄下遞歸的對全部代碼文件構建源代碼樹(存儲在tags文件中),執行完這個命令之後就能夠在當前文件夾下看到生成了一個tags文件,就是這個文件記錄了你全部的代碼結構,有興趣的同窗能夠打開這個文件看一下,每一行大概的結構是相似這樣的:A file.c 12;" d;下面具體解釋一下,A就是代碼結構樹中的標示符(變量、結構體或是函數名稱等),file.c就是這個標示符(變量或是結構體、函數等)所在的文件名稱,可想而知,隨後的12就表示在這個文件中的行數,注意,在行號後面有一個很明顯的分隔符(;"),一開始我也沒搞懂這個分隔符到底有什麼做用,後來查了一下,說是爲了兼容Vi,讓Vi忽略後面的字段(目測Vi遇到這個符號就不會再讀取後面的字段了),後面的d表示這個標示符的類型,好比到底是普通變量,仍是函數名稱等,其實這個字段是能夠省略的,只不過在生成tags文件的時候都自動生成了。vim

瞭解了tags文件,下面該真正進入核心瞭解怎樣使用ctags了。在生成了tags文件以後,就能夠在使用vim的時候使用ctags的功能了,最經常使用的操做就是快捷鍵ctrl+]和ctrl+t,若是你在編輯模式下將光標定位到某個標示符,而後進入vim命令模式下按快捷鍵ctrl+],就會跳轉到改標示符的定義,而後經過ctrl+t就會跳轉回到上一個位置。固然,你可能會發現按照上面說的極可能不會成功,這是爲何呢?緣由就在於vim極可能沒有辦法知道tags文件的存在,又或者你生成的tags文件中並不包括所要編輯的文件的代碼結構信息。針對第一種狀況,上面我說的之因此成功就在於你要經過vim編輯的文件和生成的tags文件存在同一個目錄下,這樣的狀況下Vim固然能夠很方便的就找到tags文件,因此它可以自動的使用tags文件中的信息實現跳轉,若是你的tags文件和要編輯的文件不在同一個文件夾下,那麼就須要經過配置Vim來實現,通俗的講,就是要告訴Vim上哪裏去找tags文件,實現的方法比較多,且聽我一一道來,第一種,若是你只是臨時的使用一次ctags跳轉,那麼你徹底能夠在vim命令模式下使用:set tags=../tags之類的命令來實現,這個命令就是告訴Vim:在我本次編輯過程當中若是我要使用ctags跳轉,你就上../tags去找相關的信息就好了(../tags就是你存放的tags文件),這種方法的不便之處就是當你完成本次編輯以後推出保存,下一次編輯一樣的文本的時候,Vim又會出現找不到tags的問題,也就是說你告訴它一次只能使用到本次編輯結束(關閉編輯)它就忘記了,爲了可以讓Vim「永遠」記住tags文件的位置,咱們介紹第二個方法,那就是直接邊界.vimrc文件,相信稍微瞭解vim的人都知道這個文件,話說我一個哥們兒曾經就由於丟失了這個文件捶胸頓足整整兩天!!!這就是整個Vim的核心配置文件,只須要在其中加入一句話就能夠了:set tags+=steve/tags;其中steve/tags改爲你的tags文件所在的位置就能夠了,這樣在每次使用vim的時候他就能自動找到tags文件實現跳轉了。windows

下面說一些可能用的很少的,網上不少帖子建議你們map一個快捷鍵生成tags文件,其實我不是很建議你們這麼作,若是隻是通常的代碼調試,也不必爲了圖這點兒方便從新去記衆多的組合快捷鍵,另外一方面,若是設定了這樣一個快捷鍵,可能你會習慣性的在每一個文件夾下都生成一個tags文件,其實在一個項目中有一個總體的tags就足夠了(可能有些人不一樣意這個觀點)。
網絡

最後補一句,晚上抽空寫的第一篇博客,可能有些東西寫的不夠好,之後慢慢改吧,歡迎交流!
編程語言

相關文章
相關標籤/搜索