vim ctags使用方法

來源:互聯網
上載者:User
windows下很多人都使用source insight 編寫和查看代碼。linux下可以使用VIM,剛開始會覺得VIM像windows下的記事本,而如果使用得當,它並不比source insight 遜色。    在這裡,我會盡我所能細緻地講清楚如何把vim變成source insight, 然而你仍然需要積極地思考,並且必須自己去摸索一些東西。    為了避免過於羅嗦,我把基礎的部分放在後面,如果你越看越覺得太簡單了,那麼本文並不適合你;如果看完前面的仍有疑問或者看不懂前面說的是什麼東西,不用擔心,後面會有一些必備的知識介紹。一、用好系統內建軟體ctags大部分的unix系統都有ctags軟體,它能跟vim很好地合作。用途:    產生c語言的標籤檔案,實現相關c檔案之間的跳轉。用法:    1.產生標籤檔案        在目前的目錄下(運行$提示符後面的命令):         $ctags -R .      -R表示recursive,遞迴,為目前的目錄及其子目錄中的c檔案產生標籤檔案。最後一個.表示在目前的目錄。        運行完目前的目錄會多一個檔案tags,就是c標籤的索引檔案。    2.跳轉        1)用vim開啟一個已經建過標籤的c檔案            2)ctrl+] 找到游標所在位置的標籤定義的地方        3)ctrl+t 回到跳轉之前的標籤處    注意:此時運行vim,必須在"tags"檔案所在的目錄下運行。否則,運行它會找不到"tags"檔案,而需要在vim中用":set tags="命令設定"tags"檔案的路徑。對於一個稍微大點的項目,你可能在任何一個目錄下開啟vim,然而在每個目錄下都產生一個tags檔案並不 是個好主意,那麼如何解決呢?方法是在.vimrc中增加一行:        set tags=tags;/    這是告訴vim在目前的目錄找不到tags檔案時請到上層目錄尋找。二、需要額外安裝的指令碼:1、taglisthttp://www.vim.org/scripts/script.php?script_id=273若你下載時地址已改變,請到 www.vim.org 找到正確的地址,這很簡單。用途:    開啟後,可以顯示源碼的整體架構,方便地進行跳轉。(用慣source insight的人一定勾起某些回憶了^_^)用法:    下載外掛程式並安裝,使用時在vim中輸入命令        :Tlist    即可開啟/關閉taglist視窗。    一個簡單的方法是設定快速鍵,在.vimrc中增加一行:        nnoremap <silent> <F8> :TlistToggle<CR>    這樣在vim中按F8就可以開啟/關閉taglist了。    更多相關配置請看後面關於.vimrc的介紹。三、基礎知識探討    約定:為了方便和準確,我們約定本文中"$"標示符後的命令為在終端下運行,而":"後的命令為在vim中運行。VIM的設定檔一般放在使用者主資料夾下,也就是非root狀態時在終端運行        $cd ~/    會到的那個目錄,檔案名稱為.vimrc。    看不到?有兩個可能:        1、檔案名稱前面有一個點,表示是隱藏檔案,ls查看時需加-a選項。            $ls -a        2、你還沒有建.vimrc檔案,自己建立一個就行,先建個空的吧,以後可以不斷往裡面填東西。            $touch .vimrc    主資料夾下還有一個.vim檔案夾,沒有請自己mkdir        $mkdir ~/.vim    在.vim檔案夾下,再建兩個子檔案夾:plugin和doc        $mkdir ~/.vim/plugin        $mkdir ~/.vim/doc    plugin檔案夾下放外掛程式,doc檔案夾下放相應的help文檔。    去下一個taglist吧(我們應該把它叫作指令碼還是外掛程式呢?它是放在plugin檔案夾下的,那麼應該是外掛程式;而在vim.org,它是作為scripts存在,那麼應當是指令碼。),我們當作例子來請解。    下載的是一個zip包,把它放在 ~/.vim 目錄下,然後        $unzip filename.zip    它已經自動把taglist.vim和taglist.txt分別放到plugin、doc檔案夾下了。    這時重新啟動vim        $vim    運行        :Tlist    發現旁邊多了一欄沒有?如果你開啟的是c檔案,並且已經產生了tags檔案,那麼裡面應當會顯示一些有用的資訊。    這個時候,taglist的help文檔已經在 ~/.vim/doc 目錄下了,但是你在vim下敲        :help Tlist    卻沒有任何反應,那是因為vim還沒有擷取協助文檔裡面的tag,解決方案是在vim下        :helptags ~/.vim/doc    現在,你再        :help Tlist    看看有沒有反應?    關於.vimrc    我自己的.vimrc也在不斷地完善中,完善的過程中得益於從網路上擷取的很多知識,感謝提供資訊的朋友,也是他們促使我寫下這篇東西。我把自己.vimrc的一部分貼在下面,你可以把這些根據需要加到你的.vimrc裡面去。".vimrc"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" General""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""For ctags, then it can find the 'tags' file even not in current directoryset tags=tags;/"Get out of VI's compatible mode..set nocompatible"Sets how many lines of history VIM har to rememberset history=400"Set to auto read when a file is changed from the outsideset autoread"Have the mouse enabled all the time:"when you need to copy from vim, maybe you have to ':set mouse=' firstset mouse=a"""""""""""""""""""""""""""""""""""""" Colors and Fonts""""""""""""""""""""""""""""""""""""""Enable syntax highlightsyntax enable"set colorschemecolorscheme elflord"endif"""""""""""""""""""""""""""""""""""""" VIM userinterface""""""""""""""""""""""""""""""""""""""Set 7 lines to the curors away from the border- when moving vertical..set so=7"Turn on WiLd menuset wildmenu"Always show current positionset ruler"The commandbar is 2 highset cmdheight=2"Show line numberset nu"Set backspaceset backspace=eol,start,indent"Bbackspace and cursor keys wrap toset whichwrap+=<,>,h,l"show matching bracetsset showmatch"How many tenths of a second to blinkset mat=2"Highlight search thingsset hlsearch"imediately show the search resultset is"""""""""""""""""""""""""""""""""""""" Folding""""""""""""""""""""""""""""""""""""""Enable folding, I find it very usefulset nofenset fdl=0"""""""""""""""""""""""""""""""""""""" Text options"""""""""""""""""""""""""""""""""""""set expandtabset shiftwidth=2set ambiwidth=doubleset smarttab"Set Tab=4 spacesset ts=4set lbrset tw=500set selection=inclusive   """"""""""""""""""""""""""""""   " Indent   """"""""""""""""""""""""""""""   "Auto indent   set ai   "Set auto indent width = 4 spaces   set sw=4   "Smart indet   set si   "C-style indenting   set cindent "usage: select codes, press '=' key, the codes will autoindenting   "Wrap lines   set wrap"Encoding settingsif has("multi_byte")    " Set fileencoding priority    if getfsize(expand("%")) > 0        set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1    else        set fileencodings=cp936,big5,euc-jp,euc-kr,latin1    endif    " CJK environment detection and corresponding setting    if v:lang =~ "^zh_CN"        " Use cp936 to support GBK, euc-cn == gb2312        set encoding=cp936        set termencoding=cp936        set fileencoding=cp936    elseif v:lang =~ "^zh_TW"        " cp950, big5 or euc-tw        " Are they equal to each other?        set encoding=big5        set termencoding=big5        set fileencoding=big5    elseif v:lang =~ "^ko"        " Copied from someone's dotfile, untested        set encoding=euc-kr        set termencoding=euc-kr        set fileencoding=euc-kr    elseif v:lang =~ "^ja_JP"        " Copied from someone's dotfile, unteste        set encoding=euc-jp        set termencoding=euc-jp        set fileencoding=euc-jp    endif    " Detect UTF-8 locale, and replace CJK setting if needed    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"        set encoding=utf-8        set termencoding=utf-8        set fileencoding=utf-8    endifelse    echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"endif""""""""""""""""""""""""""""""""""""""plugins"""""""""""""""""""""""""""""""""""""" Tlistif &difflet Tlist_Auto_Open=0 "don't auto pen when compare two fileselselet Tlist_Auto_Open=1 "auto pen Tlist when open a fileendif"set taglist window in right, delete the following line if you don't likelet Tlist_Use_Right_Window=1let Tlist_Auto_Update=1 let Tlist_File_Fold_Auto_Close=1"auto close Tlist when exiting file.let Tlist_Exit_OnlyWindow = 1 nmap <F7> :copen<CR>nmap <F6> :cclose<CR>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.