close

我是用下面這些command
 
***********************************************************
cscope + ctags (可以寫成shell file或單獨執行都可以)
***********************************************************

1.生成database

#!/bin/sh
find ./  -name "*.c" -o -name "*.h" -o -name "*.cpp" > cscope.files
cscope -Rbq -i cscope.files
ctags -R --exclude=.svn

-R: 在生成索引檔時,搜索子目錄樹中的代碼
-b: 只生成索引檔,不進入cscope的介面
-q: 生成cscope.in.out和cscope.po.out檔,加快cscope的索引速度
-k: 在生成索引檔時,不搜索/usr/include目錄
-i: 如果保存檔列表的檔案名不是cscope.files時,需要加此選項告訴cscope到哪兒去找原始檔案列表。可以使用“-”,表示由標準輸入獲得檔列表。

然後要在觀看時vim 引用的到cscope.out和tags的資訊
必須要在產生cscope.out和tags的資料夾下vim 的command 喔!

 

2.搜尋方式

在源碼根目錄下打開任意.c文件,使用如下命令:
Ctrl+]將跳到光標所在變量或函數的定義處Ctrl+T返回
:cs find s ----查找C語言符號,即查找函數名、宏、枚舉值等出現的地方
:cs find g ----查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
:cs find d ----查找本函數調用的函數
:cs find c ----查找調用本函數的函數
:cs find t: ----查找指定的字符串
:cs find e - ---查找egrep模式,相當於egrep功能,但查找速度快多了
:cs find f ----查找並打開文件,類似vim的find功能
:cs find i ----查找包含本文件的文
以上命令也可以且按鍵來實現:
Ctrl+/ 再按s 表示:cs find s命令
同理實現cs find + g,d,c,t,e,f,i命令
cscope_map.vim說明:
有英文註釋的我就不說明了,我就說一下里邊的鍵map映射

如: nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap 表示在vim的普通模式下,即相對於:編輯模塊和可視模式,以下是幾種模式
:map普通,可視模式及操作符等待模式
:vmap可視模式
:omap操作符等待模式
:map!插入和命令行模式
:imap插入模式
:cmap命令行模式
<C-/>表示:Ctrl+/
s表示輸入(即按:s)s
: 表示輸入':'
“cs find s"表示輸入"cs find s"也即是要輸入的命令
<C-R>=expand("cword")總體是為了得到:光標下的變量或函數。cword 表示:cursor word, 類似的還有:cfile表示光標所在處的文件名吧
<CR><CR>就是回車吧,不太清楚

cn 跳到下一個搜尋

cp  跳到上一個搜尋

ctrl+oo 回到上一個畫面

cscope -d :進入cscope搜尋介面 (ctrl+d 離開)

Find this C symbol:
Find this global definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:

 

3.其他好用指令

ctrl +w 上下視窗切換

res(ize) +-(行數)  上下視窗邊界調漲+-(行數) 

:split - 將目前編輯視窗水平分割為二,新的視窗為原有的編輯緩衝區
:vsplit - 將目前編輯視窗垂直分割為二,新的視窗為原有的編輯緩衝區

:split path/to/file - 開啟新的水平分割視窗來編輯檔案
:vsplit path/to/file - 開啟新的垂直分割視窗來編輯檔案

:new - 開啟新的水平分割視窗,並且開啟新的編輯緩衝區
:vnew - 開啟新的垂直分割視窗,並且開啟新的編輯緩衝區

簡單的指令:
-----------------------------------------------------------------------------------------
CTRL+]  查找定義function的地方
CTRL+ O 回去之前指標的位置 (不知道為什麼我不能用Ctrl+T回去)
CTRL+ i 回去之後指標的位置
]]         到function開頭
[[         到下一個function的開頭



先放幾個我還沒看完的教學備忘
http://easwy.com/blog/archives/advanced-vim-skills-cscope/

http://yyq123.blogspot.tw/2010/12/vim-map.html

http://vimdoc.sourceforge.net/htmldoc/if_cscop.html

arrow
arrow
    全站熱搜

    angledark0123 發表在 痞客邦 留言(1) 人氣()