vim+ctags+taglist 安裝使用

vim+ctags+taglist 安裝使用

好久沒寫了,嘻嘻,今天寫個關於類unix下安裝讀源代碼工具的安裝的東東。
因爲測試需要,最近讀了sysbench的部分源代碼。本身就是個菜鳥,加上人家寫的代碼感覺使用指針很巧妙,讀得我頭暈眼花。今天裝了個ctags+taglist感覺還是很好用的。嘻嘻這裏記下。
1 ctags
安裝
tar zxvf ctags-5.7.tar.gz
cd ctags-5.7
./configure && make && make install
使用
$ ctags -R

"-R"表示遞歸創建,也就包括源代碼根目錄下的所有子目錄下的源程序。"tags"文件中包括這些對象的列表:
l 用#define定義的宏
l 枚舉型變量的值
l 函數的定義、原型和聲明
l 名字空間(namespace)
l 類型定義(typedefs)
l 變量(包括定義和聲明)
l 類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
l 類、結構和聯合中成員變量或函數
2 taglist
$unzip -d taglist taglist_45.zip
在~下面建立.vim目錄,將解壓後的doc和plugin文件夾mv到下面
進入vim,在命令行模式下輸入:helptags ~/.vim/doc 生成幫助標籤
修改~.vimrc文件加入如下選項:
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1            "不同時顯示多個文件的tag,只顯示當前文件的
   let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最後一個窗口,則退出vim
   let Tlist_Use_Right_Window = 1         "在右側窗口中顯示taglist窗口
這樣就ok了。
讀源代碼時,先進入src目錄,用ctags -R生成tags文件。之後打開源代碼文件,就可以使用:tag funcname做不同文件之間函數變量的定位了。

:tag {ident}            "跳轉到指定的標籤
:tags                   "顯示標籤棧
CTRL-]                  "跳轉到當前光標下的標籤
CTRL-T                  "跳到標籤棧中較早的標籤

 

vim+ctags+taglist
在linux下構建類似於windows sourceinsight的源碼閱讀環境



/***********************************/
/*******      前期準備       *******/
/***********************************/
在fedora 8中,默認已經安裝了ctags
[atom@localhost ~]$ rpm -qa | grep ctags
ctags-5.6-1.1

沒有安裝則官網下載tags rpm安裝包 rpm -ivh tags.rpm

對應的vim則是
[atom@localhost ~]$ rpm -qa | grep vim
vim-minimal-7.1.135-1.fc8
vim-common-7.1.135-1.fc8
vim-enhanced-7.1.135-1.fc8

所以只需要下載taglist,最新的版本是taglist_45.zip
[下載地址]:http://vim.sourceforge.net/scripts/script.php?script_id=273



/***********************************/
/*******      安裝taglist    *******/
/***********************************/
1.在用戶主目錄建立.vim
[atom@localhost ~]$ mkdir .vim

2.解壓taglist_45.zip到.vim目錄下
[atom@localhost ~]$ unzip taglist_45.zip -d taglist
解壓後的目錄結構如下
[atom@localhost ~]$ ls -R taglist
taglist:
doc plugin

taglist/doc:
taglist.txt

taglist/plugin:
taglist.vim

3.安裝taglist
[root@localhost atom]# cp /taglist/doc/taglist.txt /usr/share/vim/vim71/doc/
[root@localhost atom]# cp /taglist/plugin/taglist.vim /usr/share/vim/vim71/plugin/

4.生成幫助標籤
進入vim的doc路徑。
cd /usr/share/vim/vim71/doc

啓動vim,命令模式下輸入
:helptags . (.不可少,表示當前目錄。也可以在任意目錄中啓動vim,只要指定:helptags usr/share/vim/vim71/doc/)
生成幫助標籤後,就可以使用下面的命令查看taglist幫助
:help taglist.txt

現在可以vim中試着打開taglist,輸入命令
:TlistToggle 來打開和關閉taglist窗口。(命令可以簡寫爲Tlist)

5.配置taglist
編輯/etc/vimrc
[root@localhost atom]# vim /etc/vimrc
加入下面一段話:

"for taglist
let Tlist_Ctags_Cmd='/usr/bin/ctags'
let Tlist_Exit_OnlyWindow=1
這是指定ctags的路徑。(也可以在/usr/share/vim/vim71/plugin/taglist.vim中指定)

更多的選項(設置格式爲let xxxx=1,如 let Tlist_Ctags_Cmd=1)
下面介紹常用的taglist配置選項,你可以根據自己的習慣進行配置:
-Tlist_Ctags_Cmd選項用於指定你的Exuberant ctags程序的位置,如果它沒在你PATH變量所定義的路徑中,需要使用此選項設置一下;
-如果你不想同時顯示多個文件中的tag,設置Tlist_Show_One_File爲1。缺省爲顯示多個文件中的tag;
-設置Tlist_Sort_Type爲”name”可以使taglist以tag名字進行排序,缺省是按tag在文件中出現的順序進行排序。按tag出現的範圍(即所屬的namespace或class)排序,已經加入taglist的TODO List,但尚未支持;
- 如果你在想taglist窗口是最後一個窗口時退出VIM,設置Tlist_Exit_OnlyWindow爲1;
- 如果你想taglist窗口出現在右側,設置Tlist_Use_Right_Window爲1。缺省顯示在左側。
-在gvim中,如果你想顯示taglist菜單,設置Tlist_Show_Menu爲1。你可以使用Tlist_Max_Submenu_Items和Tlist_Max_Tag_Length來控制菜單條目數和所顯示tag名字的長度;
- 缺省情況下,在雙擊一個tag時,纔會跳到該tag定義的位置,如果你想單擊tag就跳轉,設置Tlist_Use_SingleClick爲1;
- 如果你想在啓動VIM後,自動打開taglist窗口,設置Tlist_Auto_Open爲1;
- 如果你希望在選擇了tag後自動關閉taglist窗口,設置Tlist_Close_On_Select爲1;
- 當同時顯示多個文件中的tag時,設置Tlist_File_Fold_Auto_Close爲1,可使taglist只顯示當前文件tag,其它文件的tag都被摺疊起來。
- 在使用:TlistToggle打開taglist窗口時,如果希望輸入焦點在taglist窗口中,設置Tlist_GainFocus_On_ToggleOpen爲1;
- 如果希望taglist始終解析文件中的tag,不管taglist窗口有沒有打開,設置Tlist_Process_File_Always爲1;
- Tlist_WinHeight和Tlist_WinWidth可以設置taglist窗口的高度和寬度。Tlist_Use_Horiz_Window爲1設置taglist窗口橫向顯示;

個人認爲這些選項不痛不癢,還不如使用快捷鍵,默認的設置就已經很舒適了。


/***********************************/
/******* 使用ctags和taglist *******/
/***********************************/
1.使用ctags生成某份源碼的tags
以oRTP的源碼爲例。
進入oRTP文件夾下(/home/atom/Download/linphone/linphone-2.1.1/oRTP)
主要的文件夾有
.
|-- build
|-- doc
|-- include
`-- src
運行 ctags -R ,在當前目錄(oRTP)下生成索引文件“tags”
[atom@localhost oRTP]$ ctags -R
[atom@localhost oRTP]$ file tags
tags: Exuberant Ctags tag file text

2.啓動vim將tags導入
這裏以打開/home/atom/Download/linphone/linphone-2.1.1/oRTP/src/tests/rtpsend.c爲例。
當前的工作目錄是/home/atom/Download/linphone/linphone-2.1.1/oRTP,主要文件樹如下
.
|-- build
|-- doc
|-- include
|-- scr
`-- tags

運行vim
[atom@localhost oRTP]$ vim src/tests/rtpsend.c
在命令模式下輸入
:TlistToggle    (可以縮寫爲Tlist)
看看左邊是否打開了tlist窗口,如果有,說明代碼和tags關聯上了。


注:這裏是通過保證tags在vim的工作目錄下來關聯。
也可以進入vim後,指定絕對路徑,使用命令:
:set tags=/home/atom/Download/linphone/linphone-2.1.1/oRTP/tags
還可以啓動vim時,指定tags位置
vim -t /home/atom/Download/linphone/linphone-2.1.1/oRTP/tags

還有一種做法是把經常使用到的tags加入vimrc中。

3.常用快捷鍵
在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”在打開和關閉間切換

在左邊的tlist窗口和右邊正常的編輯區切換用 ctrl+2個w
ctrl+] 查找光標下的標籤(可查看函數定義)
ctrl+t 返回跳轉到標籤的前一次位置(即上一個標籤)
ctrl+o 返回源文件

在vim編輯器內使用tag命令
:tag foo_bar 跳轉到foo_bar函數位置

將光標置於函數名上,shift+k 查看庫函數


附:設置vim語法高亮顯示和自動縮進
1、 打開vimrc,添加以下語句來使得語法高亮顯示:
syntax on  
2、設置Windows風格的C/C++自動縮進(添加以下set語句到vimrc中)
1)設置(軟)製表符寬度爲4:
set tabstop=4
set softtabstop=4
2)設置縮進的空格數爲4
set shiftwidth=4
3)設置自動縮進:即每行的縮進值與上一行相等;使用 noautoindent 取消設置:
set autoindent
4)設置使用 C/C++ 語言的自動縮進方式:
set cindent
5)在左側顯示文本的行號,可以用以下語句:
set number
6) 括號匹配
set showmatch

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