vim 的ctags,taglist和supertab詳解

Taglist和Ctags介紹 
Taglist是Vim的源代碼瀏覽插件,提供了在Vim中查看文件中包含的函數列表和類的方法類表的功能。Taglist功能的實現要依賴於Ctags。Ctags是一個用於產生代碼索引文件的插件,其產生的索引文件用於幫助文本編輯器或其他工具快速,準確定位符號在代碼文件中的位置。Ctags可以支持很多很多語言。。。


安裝Ctags?
推薦使用Exuberant Ctags,其下載網址是 http://ctags.sourceforge.net/ . 
下載了源代碼 ctags-**.tar.gz後解壓縮,切換到其目錄進行編譯,安裝
1../configure 
2.make 
3.suod make install
至此,Ctags安裝完成。


有些系統自帶有相關的軟件包哦


安裝Taglist

1.在 http://www.vim-taglist.sourceforge.net/screenshots.html 下載最新版的Taglist軟件包。 
2.在個人用戶目錄下創建  .vim 目錄,將taglist_**.zip中的內容解壓到該目錄。 
3.進入Vim,在命令模式下輸入命令 "  helptags~/.vim/doc "即可完成Taglist的安裝。 
4.輸入命令“ Tlist ”檢查是否安裝成功。
把Ctags和Taglist聯繫起來
安裝好Ctags和Taglist後,需要把它們聯繫起來。 
修改  ~/.vim/plugin/taglist.vim 文件,找到
if !exists(‘loaded_taglist’)
這一行,在其前面添加
let Tlist_Ctags_Cmd="/usr/bin/ctags"
OK,Vim+Taglist+Ctags安裝完成!下面介紹如何使用使用 Vim+Taglist+Ctags 閱讀代碼!
使用Ctags和Taglist

1.  生成tags文件 
在目錄樹的根目錄裏,使用命令:ctags -R 或 ctags –recurse 
如: ctags -R src/* ,則會在當前目錄下生成 tags 文件
要生成 cppcomplete 需要的 tags 文件的話,需要運行下面的命令: 
ctags -n -f cppcomplete.tags –fields=+ai –C++-types=+p * -L cscope.files
注意,參數"-L cscope.files" 僅僅是借用了cscope生成的文件索引來幫助ctags去查詢相關工程文件生成tags。


2.  編輯 vim 配置文件 .vimrc 
在 .vimrc 文件中添加:
set tags=tags; 
set autochdir
注: 第一個命令裏的分號是必不可少的。這個命令讓vim首先在當前目錄裏尋找tags文件,如果沒有找到tags文件,或者沒有找到對應的目標,就到父目錄 中查找,一直向上遞歸。因爲tags文件中記錄的路徑總是相對於tags文件所在的路徑,所以要使用第二個設置項來改變vim的當前目錄。

當然你如果想直接使用絕對路徑,這樣也是可以的:
set tags=/home/xxx/myproject/tags
另外,在 Vim 配置文件 ~/.vimrc 中添加:

filetype plugin on 
"let Tlist_Ctags_Cmd = ‘/usr/bin/ctags’ “設置ctags命令目錄 
let Tlist_Show_One_File = 1 "不同時顯示多個文件的tag,只顯示當前文件的 
let Tlist_Exit_OnlyWindow =  1 "如果taglist窗口是最後一個窗口,則退出vim 
"let Tlist_Use_Right_Window = 1 “讓taglist窗口在右側顯示



3. 打開 Vim 前使用命令 ctags -R 產生tags文件, Vim 在啓動時會自動查找並加載tags文件。


打開 Vim 之後,使用命令 :Tlist 激活 Taglist; 按兩次  Ctrl + W 在兩個窗口來回跳轉;Ctrl + ] 或 回車鍵 查看函數定義(前者在 Taglist 窗口顯示, 後者在源文件窗口顯示), Ctrl + O 返回源文件。其他的相關快捷鍵(taglist)如下:
Taglist 快捷鍵 
回車鍵      跳到光標所在的標記的定義處(如將光標移到main函數,按回車鍵) 
o      新建一個窗口,跳到標記定義處 
p      預覽標記定義(仍然在taglist窗口) 
空格      在窗口的最下面顯示標記的原型(如函數原型) 
u      更新標記列表(比如源文件新增了一個函數,並在保存後,可在taglist窗口按u) 
s      更改排序方式,在按名字排序和按出現順序排序間切 
d      刪除光標所在的taglist文件(如用vi打開了兩個文件f1.c,f2.c可以刪除f1.c的標記) 
x      放大/縮小taglist窗口 
+      展開(指標記) 
-      摺疊 
*      全部展開 
=      全部摺疊 
[[      將光標移到前一個文件的起點 
]]      將光標移到後一個文件的起點 
q      退出taglist窗口

可以用”:TlistOpen“打開taglist窗口,用”:TlistClose“關閉taglist窗口。或者使用”:TlistToggle“在打開和關閉間切換。在我的vimrc中定義了下面的映射,使用<F9>鍵就可以打開/關閉taglist窗口:map <silent> <F9> :TlistToggle<cr> 

最方便的方法是把光標移到變量名或函數名上,然後按下 Ctrl-] , 用 Ctrl-O 退回原來的地方。


SuperTab插件 : 簡化補全代碼的快捷鍵, 按 Tab 鍵即可(以前需要按 Ctrl + X, Ctrl + O )。


1.點此下載 SuperTab 插件(http://www.vim.org/scripts/script.php?script_id=1643), 放入插件文件夾內; 
2.用 Vim 打開 supertab.vba, 並輸入  :so% ; 
3.敲回車後完成安裝。 
配置 SuperTab :

vimrc中添加:

let g:SuperTabRetainCompletionType=2 
" 0 – 不記錄上次的補全方式 
" 1 – 記住上次的補全方式,直到用其他的補全命令改變它 
" 2 – 記住上次的補全方式,直到按ESC退出插入模式爲止
let g:SuperTabDefaultCompletionType="<C-X><C-O>" 
" 設置按下<Tab>後默認的補全方式, 默認是<C-P>, 
" 現在改爲<C-X><C-O>. 關於<C-P>的補全方式, 
" 還有其他的補全方式, 你可以看看下面的一些幫助: 
" :help ins-completion 
" :help compl-omni

之後就可以用 Tab 代替 Ctrl + X, Ctrl + O 了。

SuperTab使用很簡單,只要在輸入變量名或路徑名等符號中途按Tab鍵,就能得到以前輸入過的符號列表,並通過Tab鍵循環選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章