vim開發環境

vim中taglist使用
2008-08-22 15:44
轉自:http://blog.csdn.net/easwy

用於個人學習,如果有犯您的利益,請您通知我,及時刪除。


本節所用命令的幫助入口:

:help helptags
:help taglist.txt

上篇文章介紹了在VIM中如何使用tag文件,本文主要介紹如何使用taglist插件。

想必用過Source Insight的人都記得這樣一個功能:SI能夠把當前文件中的宏、全局變量、函數等tag顯示在Symbol窗口,用鼠標點上述tag,就跳到該tag定義的位置;可以按字母序、該tag所屬的類或scope,以及該tag在文件中出現的位置進行排序;如果切換到另外一個文件,Symbol窗口更新顯示這個文件中的tag。

在VIM中的taglist插件所實現的就是上述類似的功能,有些功能比SI弱,有些功能比SI更強。而且,taglist插件仍在不斷完善中!

要使用taglist插件,必須滿足:

1. 打開VIM的文件類型自動檢測功能;
2. 系統中裝了Exuberant ctags工具,並且taglist能夠找到此工具(因爲taglist需要調用它來生成tag文件);
3. 你的VIM支持system()調用;

在本系列第3篇文章(vimrc初步)中,我們使用了VIM自帶的示例vimrc,這個vimrc中已經打開了文件類型檢測功能;在上篇文章中,我們也已用到了Exuberant ctags;system()調用在一般的VIM版本都會支持(只有suse Linux發行版中出於安全考慮,關閉了此功能),所以我們已經滿足了這三個條件。

現在我們到http://www.vim.org/scripts/script.php?script_id=273下載最新版本的taglist plugin,目前版本是4.3。

下載後,把該文件在~/.vim/目錄中解壓縮,這會在你的~/.vim/plugin和~/.vim/doc目錄中各放入一個文件:

       plugin/taglist.vim – taglist插件

       doc/taglist.txt    - taglist幫助文件

:windows用戶需要把這個插件解壓在你的$VIM/vimfiles或$HOME/vimfiles目錄。


使用下面的命令生成幫助標籤(下面的操作在VIM中進行):

 

:helptags ~/.vim/doc

 

生成幫助標籤後,你就可以用下面的命令查看taglist的幫助了:

 

:help taglist.txt

 

Taglist提供了相當多的功能,我的vimrc中這樣配置:

 

   """"""""""""""""""""""""""""""
   " Tag list (ctags)
   """"""""""""""""""""""""""""""
   if MySys() == "windows"                "設定windows系統中ctags程序的位置
     let Tlist_Ctags_Cmd = 'ctags'
   elseif MySys() == "linux"              "設定windows系統中ctags程序的位置
     let Tlist_Ctags_Cmd = '/usr/bin/ctags'
   endif
   let Tlist_Show_One_File = 1            "不同時顯示多個文件的tag,只顯示當前文件的
   let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最後一個窗口,則退出vim
   let Tlist_Use_Right_Window = 1         "在右側窗口中顯示taglist窗口

 

這樣配置後,當你輸入“:TlistOpen”時,顯示如下窗口:


在屏幕右側出現的就是taglist窗口,你從中可以看到在main.c文件中定義的所有tag:宏、定義、變量、函數等;你也可以雙擊某個tag,跳到該tag定義的位置;你還可以把某一類的tag摺疊起來(使用了VIM的折行功能),方便查看,就像圖中macro和variable那樣。更多的功能,請查看taglist的幫助頁,本文也會介紹一些常用功能。


下面介紹常用的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_ItemsTlist_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_WinHeightTlist_WinWidth可以設置taglist窗口的高度和寬度。Tlist_Use_Horiz_Window爲1設置taglist窗口橫向顯示;

在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”在打開和關閉間切換。在我的vimrc中定義了下面的映射,使用“,tl”鍵就可以打開/關閉taglist窗口:

 

map <silent> <leader>tl :TlistToogle<cr>

Taglist插件還提供了很多Ex命令,你甚至可以用這些命令創建一個taglist的會話,然後在下次進入VIM時加載此會話。

Taglist插件還可以與winmanager插件協同使用,這將在下篇文章中介紹。


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