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鍵循環選擇。