Vim + ctags + taglist + code_complete另外一篇文章將Vim改造為強大的IDE—Vim整合Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有圖有真相)http://blog.csdn.net/bokee/article/details/6633193http://bbs.chinaunix.net/thread-699109-1-1.html
所謂“工欲善其事,必先利其器”,所謂“磨刀不誤砍柴工“。在linux 下,vim 時一種最常見的編輯器,很多linux的發行版就內建了(不過
Ubuntu目前時需要自己安裝的,預設只帶了vi)。今天搞了半天了Vim,通過幾個外掛程式來武裝我的vim,使其能向傳說中的一樣成為C/C++程式員的利器。
通過配置和外掛程式,實現的功能有:文法高亮+自動縮排+函數自動補全+變數函數的跟蹤+列出原始碼中的函數變數等
用到的工具有:Vim+.vimrc設定檔+Ctags+taglist
使用效果:http://files.myopera.com/mbbill/files/code_complete.gif
PS:這個效果非常炫的!~
vim http://www.vim.org ubuntu可使用sudo apt-get install vim
code_complete.vim 外掛程式http://www.vim.org/scripts/script.php?script_id=1764
ctags 一般安裝完vim後都會有,ubuntu中好像是不支援,需要下載:http://www.vim.org/scripts/script.php?script_id=610
(ubuntu可直接在軟體管理器搜尋安裝)
taglis 下載:http://www.vim.org/scripts/script.php?script_id=273
(我上傳的 http://pan.baidu.com/share/link?shareid=349735&uk=2449976461)
一. vim 配置
1、設定檔的位置
在目錄 /etc/ 下面,有個名為vimrc的檔案,這是系統中公用的vim設定檔,對所有使用者都有效。而在每個使用者的主目錄下,都可以自己建立私人的設定檔,命名 為:“.vimrc”。例如,/root目錄下,通常已經存在一個.vimrc檔案。我就在自己的$HOME目錄下建立了了.vimrc檔案來配置 的。(如果設定/etc/vimrc對所有使用者都有效配置,某個userHOME下在.vimrc僅對這個user有效)
2、設定文法高亮顯示
1) 開啟.vimrc,添加以下語句來使得文法高亮顯示:
syntax on
2) 如果此時文法還是沒有高亮顯示,那麼在/etc目錄下的profile檔案中添加以下語句:
export TERM=xterm-color
3、設定Windows 風格的C/C++自動縮排(添加以下set語句到.vimrc中)
1)不討論定位字元為8還是為4較好,這裡設定(軟)定位字元寬度為4:
set tabstop=4
set softtabstop=4
2)設定縮排的空格數為4
set shiftwidth=4
3)設定自動縮排 :即每行的縮排值與上一行相等;使用 noautoindent 取消設定:
set autoindent
4)設定使用 C/C++ 語言的自動縮排方式:
set cindent
5)設定C/C++語言的具體縮排方式(以我的windows風格為例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左側顯示文本的行號,可以用以下語句:
set nu
7)最後,如果沒有下列語句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
PS:自動縮排有兩個選項,代碼:
set autoindent 與 set cindent
autoindent 就是自動縮排的意思,當你在輸入狀態用斷行符號鍵插入一個新行,或者在 normal 狀態用 o 或者 O 插入一個新行時,autoindent 會自動地將當前行的縮排拷貝到新行,也就是"自動對齊”,當然了,如果你在新行沒有輸入任何字元,那麼這個縮排將自動刪除。
cindent 就不同了,它會按照 C 語言的文法,自動地調整縮排的長度,比如,當你輸入了半條語句然後斷行符號時,縮排會自動增加一個 TABSTOP 值,當你鍵入了一個右花括弧時,會自動減少一個 TABSTOP 值。
二. code_complete 配置
把下載的code_complete.vim拷貝到plugin目錄下,一般都在(我的是)/usr/share/vim/vim72/plugin下 (不同的vim版本vim72可能時其他 ,我的目前時7.2版本)
在vim中使用<tab>鍵就可以補全函數原型了。具體不全的快速鍵的定義,如果in代表#include " ",見:code_complete.vim檔案中的定義。
三. 用ctags命令產生tags檔案,ctags -R --c-kinds=+p --fields=+S /usr/include 應該算是建立索引表(預設會在目前的目錄產生tags檔案),然後把產生的tags檔案拷貝到你編程的目錄。
注意:ctags -R 後面不加上絕對路徑,就時建立目前的目錄的下所有檔案的索引,那麼建立的索引檔案中都是寫的相對路徑,你將tags檔案拷貝到其他目錄去用時,它就會找不到相應的函數/變數等。
"-R"表示遞迴建立,也就包括原始碼根目錄下的所有子目錄下的來源程式。
"tags"檔案中包括這些對象的列表:
用#define定義的宏
枚舉型變數的值
函數的定義、原型和聲明
名字空間(namespace)
類型定義(typedefs)
變數(包括定義和聲明)
類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
類、結構和聯合中成員變數或函數
VIM用這個"tags"檔案來定位上面這些做了標記的對象,下面介紹一下定位這些對象的方法:
1) 用命令列。在運行vim的時候加上"-t"參數,例如:
[/home/admin/src]$ vim -t foo_bar
這個命令將開啟定義"foo_bar"(變數或函數或其它 )的檔案,並把游標定位到這一行。
2) 在vim編輯器內用":ta"命令,例如:
:ta foo_bar
3) 最方便的方法是把游標移到變數名或函數名上,然後按下"Ctrl-]"。用"Ctrl-o"退回原來的地方。
注意:運行vim的時候,必須在"tags"檔案所在的目錄下運行。否則,運行vim的時候還要用":set tags="命令設定"tags"檔案的路徑,這樣vim才能找到"tags"檔案。
四. taglist的配置和使用
下載taglist壓縮包,並解壓,cp plugin/taglist.vim /usr/share/vim/vim72/plugin/ ; cp doc/taglist.txt /usr/share/vim/vim61/doc/
啟動vim,用 “:helptags .”來配置好協助檔案;重啟vim,用“:TlistToggle”來開啟和關閉taglist視窗;可以用“:help taglist”來獲得更多協助信
五.配置ccompelete
autocmd Filetype c set omnifunc=ccomplete#Complete
參考資料:
http://blog.chinaunix.net/u2/74761/showart_1096872.html
http://www.linuxsir.org/bbs/showthread.php?p=2095747#post2095747 (vim很強大功能介紹)
http://linux.chinaunix.net/bbs/thread-1036769-1-1.html
http://blog.chinaunix.net/u/553/showart_288387.html
轉自:http://blog.csdn.net/shi_869160/archive/2010/10/07/5925059.aspx