1. 程式人生 > >手把手教你把Vim改裝成一個IDE程式設計環境(圖文)

手把手教你把Vim改裝成一個IDE程式設計環境(圖文)


在Windows平臺上用過Source Insight看程式的人肯定很熟悉程式碼視窗左邊那個Symbol視窗, 那裡面列出了當前檔案中的所有巨集, 全域性變數, 函式名等, 在檢視程式碼時用這個視窗總攬全域性, 切換位置相當方便, 今天告訴你一個vim的外掛: Taglist, 可以同樣實現這個功能.

上一節已經告訴你ctags的用法了, ctags的基本原理是將程式程式中的一些關鍵字(比如:函式名, 變數名等)的名字, 位置等資訊通過一個視窗告訴你, 如果你已經安裝好taglist, 則可以用下面的命令看看taglist自帶的幫助檔案:
:help taglist.txt
下面是我翻譯的其中的第一段"Overview", 供大家現瞭解一下taglist, 翻譯的不好, 請指教:
"Tab List"是一個用來瀏覽原始碼的Vim外掛, 這個外掛可以讓你高效地瀏覽各種不同語言編寫的的原始碼, "Tag List"有以下一些特點:
    * 在Vim的一個垂直或水平的分割視窗中顯示一個檔案中定義的tags(函式, 類, 結構,
      變數, 等)
    * 在GUI Vim中, 可以選擇把tags顯示在下拉選單和彈出選單中
    * 當你在多個原始檔/緩衝區間切換時, taglist視窗會自動進行相應地更新. 
      當你開啟新檔案時, 新檔案中定義的tags會被新增到已經存在的檔案列表中, 
      並且所有檔案中定義的tags會以檔名來分組顯示
    * 當你在taglist視窗中選中一個tag名時, 原始檔中的游標會自動跳轉到該tag的定
      義處
    * 自動高亮當前的tag名
    * 按型別分組各tag, 並且將各組顯示在一個可摺疊的樹形結構中
    * 可以顯示tag的原始型別和作用域
    * 在taglist視窗可選擇顯示tag的原始型別替代tag名
    * tag列表可以按照tag名, 或者時間進行排序
    * 支援以下語言的原始檔: Assembly, ASP, Awk, Beta, C,
      C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp,
      Lua, Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang,
      SML, Sql, TCL, Verilog, Vim and Yacc.
    * 可以很簡單的擴充套件支援新的語言. 對新語言支援的修改也很簡單.
    * 提供了一些函式, 可以用來在Vim的狀態列或者在視窗的標題欄顯示當前的tag名
    * taglist中的檔案和tags的列表可以在被儲存和在vim會話間載入
    * 提供了一些用來取得tag名和原始型別的命令
    * 在控制檯vim和GUI vim中都可以使用
    * 可以和winmanager外掛一起使用. winmanager外掛可以讓你同時使用檔案瀏覽器, 
      緩衝區瀏覽器和taglist外掛, 就像一個IDE一樣.
    * 可以在Unix和MS-Windows系統中使用

首先請先在你的~/.vimrc檔案中新增下面兩句:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
此時用vim開啟一個c原始檔試試:
$ vim ~/vim/src/main.c
進入vim後用下面的命令開啟taglist視窗, 如圖5:
:Tlist


(--- 圖5 ---)
左邊的視窗就是前面介紹的TagList視窗, 其中列出了main.c檔案中的tag, 並且按照"typedef", "variable", "function"等進行了分類. 將游標移到VimMain上, 如圖中左邊紅色的方框, 按下回車後, 源程式會自動跳轉到VimMain的定義處, 如圖中右邊的紅色方框. 這就是TagList最基本也是最常用的操作. 再教你一個常用的操作, 你在瀏覽TagList視窗時, 如果還不想讓原始碼跳轉, 但是想看看tag在原始碼中完整的表達, 可以將游標移到你想要看的tag上, 如圖中上邊黃色的方框, 然後按下空格鍵, 在下面的命令欄中, 如圖下邊黃色的方框, 會顯示該tag在原始碼中完整的寫法, 而不會跳轉到原始碼處.

TagList外掛我就介紹到這裡, 其實它還有很多用法和設定, 我沒法一一地教你了, 好在TagList有一份詳細的幫助手冊, 用下面的命令開啟手冊, 好好學習一下吧:
:help taglist.txt