本人以前做windows方面開發,在windows下面寫代碼大多依靠功能強大的集成開發環境IDE,如微軟的Visual studio 系列,IBM的Eclipse, Borland的JBuilder,Delphi等等。現在突然轉到Linux下,使用vi的感覺很不自在,比如一個*.c文件中引入一大堆的.h文件, 在這個*.c文件中,使用的某個函數function(param1,param2),不知道是哪個文件中聲明的。此時如果是在windows平臺下,使 用任何一款IDE都能很方便的跳轉到函數原型處,但在Linux下就不是那樣的方便了,此時雖然也可以使用grep,但還是有點煩人。 請教同事,他們用的是Ctag,從網上下載exuberant-ctags,安裝後,首先,在源碼根目錄處建立tags文件,指令如下:Ctag -R 此時在當前目錄下就創建了一個叫tags的文件。 第二.使用vi打開*.c文件,如果想查看function(param1,param2)在多少地方引用了或者在什麼地方聲明的,可將光標移到上說的函 數處,在vi的命令符狀態輸入:tag function(或者直接按 CTL+}),vi將跳轉到找到第一個function的*.c文件或*.h文件中。 第三.如想看看到底有多少文件引用了該函數,可在vi命令符狀態輸入:ts,就可以看見有多少地方使用了該函數。 第四.按CTL+T鍵將返回到原來地方。 vi+indent+ctag編輯c vim結合ctag,indent是比較好的用於編輯,查看c語言源程序的方法。 ctag完成文件間元素交叉關聯。 ctag -R * :ta 標誌符 ctrl+] ctrl+o ctrl+t vi -t 標誌符 indent爲源代碼進行格式化。 :%!indent 說說在fedora上使用ctags和cscope看代碼 我裝的fedora6上的vim版本是7.0,帶有 ctags-5.6和 cscope-15.5的支持。我選擇了工作機使用linux fedora6,系統自帶的word和看pdf文件的軟件都有,收發郵件的軟件也有,挺方便的,好用,就是看代碼的軟件需要自己配一下,麻煩一點,不過配 好了以後從速度和使用習慣上比sourceinsight好使。參考了網上一些人的經驗,實踐了一下,寫這個文檔總結也許對想了解了解ctags和 cscope的人有幫助。 有很多程序員在linux上習慣使用vi編輯器,也有一些人喜歡使用emacs,不過我個人還是傾向於vi,其實用慣了vi就不喜歡用 windows上的編輯器了,其實原因很簡單:使用鍵盤完成查找和替換比用鼠標準確和快,而vi都使用鍵盤操作實現功能。目前vim是類似於vi的編輯 器,它是開源項目而且功能更多,而ctags和 cscope就是它的插件,下面針對vim 來談談配置使用ctags 和cscope看代碼。 1。需要下載安裝 taglist是vim的插件,用來在屏幕左邊開窗口顯示代碼的全局變量、函數名稱 下載地址:http://www.vim.org/scripts/script.php?script_id=273 我下載的是taglist-43.zip 安裝的方法是將這個包在/usr/share/vim/vim70下展開 2。對應需要看的代碼生成cscope的數據庫,這個過程也叫訓練 我需要看的代碼有三部分一部分是linux內核,另外兩個部分是庫和應用層代碼。 Linux內核代碼針對我需要的部分整理出數據庫,而不相關的部分不參加整理 先建路徑: mkdir $HOME/readcode mkdir $HOME/readcode/cscope-kernel mkdir $HOME/readcode/cscope-app 進入路徑: cd readcode 建立生成cscope 數據庫的文件文件名是create-kernel.sh LNX=$HOME/build/linux-2.4.22 find $LNX / -path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o / -path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" -prune -o / -path "$LNX/tmp*" -prune -o / -path "$LNX/Documentation*" -prune -o / -path "$LNX/scripts*" -prune -o / -name "*.[chxsS]" -print >$HOME/readcode/cscope-kernel/cscope.files cd $HOME/readcode/cscope-kernel cscope -b -q -k cd $HOME/readcode 執行 source create-kernel.sh 會在目錄$HOME/readcode/cscope-kernel下生成cscope.out文件 對應用層代碼生成cscope的數據庫要簡單地多 它的生成腳本: APP=$HOME/build/App find $APP -name "*.cpp" -print >$HOME/readcode/cscope-app/cscope.files find $APP -name "*.[ch]" -print >>$HOME/readcode/cscope-app/cscope.files cd $HOME/readcode/cscope-app cscope -b -q -k cd $HOME/readcode 應用程序代碼有一些是c++的,所以將.cpp格式的代碼列出來生成cscope數據庫 3。配置.vimrc文件 .vimrc內容如下: set cst set csto=1 set cscopequickfix=s-,c-,d-,i-,t-,e-,f- cs add /home/yangxl/readcode/cscope-kernel/cscope.out cs add /home/yangxl/readcode/cscope-app/cscope.out let Tlist_Enable_Fold_Column = 0 let Tlist_WinWidth = 30 let Tlist_Show_One_File = 1 set tabstop=4 nmap :cs find d =expand("") nmap :cs find c =expand("") nmap :cs find t =expand("") nmap :cs find e =expand("") nmap :cs find f =expand("") nmap :cs find i =expand("") nnoremap :TlistToggle 最下面這幾行定義了F2-F9功能的快捷鍵 F9是打開關閉左邊taglist窗口的快捷鍵 具體它的語法解釋在vi中通過鍵入 :help cscope 學習和理解 4。使用方法 用vi打開參加訓練的代碼,將光標停留在調用的方法上按ctrl-], 是不是出現了這個方法的原型代碼,按F9鍵多出左邊窗口,顯示方法名列表和宏定義和全局變量,再按一次F9左邊窗口消失。 顯示加載的數據庫 :cs show 能看到加載了兩個cscope.out文件 :cs find 2 方法名 或 :cs find d 方法名 對應快捷鍵F2 完成找到被這個方法調用的方法名 :cs find 3 方法名 或 :cs find c 方法名 對應快捷鍵F3 完成找到調用這個方法的方法名 :cs find 4 字符串名稱 或 :cs find t 字符串名稱 對應快捷鍵F4 找到出現的字符串 :cs find 7 文件名 或 :cs find f 文件名 對應快捷鍵F7 找到文件 :cs find 8 文件名 或 :cs find i 文件名 對應快捷鍵F8 找到include這個文件的文件 :TlistToggle 對應快捷鍵F9 5。沒有做到的 考慮代碼在不斷的編寫過程中,怎樣做才能同步cscope的庫呢? |
vi中結合ctag查找函數聲明
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
PXE配合Kickstart無人值守——批量裝機簡單如喝水(詳細)
osc_12m05m5l
2024-05-14 00:19:25
BlackHat ASIA 議題解讀 | 安卓Netlink內核模塊中隱藏的“傳送門”
百度安全
2024-05-13 21:42:48
Linux服務器配置-安裝docker-ce社區版
原創
2024-05-13 13:21:57
com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xb1
原創
2024-05-30 22:15:03
【建議收藏】手把手教您如何升級到DevExpress最新版本!
原創
2024-05-30 12:19:46
二進制文件查看工具和方法
原創
2024-05-30 02:27:38
由淺入深在實踐中玩轉Zabbix,解決剩下20%的監控需求!
本文整理自Zabbix中級認證專家李銘栓(滿分學員)在Zabbix Meetup廣州站的演講。 掌握這幾種監控方式解決80%的監控問題,剩下的20%如何實現?這裏有答案! 幾點經驗分享: 1
Zabbix中國
2024-05-24 22:33:53
5款可以將錄屏轉換成動圖的錄屏轉GIF軟件工具介紹
噓噓者
2024-05-24 12:56:36
流水線 YAML 高級用法來了!大幅降低重複代碼、靈活編排多任務
原創
2024-05-16 21:13:44
Visual C++界面開發組件Xtreme Toolkit Pro v24測試版發佈——完全支持SVG
原創
2024-05-16 12:19:55
AI 一鍵生成高清短視頻,視頻 UP 主們捲起來...
原創
2024-05-15 21:17:30
界面組件DevExpress Reporting v24.1預覽版 - 擁有原生Angular報表查看器
原創
2024-05-14 12:21:34
安裝Mysql時遇到的一些疑難雜症!!!
osc_hwc3munb
2024-05-14 02:04:37
Linux 服務器配置-使用portainer安裝gitlab
原創
2024-05-13 13:21:59