1. 程式人生 > >vim + ctags +escope + taglist 環境搭建

vim + ctags +escope + taglist 環境搭建

       閱讀原始碼的工具有很多,而且如今的整合開發環境(IDE)也很強大,但對於經常使用vim編輯器的程式設計師來說,對vim的強大絕對是“不拋棄,不放棄”的,況且我們只要安裝一些外掛配合vim的工作一樣能達到IDE的效果,好了,廢話少說。瀏覽了很多有關的網頁資源後,發現有很多外掛可以用,但在此推薦3款比較常用的“小”外掛供大家參考,它們其實並不“小”,非常強大!一般地,只是單個小程式原始碼的閱讀就不必勞駕外掛了(我是這樣認為的),對於工程程式碼不用它們就有點困難了。 這三個外掛分別是:ctags , cscope , taglist       先看看效果如何吧     在ubuntu下的安裝與配置如下—— (1) ctags 外掛 a)   功能:對瀏覽程式碼非常的方便, 可以在函式, 變數之間跳來跳去等等等等 (更多說明請百度或谷歌一下) b)      安裝配置:  終端下輸入  sudo apt-get install ctags       如果沒發現該軟體包就用     sudo apt-get install exuberant-ctags  就行了…… 如果還不行可以到官網下載原始碼手動編譯安裝,有點麻煩是不是?不要嫌麻煩,這也是一個學習的機會,如果遇到其他類似的你也可以仿照這裡的例子,再配合壓縮包裡的README檔案就能手動安裝了,你說是不是,呵呵。  下載地址    http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz  下載解壓後  $ cd ctags-5.8 $ ./configure  $ make  # make install   // 需要root許可權 使用 ctags --hlep   命令簡單測試一下安裝成功了沒  >^_^< c)  使用方法:       然後去你的原始碼目錄, 如果你的原始碼是多層的目錄, 就去最上層的目錄, 在該目錄下      執行命令: ctags -R         其中-R表示遞迴遍歷      我現在以  linux-kernel 的原始碼目錄做演示      $ cd  ~/ linux-kernel      $ ctags -R      (如果是kernel原始碼的話還可以用  make tags)      此時在/home/ linux-kernel/目錄下會生成一個 tags 檔案, 現在用vim開啟     即輸入vim 然後Shift + :      然後再在vim末行執行命令,      : set tags=/home/bob/linux-kernel/tags     (最前面的:是提示符,不必輸入)      每次都要輸入這個才能使tags生效,我很懶,所以把該命令加入到~/.vimrc中, 你也可以將這句話放到~/.vimrc中去,       如果你經常在這個      工程目錄程式設計的話.     再如果你經常在不同工程間程式設計, 可以在.vimrc中加上:           set tags=tags;    "   其中 ; 不能沒有          set autochdir d)   使用舉例:       把游標定位到某一函式名上或者巨集上, 按下 Ctrl + ], vim就可以自動切換到該函式定義處!       要返回只需要按下Ctrl + o  或者 Ctrl + t.       是不是很方便吖。 (2)    cscope  外掛 a) 功能:可以對函式以及部分型別定義進行跳轉(更多說明請百度或谷歌一下) b) 安裝配置: sudo apt-get install cscope 這個源裡應該有了,如果沒有請到其官網  http://sourceforge.net/projects/cscope/files/   下載原始碼安裝,具體安裝方法和  ctags  一樣的,我就不羅嗦啦! d)使用舉例: 在終端下,轉到你原始碼的所在目錄然後 $cscope -Rbkq  <回車> 說明一下引數:         R 表示把所有子目錄裡的檔案也建立索引    b 表示cscope不啟動自帶的使用者介面,而僅僅建立符號資料庫       q 生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度    k 在生成索引檔案時,不搜尋/usr/include目錄 之後會在當前目錄生成幾個檔案,  cscope.in.out和cscope.po.out檔案,cscope.out vim的normal模式下輸入 :cs add cscope.out 不會吧,每次都要輸入這些命令,煩死人了,有沒有捷徑呢?想偷懶總有人找到方法的, sudo gedit  ~/.vimrc     ;然後在該檔案下新增如下程式碼: if filereadable("cscope.out")     cs add cscope.out endif 這樣每次開啟vim就可以直接使用cscope了。  再試試把下面的內容複製到~/.vimrc裡,這樣就可以利用相應的快捷鍵進行不同的查找了. if has("cscope")             set cscopetag   " 使支援用 Ctrl+]  和 Ctrl+t 快捷鍵在程式碼間跳來跳去             " check cscope for definition of a symbol before checking ctags:             " set to 1 if you want the reverse search order.              set csto=1              " add any cscope database in current directory              if filereadable("cscope.out")                  cs add cscope.out              " else add the database pointed to by environment variable              elseif $CSCOPE_DB !=""                  cs add $CSCOPE_DB              endif              " show msg when any other cscope db added              set cscopeverbose              nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>              nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>              nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>              nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>              nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>              nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>              nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>              nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>          endif 附常用的命令:       :cs find s ---- 查詢C語言符號,即查詢函式名、巨集、列舉值等出現的地方   :cs find g ---- 查詢函式、巨集、列舉等定義的位置,類似ctags所提供的功能   :cs find d ---- 查詢本函式呼叫的函式:cs find c ---- 查詢呼叫本函式的函式   :cs find t: ---- 查詢指定的字串   :cs find e ---- 查詢egrep模式,相當於egrep功能,但查詢速度快多了   :cs find f ---- 查詢並開啟檔案,類似vim的find功能   :cs find i ---- 查詢包含本檔案的文 Ctrl+]將跳到游標所在變數或函式的定義處 Ctrl+T返回 更多幫助在vim末行命令模式下輸入cs 或 cscope獲得幫助資訊。 更多的例子如下      首先進入原始碼目錄, 在linux終端中輸入以下命令以建立cscope資料庫:         $ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files         $ cscope -bkq -i cscope.files      如果是在windows環境中, 則換成如下命令:         dir /s /b *.cpp *.h > cscope.files          cscope -b -q -k -i cscope.files      然後, 用vim開啟一個原始檔(如: vim main.cpp),      開啟後, 第一件事就是匯入cscope資料庫了:          :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace      cscope資料庫匯入成功後, 就可以利用上面定義的快捷鍵進行相關的查詢, (3)    taglist  外掛 a) 功能:  高效地瀏覽原始碼, 其功能就像vc中的workpace, 那裡面列出了當前檔案中的所有巨集等等。 b) 安裝就不需要了,簡單配置一下就行了,但需要ctags的支援, 下載地址   http://www.vim.org/scripts/download_script.php?src_id=7701  下載後,解壓縮后里面有兩個目錄 plugin和doc ,然後分別把plugin/taglist.vim複製到~/.vim/plugin目錄下,  把doc/taglist.txt複製到~/.vim/doc目錄下,ok! 記得把下面的加入到~/.vimrc 中哦 " 按F8按鈕,在視窗的左側出現taglist的視窗,像vc的左側的workpace nnoremap <silent> <F8> :TlistToggle<CR><CR> " :Tlist              呼叫TagList let Tlist_Show_One_File=0                    " 只顯示當前檔案的tags let Tlist_Exit_OnlyWindow=1                  " 如果Taglist視窗是最後一個視窗則退出Vim let Tlist_Use_Right_Window=1                 " 在右側視窗中顯示 let Tlist_File_Fold_Auto_Close=1             " 自動摺疊 d) 使用舉例:這個就不用多說了,自己按F8試試就知道了,直接用滑鼠就能操作。    在taglist視窗中,還可以使用下面的快捷鍵: <CR>          跳到游標下tag所定義的位置,用滑鼠雙擊此tag功能也一樣 o             在一個新開啟的視窗中顯示游標下tag <Space>       顯示游標下tag的原型定義 u             更新taglist視窗中的tag s             更改排序方式,在按名字排序和按出現順序排序間切換 x             taglist視窗放大和縮小,方便檢視較長的tag +             開啟一個摺疊,同zo -             將tag摺疊起來,同zc *             開啟所有的摺疊,同zR =             將所有tag摺疊起來,同zM [[            跳到前一個檔案 ]]            跳到後一個檔案 q             關閉taglist視窗 <F1>          顯示幫助 可以用“:TlistOpen”開啟taglist視窗,用“:TlistClose”關閉taglist視窗。或者使用“:TlistToggle”在開啟和關閉間切換。