轉自: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_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視窗橫向顯示; 在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外掛程式協同使用,這將在下篇文章中介紹。 [參考文檔]
1. VIM協助檔案 2. http://vimcdoc.sourceforge.net/ 3. taglist協助檔案 [尾記] 本文可以自由應用於非商業用途。轉載請註明出處。 原文連結:http://blog.csdn.net/easwy |