Vim+ctags+cscope+Nerdtree+Taglist入门
介于linux下并沒有什么像Source?Insight這樣優秀的內核源碼閱讀工具,只有一些模仿的都不倫不類,所以我用打造vim為一個合格的源碼閱讀器,看著賊爽。
可能一下子看起來那么多東西可能怕怕的,但是可以一個一個來。Vim+ctags可以先用著,能夠實現自動跳轉。然后再一點一點加入其他的來完善。
下面就是我的vim的效果圖(實際上不難,別被嚇到),左邊是Taglist?右邊是Nerdtree,然后可以通過ctrl+點擊可以跳轉到指定函數,通過ctrl+T就可以返回。
一.Ctags
1.1?Ctags安裝
我用的是ubuntu,所以直接用sudo?apt-get?install?ctags就行
或者按照下面的步驟安裝:
???1)從http://ctags.sourceforge.net/下載源代碼包后,解壓縮生成源代碼目錄,
???2)然后進入源代碼根目錄執行./configure,
???3)然后執行make,
???4)編譯成功后執行make?install。
這樣就能安裝成功了。
1.2?Ctags使用
到指定目錄下使用語句:
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
這里,--c++-kinds=+ps是為c/c+語言添加函數原型信息。--fields=+iaS是為標簽添加繼承信息(inheritance),訪問控制信息(access)和函數特征(Signature)如參數表或原型等。--extra=+q是為類成員添加標簽。
(使用Ctags還有一個方法,就是在vimrc中添加上述語句,然后設置快捷鍵來生成)
執行完這句話就能在當前目錄下生成一個tags,這個時候在當前目錄vim一個文件,就能夠通過對特點函數用ctrl+]?快捷鍵跳轉到定義處。
兩個基本的一些操作
1Ctrl?+?]????????????(跳轉到定義處)
2Ctrl?+?T???????????(退回至跳轉前)
我的vim關于Ctags的配置:
" ctags的配置 ctrl+f12快速生成tags map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
二.安裝使用Taglist
Taglist就是一開始顯示圖片的左邊部分,能顯示這段代碼的變量名,方法名等。
(1)下載taglist.zip壓縮包,并解壓
(2)將doc里面的taglist.txt復制到~/.vim/doc/下面,如果不存在就創建這個文件夾;將plugin里面的taglist.vim加入到~/.vim/plugin/下面就行。
(3)我給Taglist設置了一個快捷鍵,這樣打開vim的時候就可以直接通過快捷鍵進行打開以及關閉.
"?以F2作為Tlist的快捷鍵
?map?<F2>?:Tlist?<CR>?
(4)使用:接下來用vim打開一個文件只需要輸入 :Tlist就能調出,或者用剛才設置的快捷鍵
我的關于Taglist的配置:
" Tlist 的快捷鍵map <F2> :Tlist <CR>
三.安裝使用cscope
使用cscope能夠:
以便能夠在源代碼中:
?1.?快速切換至函數的定義。
?2.?函數的聲明.
?3.?查找某個函數被使用的情況。
3.1 安裝
如果你的系統沒有安裝cscope,可以通過以下鏈接下載到最新版本的cscope的源代碼:
?
http://sourceforge.net/projects/cscope/files/
解壓之后,通過以下命令安裝:
?
3.2 使用
主要是利用cscope生成cscope.out數據庫,可以直接用:
cscope?-Rbkq??遞歸所有文件生成.out文件
或者可以先將相關的文件匯集到某一個文件(cscope.files)中,然后再使用cscope?-bkq?-i?cscope.files??生成out文件
?
然后可以將這個out文件加入vimrc中進行配置,或者直接在用vim打開的文件中,用:cs?add添加文件
?
"cscope?find"的用法:
cs?find?c|d|e|f|g|i|s|t?name
| 0 ?或 ?s | 查找本?C?符號(可以跳過注釋) |
| 1 ?或 g | 查找本定義 |
| 2 或 ?d | 查找本函數調用的函數 |
| 3 或 ?c | 查找調用本函數的函數 |
| 4 或 t | 查找本字符串 |
| 6 或 ?e | 查找本?egrep?模式 |
| 7 ?或 ?f | 查找本文件 |
| 8 ?或 ?i | 查找包含本文件的文件 |
可以用如下命令查找函數,比如假設我要查找 f2fs_init()函數:
cs?find?1?f2fs_int?
?
我在vim中關于cscope的配置:
" vim支持cscope set cscopequickfix=s-,c-,d-,i-,t-,e- " 添加 cscope.out cs add /home/jackie/fragmetation/linux-4.12.1/linux/cscope.out四.安裝使用Nerdtree
(1)獲得Nerdtree.zip文件,并解壓
(2)將doc里面的taglist.txt復制到~/.vim/doc/下面,如果不存在就創建這個文件夾;將plugin里面的taglist.vim加入到~/.vim/plugin/下面就行。
(3)輸入命令:vim,然后在vim中輸入命令?:NERDTree?再按回車就可以看到安裝成功了
我在vim中關于NerdTree的配置:
" 將 NERDTree 的窗口設置在 vim 窗口的右側(默認為左側)let NERDTreeWinPos="right" " 當打開 NERDTree 窗口時,自動顯示 Bookmarks let NERDTreeShowBookmarks=1 " 在 vim 啟動的時候默認開啟 NERDTree(autocmd 可以縮寫為 au)"autocmd VimEnter * NERDTree
最后附上我的vim配置:
" my configuration " 關閉vi的一致性模式,避免以前版本的一些Bug和局限 set nocompatible" 打開鼠標功能 set mouse=asyntax on "配色 syntax enable "語法高亮" 設置取消備份,禁止臨時文件生成 set nobackup set noswapfile" 設置C/C++方式自動對齊 set autoindent set cindent set smartindent" 設置編碼方式 set encoding=utf-8"set number "顯示行號 set tabstop=4 "tab寬度 set shiftwidth=4 "設置自動對齊空格數filetype on "檢測文件類型 filetype indent on "針對不同文件采用不同的縮進方式 filetype plugin on "允許插件set showmatch "設置代碼匹配,包括括號匹配情況set nocp" Tlist的配置 let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 " 用ctrl+f1代替 :Tlist并且不需要回車確認" ctags的配置 ctrl+f12快速生成tags map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>" vim支持cscope set cscopequickfix=s-,c-,d-,i-,t-,e- " 添加 cscope.out cs add /home/jackie/fragmetation/linux-4.12.1/linux/cscope.out" Tlist 的快捷鍵 map <F2> :Tlist <CR>" 設置NerdTree map <F3> :NERDTreeMirror<CR> map <F3> :NERDTreeToggle<CR>" 將 NERDTree 的窗口設置在 vim 窗口的右側(默認為左側) let NERDTreeWinPos="right" " 當打開 NERDTree 窗口時,自動顯示 Bookmarks let NERDTreeShowBookmarks=1 " 在 vim 啟動的時候默認開啟 NERDTree(autocmd 可以縮寫為 au) "autocmd VimEnter * NERDTree
總結
以上是生活随笔為你收集整理的Vim+ctags+cscope+Nerdtree+Taglist入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HashMap 详解
- 下一篇: hadoop3.0.0 源码阅读之一:I