日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Vim+ctags+cscope+Nerdtree+Taglist入门

發布時間:2024/2/28 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/

解壓之后,通過以下命令安裝:


1. $ ./configure --with-flex 2. $ make 3. $ make install

?

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入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。