在vim中使用cscope查詢呼叫、定義函式和變數的地方
在vim中用了一陣子ctags,確實美中不足。ctags只能根據呼叫函式的地方查詢定義該函式的地方,不能根據定義函式的地方查詢都有哪些地方呼叫了
該函式。於是又學習了cscope。Cscope在主頁上說它具有毋庸置疑的UNIX血統,早在PDP-11的時代就已經在貝爾實驗室開發出來了。我的
Linux是SuSE10.0,系統自帶的有cscope軟體。
一、將
http://cscope.sourceforge.net/cscope_maps.vim
另存為檔案~/.vim/plugin/cscope_maps.vim
二、因為cscope將“ctrl+空格”作為對映鍵,但是這樣會調出輸入法,因此將~/.vim/plugin/cscope_maps.vim檔案中的替換為(或者是你沒有對映過的你喜歡的快捷鍵)
三、進入C語言原始碼目錄,建立符號表:
ctr-D退出後,當前目錄會多一個檔案cscope.out,這個檔案比tags大多了。
四、使用指南
1)使用下面的命令直接進入main函式定義的地方,如果有多個的話,輸入索引號,回車。
[email protected]:~/linux/linux0.11/source-0.11> vi -t main
2)將游標停留在一個函式或變數上,"ctrl+]",將直接跳轉到定義該函式的地方。
3)將游標停留在一個函式或變數上,"ctrl+\"再輸入s,這樣就會出現所有呼叫、定義該函式的地方,輸入索引號,回車即可。
4)將游標停留在一個函式或變數上,再輸入s,這樣就會出現所有呼叫、定義該函式的地方,輸入索引號,回車後會以水平方式在另外一個視窗顯示。
5)將游標停留在一個函式或變數上,再輸入s,這樣就會出現所有呼叫、定義該函式的地方,輸入索引號,回車後會以垂直方式在另外一個視窗顯示。
6)ctrl+t回到原來跳轉前的地方,連續按兩下’’可以再回去。
附:
vim分割視窗的操作
:split 水平(上下)分割視窗
:vsplit或者CTRL-W v 垂直(左右)分割視窗
:new 水平分割視窗,建立空檔案
:vnew 垂直分割視窗,建立空檔案
vim多視窗操作命令
:qall 退出所有視窗
:wall 儲存所有視窗
:wqall或者:xall 儲存並退出所有視窗
:wqall!或者:xall! 儲存並退出所有視窗,如果有的檔案只讀,不需要先設定寫許可權
:qall! 強制退出所有視窗
CTRL-W W 在視窗間移動
CTRL-W O 關閉其他所有視窗
參考文獻:
1)
http://cscope.sourceforge.net
2)
http://cscope.sourceforge.net/cscope_vim_tutorial.html
3)
~/.vimrc
4)
對~/.vimrc的改進
相關推薦
在vim中使用cscope查詢呼叫、定義函式和變數的地方
在vim中用了一陣子ctags,確實美中不足。ctags只能根據呼叫函式的地方查詢定義該函式的地方,不能根據定義函式的地方查詢都有哪些地方呼叫了 該函式。於是又學習了cscope。Cscope在主頁上說它具有毋庸置疑的UNIX血統,早在PDP-11的時代就已經在貝爾實驗室開發出來了。我的 Linux是S
SQl中的UDF(使用者自定義函式)與儲存過程的區別、優點
UDF定義: 和儲存過程很類似,使用者自定義函式是一組有序的T_SQL語句,這些語句被預先優化和編譯,並且可以作為一個單元來進行呼叫。UDF和儲存過程的主要區別在於結果的返回方式。為了能支援多種的不同的返回值,UDF比儲存過程有更多的限制。 UDF和儲存過程的具體區別: 儲
儲存過程中呼叫自定義函式(不在同一使用者下)提示無許可權或識別符號無效
問題描述: 在A使用者下自定了一個函式 : getName(); 然後在B使用者下建立儲存過程,呼叫了A使用者下的自定義函式getName;在編譯儲存過程時提示函式 getName無效。 解決方法: 將A使用者下自定義函式getNa
linux命令在系統中的查詢順序、分類和基本使用
pass 終端 ext src its echo media oot 命令 linux命令在系統中的查詢順序 在系統中輸入一條命令時,系統的查詢查詢順序為 linux命令的分類 內部命令:命令本身存放在系統內存中,是shell程序的一部分,這些命令由shell程序內部完
Mysql中儲存過程與自定義函式的區別
建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi
學會使用MySQL中自定義函式和儲存過程
一、快速瞭解什麼是儲存過程和函式? 儲存過程和函式是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,呼叫儲存過程 和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對 於提高資料處理的效率是有好處的。 在對儲存過程或函式進行操作時,需要
在vue中多次呼叫同一個定義全域性變數的例項
在Vue開發中,有很多場景會用到多次重複的API請求。 例如: 前端精品教程:百度網盤下載 ? 1
關於在vim中的查詢和替換
1,查詢 在normal模式下按下/即可進入查詢模式,輸入要查詢的字串並按下回車。 Vim會跳轉到第一個匹配。按下n查詢下一個,按下N查詢上一個。 Vim查詢支援正則表示式,例如/vim$匹配行尾的"vim"。 需要查詢特殊字元需要轉義,例如/vim\$匹配"vim$"。 2,大小寫敏感查詢 在查詢
異常爬蟲demo、 find函式和findAll函式 以及正則表示式查詢元素
程式碼位於書的第1-2章 # from urllib.request import urlopen # from bs4 import BeautifulSoup # html = urlopen("http://pythonscraping.com/pages/page1
如何寫一個php擴充套件中深度查詢與新增的函式
寫擴充套件時經常遇到從一個多維的陣列中查詢元素,或把一個元素新增到多維陣列中,當維度超過3個時, 就會寫出一堆程式碼來比較繁瑣了,對於這種情況可以定義一個引數可變的函式解決 新增: void lycitea_helpers_common_depthadd(int args, cha
C語言中呼叫靜態庫函式和動態庫函式的方式
C語言中呼叫動態庫函式的兩種方式 方式一.隱式呼叫 將動態庫的相關檔案拷貝到當前目錄下(lib、dll),然後新增以下程式碼,在程式中指定連線庫函式。 注意:第二個引數給出的是引入庫檔案(或稱“匯出庫檔案”),而不是dll。在程式執行過程中,lib將dll中需要用到的函式對映到對應的記憶
shell呼叫自定義函式及傳參
1 單個引數 #!/bin/bash function LoopPrint() { count=0; while [ $count -lt $1 ] ; do echo $count; let +
Python 函式呼叫&定義函式&函式引數
一.函式呼叫 就拿abs()函式來舉例 用來返回數值的絕對值 >>> abs(-5)5 二.定義函式 我們可以通過def 來自定義函式,格式為 def 函式名(引數): 舉一個定義計算兩個數值相乘的函式: def product(x
宣告、定義區別(變數、函式、類)
相同點 對編譯器來說都是符號,宣告就會在符合表中留下一列等待填充的空白,即不完整的等待填充一行,而定義就是符合表中完整的一行。在編譯cpp成obj時,這裡面變數、函式和類三種東西看成並列地位,即都是一個名字,符號表中的一列(可以先簡單認為obj的符號表中只有兩列即符號名字和地址) 不
在vim中使用查詢命令查詢指定字串
要自當前游標位置向上搜尋,請使用以下命令: /pattern Enter 其中,pattern 表示要搜尋的特定字元序列。 要自當前游標位置向下搜尋,請使用以下命令: ?pattern Enter
關於在vim中的查詢和替換(轉載)
轉載出處:https://www.cnblogs.com/huxinga/p/7942194.html 1,查詢 在normal模式下按下/即可進入查詢模式,輸入要查詢的字串並按下回車。 Vim會跳轉到第一個匹配。按下n查詢下一個,按下N查詢上一個。 Vim查詢支援正則
初學mysql(十)-資料庫之儲存過程、函式與遊標-自定義函式和流程控制(下)
上一篇部落格講了儲存過程、函式、以及遊標,這一篇部落格接著上一篇部落格來說。首先說說mysql資料庫中的流程控制及自定義函式的使用。 自定義函式: 根據所需要的功能,使用流程控制來完成所需要的功能,完成功能的程式碼就稱為自定義函式。要想完成自定義函式就必須學會流程控制的使
unity中三種呼叫其他指令碼函式的方法
第一種,被呼叫指令碼函式為static型別,呼叫時直接用 指令碼名.函式名()第二種,GameObject.Find("指令碼所在的物體的名字").SendMessage("函式名"); //能呼叫public和private型別函式第三種,GameObject.Find(
171207之Oracle中decode函式、SIGN函式和INSTR函式
一:DECODE的語法: DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value 等於if1時,DECODE函式的結果返回then1,…,如果不等於任何一個if值,則返回else。 dec
excel的VBA中兩種呼叫工作表函式的方法
excel 的VBA中有兩種呼叫工作表函式的方法: Sub aa() ActiveSheet.Range("b2") = Application.WorksheetFunction.Max(Rang