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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

配置vim支持源码浏览(vim+ctags+cscope)

發(fā)布時(shí)間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 配置vim支持源码浏览(vim+ctags+cscope) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

配置vim支持源碼瀏覽(vim+ctags+cscope)


介紹

windows下流行的源碼閱讀軟件是source insight,而linux則沒有與其可匹敵圖形化的源碼閱讀軟件,現(xiàn)在日趨流行的eclipse開發(fā)軟件,雖然可以較好的支持源碼中符號(hào)之間相互跳轉(zhuǎn),但總體感覺不是十分強(qiáng)大和好用,可能因?yàn)?/span>eclipse是通過cdt插件的形式來支持c/c++項(xiàng)目,很多方面表現(xiàn)還有待提高。而且eclipse在終端下無法使用,而今天的主角vim+ctags+cscope可謂是無所不能,真真的強(qiáng)大之極。下面是關(guān)于這個(gè)組合配置和使用的簡(jiǎn)單介紹,更多的功能可以日后慢慢摸索。

?

組合介紹

vimlinux超強(qiáng)的文本編輯器。

ctags對(duì)源代碼文件掃描生成交叉引用符號(hào)表,支持大多數(shù)主流語言,但相對(duì)功能簡(jiǎn)單,配合vim可以實(shí)現(xiàn)從變量和函數(shù)的調(diào)用點(diǎn)到定義點(diǎn)的跳轉(zhuǎn)。

cscope可以理解為ctags的加強(qiáng)版,但支持語言的種類要少一些,完全支持c語言。它生成的源碼符號(hào)引用表更加復(fù)雜,配合vim可以實(shí)現(xiàn)符號(hào)各引用點(diǎn)之間任意切換(比如從函數(shù)調(diào)用點(diǎn)到定義點(diǎn),從定義點(diǎn)到調(diào)用點(diǎn)等)。

關(guān)于更多的vim,ctgascscope的知識(shí)可以去它們的官網(wǎng),也可以查看man手冊(cè)了解一些基本的使用信息和幫助。

準(zhǔn)備

fedora系統(tǒng)的軟件倉(cāng)庫(kù)已包括了上述幾個(gè)軟件包,如果沒有安裝可以通過下面命令直接在線安裝

#yum install vim-enhanced ctags cscope

vim-enhancedvim的一個(gè)完全功能版,最好安裝此版本。

配置

vim

為了使vim更好支持瀏覽和編寫程序代碼,可以啟用一些默認(rèn)沒有啟用vim的擴(kuò)展功能,如顯示行號(hào),代碼自動(dòng)縮進(jìn)等。

#vim /etc/vimrc

#增加此行默認(rèn)將開啟vim行號(hào)顯示功能

set number

?

cscope

cscope需要一個(gè)配置文件才能和vim一起工作,在下面這個(gè)地址可以找到一份cscope官方的目標(biāo)配置文件,下載或者拷貝該文件至/usr/share/vim/vimxx/plugin/目錄。

cscope配置文件:http://cscope.sourceforge.net/cscope_maps.vim

?

到此一個(gè)基于vim的源碼閱讀環(huán)境已經(jīng)配置完成。

?

使用

現(xiàn)在你可以進(jìn)入一個(gè)源碼目錄做一個(gè)測(cè)試,

進(jìn)入源碼項(xiàng)目根目錄運(yùn)行下面命令建符號(hào)立交叉引用文件:

#ctags -R . && cscope -Rqb

命令成功執(zhí)行后將在當(dāng)前目錄下生成四個(gè)文件,分別為cscope.in.outcscope.out、cscope.po.outtags,他們是ctagscscope生成的索引文件。

如何使用這個(gè)功能,其實(shí)這個(gè)得看你有什么需求了,下面舉例兩個(gè)應(yīng)用例子:

1?把編輯器定位到項(xiàng)目源碼中main函數(shù)開始的位置上,操作如下:

#vim -t main

2?當(dāng)前vim編輯器中,光標(biāo)指在read函數(shù)上,這是該函數(shù)的一個(gè)調(diào)用,我相要查看它的定義:

操作:把光標(biāo)定位到read上后,可以直接通過快鍵Ctrl+]實(shí)現(xiàn)跳轉(zhuǎn)。

注:如上事例操作的前提是操作目錄須和上面提到的4個(gè)索引文件所在的目錄為同一目錄。

推薦:把生成索引文件的命令寫入一個(gè)腳本文件并放到/bin/目錄,這樣以后就可以通過運(yùn)行該腳本便捷快速的生成項(xiàng)目源碼文件的索引文件。

?

出錯(cuò)解決

再存在索引文件的目錄運(yùn)行vim時(shí),程序提示添加了cscope數(shù)據(jù)庫(kù)cscope.out,按回車可以確認(rèn)。如果再此步中出現(xiàn)載入重復(fù)的數(shù)據(jù)庫(kù)錯(cuò)誤,那是因?yàn)?/span>vimrc文件和cscope.vim配置文件中出現(xiàn)兩次重復(fù)的載入操作,可以通過修改vimrc(或者cscope.vim)文件修正,如下:

#vim /etc/vimrc

...

38 " add any database in current directory

39 if filereadable("cscope.out")

40 "cs add cscope.out

41 " else add database pointed to by environment

42 elseif $CSCOPE_DB != ""

43 " cs add $CSCOPE_DB

44 endif

可以像如下一樣使用雙引號(hào)注釋掉40行和43行,甚至可以直接刪除3843行的代碼,此段代碼在cscope.vim文件中有一份完整的拷貝。

?

Cscope快鍵解析

vimcscope的功能可以通過一些快鍵操作實(shí)現(xiàn),這些快鍵定義在cscope.vim配置文件中

查看該文件內(nèi)容:

#vim /usr/share/vim/vimxx/plugin/cscope.vim

....

99 nmap <F5>s :cs find s <C-R>=expand("<cword>")<CR><CR>

100 nmap <F5>g :cs find g <C-R>=expand("<cword>")<CR><CR>

101 nmap <F5>c :cs find c <C-R>=expand("<cword>")<CR><CR>

102 nmap <F5>t :cs find t <C-R>=expand("<cword>")<CR><CR>

103 nmap <F5>e :cs find e <C-R>=expand("<cword>")<CR><CR>

104 nmap <F5>f :cs find f <C-R>=expand("<cfile>")<CR><CR>

105 nmap <F5>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>

106 nmap <F5>d :cs find d <C-R>=expand("<cword>")<CR><CR>

....

快捷配置行解析,nmap表示定義vim非編輯模式下快鍵關(guān)鍵字,<F5>s表示快鍵組合F5s鍵,cs find c?表示前定義快鍵等效的命令組合,再后面的內(nèi)容是實(shí)現(xiàn)快鍵發(fā)生時(shí)傳遞vim中當(dāng)前光標(biāo)所在的字符內(nèi)容。cscope配置中默認(rèn)的快鍵主鍵是Ctrl+/,但這組快鍵組合在我的機(jī)器卻無法工作,所以我把默認(rèn)組合鍵主鍵都換成了F5,如果你的情況類似,也可以仿照次方式另設(shè)一個(gè)主鍵。再運(yùn)行的vim中如果想查看設(shè)置的快鍵是否生效,可以通過命令查詢,如輸入:nmap回車可以查看當(dāng)前vim中已設(shè)置的所有非編輯模式下的快鍵。

下面是一條查找函數(shù)所有調(diào)用點(diǎn)的操作事例(已上面配置文件為例):

如果你想查詢read函數(shù)的所有調(diào)用點(diǎn),移動(dòng)光標(biāo)到read單詞上,按F5+s快鍵組合后,將會(huì)在vim編輯界面的下部列出所有read符號(hào)引用條目。

?

后記

如上介紹僅是一個(gè)入門級(jí)的vim+ctagscscope配置使用文檔,關(guān)于vim強(qiáng)大的插件支持可以打造成一個(gè)超級(jí)IDE的后續(xù)報(bào)道,希望下一步可以補(bǔ)充,這個(gè)目前還沒有研究。

轉(zhuǎn)載于:https://my.oschina.net/u/2528742/blog/681053

總結(jié)

以上是生活随笔為你收集整理的配置vim支持源码浏览(vim+ctags+cscope)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。