誰說Vim不是IDE?(四)

來源:互聯網
上載者:User

系列4主要為大家介紹使用Vim實現代碼瀏覽、索引、標籤、標記、檢索等功能,主要包括ctags、taglist和visualmark,尤其是ctags,是後續各種外掛程式的基礎,能夠熟練的掌握和理解為佳。下面進入本文:

ctags1、

http://ctags.sourceforge.net

2、功能說明

嚴格意義上來說,ctags並不是Vim的外掛程式,而是Linux/Unix下的標籤命令。通過ctags -R命令可以對目前的目錄下原始碼中的類、函數、方法、變數、宏等元素進行索引處理,並產生索引檔案。Vim使用ctags產生的tag檔案,即可實現IDE中常用的代碼跳轉功能,實乃居家旅行代碼索引的常備利器。ctags不僅支援c/c++/java等靜態語言,還支援python/perl/php/jsp等動態指令碼語言,就目前我的使用方式,ctags基本不支援Objective-C,對Ruby支援的也很糟糕,隨著這些語言的普及和發展,希望後續版本的ctags會對更多的程式設計語言有更好的支援。

3、安裝

對於Ubuntu,可以使用如下命令安裝:sudo apt-get install ctags,安裝完成後在終端鍵入ctags --help,看到正常的協助資訊就說明安裝成功了。

對於Mac使用者來說,OS X內建了ctags命令,但這並不是vim所需要的ctags,要重新安裝:sudo port install ctags。由於OS X內建的ctags位於/usr/bin目錄下,一般在PATH中是優先載入的,所以安裝完成後,還需要設定一下環境變數,確保你在命令列使用的是新安裝的ctags。如果沒做特殊設定,安裝的ctags一般在/opt/local/bin下,在目前使用者的.profile中增加如下代碼:export PATH=/opt/local/bin/:$PATH,在終端執行source .profile可立即生效。

4、使用說明
  • 建立標籤索引
    前面我們提到過,ctags主要是用來建立Vim可以使用的tag索引檔案,使用ctags -R即可對目前的目錄下的代碼遞迴建立索引檔案,檔案儲存在目前的目錄下,預設檔案名稱為tags,檔案大小和你要索引的代碼量有關。
    如果想自己指定tag檔案的位置和索引代碼的位置,可以使用如下命令實現:
    ctags -R -o ~/.vim/ctags/pythontags /somepythondir/

  • 設定索引檔案的位置
    Vim在運行過程中需要知道tag的索引檔案位置,如果不指定的話,Vim會在目前的目錄下尋找名為tags的檔案作為tag索引檔案。
    如果想使用某個目錄下的索引檔案,在該目錄下啟動Vim即可。也可以在啟動後通過如下命令設定或改變索引檔案的位置:
    set tags=/home/xxx/xx/tags, xxxx/tags,......

當然,你也可以把這條命令寫到.vimrc中。

  • 在Vim中使用tag
    tag的索引檔案和位置都設定好之後,萬事俱備,現在我們就可以在Vim中使用tag進行代碼跳轉和跟蹤。
    ctags主要對原始碼中的類、方法、變數等元素進行了索引,所以,如果我們記得某個類名、方法名或變數名,想在命令列下直接開啟隱藏在重重疊疊的目錄深處的某個檔案時,以下命令可以協助我們實現這個功能:
    vim -t class | method | variable
    例如,你想開啟包含了loadCache方法的檔案,可以用如下命令:
    vim -t loadCache
    如果多個檔案中包含loadCache方法,vim會按照字母順利開啟第一個檔案。想查看其他檔案,可以使用ts命令, :ts會列出所有包含loadCache標籤的檔案,輸入檔案序號可以開啟檔案並定位到loadCache標籤,通過j和k可以上下滾屏。

如果只是通過vim命令開啟檔案,那麼可以使用如下命令進行檔案檢索和瀏覽:

:ta tagname 跳轉到標籤tagname定義的地方:stag tagname 在分割視窗中查看包含tagname的檔案:tags 查看到達當前位置所經過的標籤路徑:ts tagname 列出匹配tagname的標籤,如為空白,則使用標籤棧中最後的標籤:tf 跳轉至第一個匹配的標籤:tl 跳轉至最後一個匹配的標籤

跳轉快速鍵:

ctrl-] :跳轉至游標所在對象定義之處ctrl-t :返回跳轉前位置[n]ctrl-t :[n]為數字,向回跳轉n次;等價於重複n次ctrl-t操作
5、注意事項

確認vim在開啟檔案時能夠找到相關的標籤檔案tags。

taglist1、

https://github.com/vim-scripts/taglist.vim

2、功能說明

taglist是Vim的一個代碼瀏覽的外掛程式,類似IDE中的Outline視圖,可以根據不同語言的代碼顯示代碼中的包、類、介面、方法、函數、變數、屬性等內容,是Vim瀏覽代碼的一個必備工具。

 

taglist同樣需要依賴ctags命令產生tag。

3、安裝
  • 進入~/.vim/bundle目錄
  • 執行: git clone git://github.com/vim-scripts/taglist.vim.git

  • .vimrc檔案設定taglist的配置資訊,以下是我的喜好設定

      "taglist{    let Tlist_Show_One_File = 1            "只顯示當前檔案的taglist,預設是顯示多個    let Tlist_Exit_OnlyWindow = 1          "如果taglist是最後一個視窗,則退出vim    let Tlist_Use_Right_Window = 1         "在右側視窗中顯示taglist    let Tlist_GainFocus_On_ToggleOpen = 1  "開啟taglist時,游標保留在taglist視窗    let Tlist_Ctags_Cmd='/opt/local/bin/ctags'  "設定ctags命令的位置    nnoremap <leader>tl : Tlist<CR>        "設定關閉和開啟taglist視窗的快速鍵    "}    
4、使用說明

taglist參數介紹,大家可以根據自己的偏好在.vimrc中設定:

  • Tlist_Ctags_Cmd:設定ctags命令的位置
  • Tlist_Use_Horiz_Window:設定為1時,taglist視窗橫向顯示。預設縱向顯示
  • Tlist_WinHeight:設定taglist視窗的寬度
  • Tlist_WinWidth:設定taglist視窗的高度
  • Tlist_Show_One_File:設定Tlist_Show_One_File為1則只顯示當前檔案的taglist,預設顯示多個檔案中的tag
  • Tlist_Sort_Type:taglish預設按tag在檔案中出現的順序進行排序,設定為"name",taglist將以tag名字進行排序
  • Tlist_Exit_OnlyWindow:設定為1時,如果taglist是最後一個視窗,則退出vim
  • Tlist_Use_Right_Window:設定為1時,taglist視窗出現在右側,預設顯示在左側
  • Tlist_Auto_Open:如果想在啟動VIM後自動開啟taglist視窗,該參數設定為1
  • Tlist_Close_On_Select:如果想在選擇了tag後自動關閉taglist視窗,該參數設定為1
  • Tlist_GainFocus_On_ToggleOpen:設定為1時,開啟taglist游標保留在taglist視窗

當使用vim開啟某個程式檔案時,我們可以用:Tlist開啟taglist視窗,如果該程式具備類、介面、屬性等元素,就會在taglist視窗顯示出來。我們可以通過以下這些常用快速鍵來操作taglist:

  • 通過游標選擇tag,斷行符號可以跳到定義該tag的程式位置
  • 選中tag時按空格鍵,會在狀態列下方顯示該tag的完整定義
  • x,橫向放大或縮小taglist視窗
  • =,摺疊所有的tag
  • +,開啟所有的tag
5、注意事項

確認在.vimrc中使用Tlist_Ctags_Cmd定義了正確的ctags命令的位置,否則會出現找不到tag的錯誤資訊。

visualmark1、

http://www.vim.org/scripts/download_script.php?src_id=4700

2、功能說明

visualmark,顧名思義,就是在你閱讀代碼或編寫代碼的時候隨時快速打標籤,並通過快速鍵來回切換瀏覽。

3、安裝

.vim/bundle下建立檔案夾visualmark/plugin,把下載的檔案visualmark.vim複製到該檔案夾下。

4、使用說明

使用vim開啟一個檔案,使用快速鍵mm設定標籤,通過F2和shift+F2可以上下切換瀏覽。
我們還可以對標籤的樣式進行定製:
開啟visualmark.vim,找到如下代碼修改:

//根據背景色設定標籤顏色,cterm表示為原生vim設定樣式if &bg == "dark"highlight SignColor ctermfg=white ctermbg=blue guifg=white guibg=peruelsehighlight SignColor ctermbg=white ctermfg=red guibg=grey guifg=RoyalBlue3endif
5、注意事項

 

祝大家開心每一天()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.