vim牛逼的code工具: ctags+ cscope

本身總結

  1. 在個人工做目錄裏的.vimrc中作了這樣的配置:
  set tags=tags;
  set autochdir
  1. 在項目根目錄裏利用「sudo ctags -R *」,生成了tags文件。
ctags      ctrl+[   尋找變量
ctags      ctrl+]   尋找函數
ctags      ctrl+o  返回函數

http://blog.csdn.net/syfly007/article/details/6413523html

http://www.cnblogs.com/chijianqiang/archive/2012/12/17/vim-4.html程序員

https://segmentfault.com/q/1010000000262368正則表達式

轉載

Vi你們都很熟悉,某些狀況下它是咱們在Linux下惟一可用的文本編輯器。其實咱們平時所指的VI實際上是VIM(ViImproved,VI加強版)。有人經常拿VIM和emacs比較,VIM儘管不象emacs那樣有那麼多的功能,可是比emacs更方便、好用。VIM簡單易用,只要看看VIM自帶的vitutor,大約只要20分鐘就能掌握VIM的用法。對於Linux下的C/C++的程序員,使用VIM+Ctags的組合來寫程序也許是最佳的選擇。
VI的使用方法這裏就不羅嗦了,本文假設你們已花了20分鐘學習過了vitutor。本節咱們主要講一下Ctags這個程序。儘管ctags也能夠支持其它編輯器,可是它正式支持的只有VIM。而且VIM中已經默認安裝了Ctags,它能夠幫助程序員很容易地瀏覽源代碼。
熟練的使用ctags僅需記住下面七條命令:數據庫

1.$ ctags –R    ($ 爲Linux系統Shell提示符)
2. $ vi –t tag    (請把tag替換爲您欲查找的變量或函數名)
3. :ts          (ts 助記字:tags list, 「:」開頭的命令爲VI中命令行模式命令)
4. :tp          (tp 助記字:tags preview)---此命令不經常使用,能夠不用記
5. :tn          (tn 助記字:tags next) ---此命令不經常使用,能夠不用記
6. Ctrl + ]
7. Ctrl + T
 
下面咱們逐條的解釋上面的命令:
「$ ctags –R
」:「-R」表示遞歸建立,也就包括源代碼根目錄(當前目錄)下的全部子目錄。「*」表示全部文件。這條命令會在當前目錄下產生一個「tags」文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。Tags文件中包括這些對象的列表:
用#define定義的宏
枚舉型變量的值
函數的定義、原型和聲明
名字空間(namespace)
類型定義(typedefs)
變量(包括定義和聲明)
類(class)、結構(struct)、枚舉類型(enum)和聯合(union)
類、結構和聯合中成員變量或函數
VIM用這個「tags」文件來定位上面這些作了標記的對象。
剩下的命令就是定位這些對象的方法:
「$ vi –t tag」 :在運行vim的時候加上「-t」參數,例如:
[/usr/src]$ vim -t main
這個命令將打開定義「main」(變量或函數或其它)的文件,並把光標定位到這一行。若是這個變量或函數有多處定義,在VI命令行模式「:ts」命令就能列出一個列表供用戶選擇。    「:tp」爲上一個tag標記文件,「:tn」爲下一個tag標記文件。固然,若當前tags文件中用戶所查找的變量或函數名只有一個,「:tp,:tn」命令不可用。
最方便的方法是把光標移到變量名或函數名上,而後按下「Ctrl+]」,這樣就能直接跳到這個變量或函數定義的源文件中,並把光標定位到這一行。用「Ctrl+t」能夠退回原來的地方。即便用戶使用了N次「Ctrl+]」查找了N個變量,按N次「Ctrl+t」也能回到最初打開的文件,它會按原路返回 。
注意:運行vim的時候,必須在「tags」文件所在的目錄下運行。不然,運行vim的時候還要用「:settags=」命令設定「tags」文件的路徑,這樣vim才能找到「tags」文件。在完成編碼時,能夠手工刪掉tags文件。vim

cscope

一、安裝cscope

yum install cscope -ysegmentfault

二、知識點

1) 生成索引文件cscope -Rbq則生成cscope.in.out cscope.out cscope.po.out三個文件網絡

1) :cs add path/cscope.out 添加索引文件的位置編輯器

2)
:cs find c function 查看function被調用的位置
:cs find s 查找本c符號
:cs find g 查找本定義
:cs find d 查找本函數調用的函數
:cs find t 查找本字符串
:cs find f 查找本文件
:cs find i 查找包含本文件的文件函數

3)在~/.vimrc中添加set cscopequickfix=s-,c-,d-,i-,t-,e-
這樣經過:cs find xxx查找某個符號後,會當即跳轉到第一個找到該符號出現的位置,
而後能夠經過:copen來打開quickfix窗口,在quickfix窗口中顯示全部出現的位置。工具

update201709

http://edsionte.com/techblog/archives/1689/comment-page-1#comment-7620

有網絡的時候,使用LXR(The Linux Cross Referencer)在線閱讀源碼當然是一件很爽的事情。在無網絡的狀況下,只經過vim進入內核源碼那樣查找就顯得有些勉強。接下來,本文將介紹一種快速定位源碼的工具:ctags和cscope。經過vim編輯器,再配合使用上述兩種工具就能夠快速定位想要查看的源碼。好了,開始吧!

1.下載最新內核源碼包,解壓至主目錄下

接下來的步驟固然能夠在當前系統內核源碼目錄下進行,不過爲了保險期間仍是最好在主目錄下專門建立一個存放源碼的目錄。下文所說的源碼目錄均指主目錄下的源碼目錄。

2.安裝ctags

使用命令:sudo apt-get install ctags

3.安裝cscope

使用命令:sudo apt-get install cscope

4.成標籤文件

在源碼目錄下經過命令make tags生成標籤文件

5.生成索引文件

在源碼目錄下經過命令make cscope生成索引文件。

6.將索引文件導入vim中

使用命令打開vim的配置文件:sudo gedit /etc/vim/vimrc;而後在該文件下添加以下代碼:

1
if filereadable("cscope.out")
2
cs add cscope.out
3
endif
這樣每次打開vim就能夠直接使用cscope了。

完成以上步驟之後就能夠經過vim進行源碼的快速定位了。上述安裝的ctags和cscope都屬於源碼索引工具,所以僅安裝二者之一也是能夠的。不錯,雖然ctags能夠快速定位所輸入的標籤,但cscope的使用方法則更靈活。因此二者同時安裝使用起來更方便。下面是一些簡單的使用方法,僅供參考。

1.使用ctags

ctags的使用特別簡單,首先進入源碼目錄下,打開vim編輯器,在命令模式下輸入:tag tag_name 按回車便可。一般tag_name能夠是結構體名稱,函數名稱,宏變量名稱等。一般輸入上述命令後,由於找到的標籤並不惟一,因此還須要配合使用下述命令:

tfirst:跳至第一個

tnext:跳至下一個

tlast:跳至最後一個

2.使用cscope

雖然ctags使用方便快捷,但有時候使用cscope更靈活,首先能夠看cscope的幫助文件:

01
cscope 命令:
02
add :添加一個新的數據庫 (用法: add file|dir [pre-path] [flags])
03
find :查詢一個模式 (用法: find c|d|e|f|g|i|s|t name)
04
c:找到調用這個函數的函數
05
d:找到被這個函數調用的函數
06
e:找到這個 egrep 模式
07
f:找到此文件夾
08
g:找到這個定義
09
i:找文件 #包括這個文件
10
s:找到這個 C 符號
11
t:找到對其的賦值
12
help :顯示此信息 (用法: help)
13
kill :結束一個鏈接 (用法: kill #)
14
reset:重置全部鏈接 (用法: reset)
15
show :顯示鏈接 (用法: show)
經過上面的幫助文件能夠發現若是想找到request_irq函數的定義處代碼,便可使用這個命令:cs find g request_irq來進行查找。大多數狀況下查找的結果並不惟一,由於須要在多個結果中經過頭文件來繼續查看。

一般是先經過cscope大體定位到頭文件,再經過ctags在該頭文件中詳細定位。其實這兩種工具並不侷限於上述用法,更多用法能夠再深刻使用的過程當中慢慢摸索,並且配合正則表達式等效果會更好。

相關文章
相關標籤/搜索