1. 程式人生 > >Vim Cscope配置與使用

Vim Cscope配置與使用

1、Cscope介紹

       Cscope是類似於ctags一樣的工具,但可以認為她是ctags的增強版,因為她比ctags能夠做更多的事。在Vim中,通過cscope的查詢,跳轉到指定的地方就像跳轉到任何標籤;她能夠儲存標籤棧,所以通過合適的鍵盤對映繫結,你能夠在函式向後或向前跳轉,就像通常使用的tags一樣。

       首次使用Cscope時,他會根據原始檔生成符號資料庫。然後在以後的使用中,cscope只是在原始檔有改動或原始檔列表不同時才會重建資料庫。當在重建資料庫時,未改動過的檔案對應的資料庫資訊會從舊的資料庫中拷貝過來,所以會使重建資料庫快於一開始的新建資料庫。

       當你在命令列下呼叫cscope時,你會獲得一個全屏選擇視窗,能夠使你查詢特定的內容。然而,一旦你查詢的有匹配,那麼就會用你預設的編輯器來編輯該原始檔,但是你不能夠簡單的使用Ctrl+]或者:tag命令來從一個標籤跳轉到另一個標籤。

       Vim中的cscope介面是通過以命令列形式呼叫完成的,然後解析查詢返回的結果。最終的結果就是cscope查詢結果就像通常的tags一樣,這樣你就可以自由跳轉,就像在使用通常的tags(用ctrl+]或者:tag跳轉)

2、Cscope安裝

  apt-get install cscope

或者在網站下載

3、Cscope配置

  修改vim配置檔案vimrc.你可以修改/etc/vimrc使用所有使用者都使用本配置檔案,當然你還可以修改~/.vimrc

將如下內容放置到你的.vimrc中:

       if has("cscope")

              set csprg=/usr/local/bin/cscope

              set csto=0

              set cst

              set nocsverb

              " add any database in current directory

              if filereadable("cscope.out")

                  cs add cscope.out

              " else add database pointed to by environment

              elseif $CSCOPE_DB != ""

                  cs add $CSCOPE_DB

              endif

              set csverb

       endif

       通過設定’cscopetag’,我們已經有效的將所有:tag的情況都替換為:cstag。這包括:tag、ctrl+],和”vim -t”。然後,正常的tag命令就會不光在tag檔案中查詢,也會在cscope資料庫中查詢。

注:

遇到錯誤

cs_read_prompt EOF: 沒有那個檔案或目錄
E609: Cscope 錯誤: sh: 1: exec: /usr/local/bin/cscope: not found

則將第二行註釋即可,即    " set csprg=/usr/local/bin/cscope

一些經常用cscope查詢(使用”:cs find”)是查詢呼叫某一特定函式的所有函式,和查詢所有出現特定C符號的地方。為了做這些事,你可以使用如下的鍵盤對映作為例子:

              map g<C-]> :cs find 3 <C-R>=expand(“<cword>”)<CR><CR>

              map g<C-/> :cs find 0 <C-R>=expand(“<cword>”)<CR><CR>

       這些給ctrl+](右中括號)和ctrl+/(反斜槓)的對映可以允許你將游標放置到函式名稱或者C符號上然後執行快速cscope查詢匹配。

       你可以使用如下方案(很好用,可以將其新增到.vimrc中):

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

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

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

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

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

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

    nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>

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

3、Cscope索引

建立cscope使用的索引檔案
         1. 在你需要瀏覽原始碼的根目錄下(如你想用cscope看linux原始碼)使用下面命令:
         2.    * #: cscope -Rbkq<回車>
         3. R 表示把所有子目錄裡的檔案也建立索引
         4. b 表示cscope不啟動自帶的使用者介面,而僅僅建立符號資料庫
         5. q生成cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
         6. k在生成索引檔案時,不搜尋/usr/include目錄

然後在~/vimrc中增加一句:



:setcscopequickfix=s-,c-,d-,i-,t-,e-
這個是設定是否使用 quickfix 視窗來顯示 cscope 結果, 用法在後面會說到。

跟Ctags一樣, 要使用其功能必須先為你的程式碼生成一個cscope的資料庫, 在專案的根目錄執行下面的命令
:csadd /home/wooin/vim71/cscope.out  /home/wooin/vim71

原始碼是多級目錄的, 如果這樣寫, cscope是無法在子目錄中的原始碼中工作的, 當然, 如果你的原始碼都在同一級目錄中就無所謂了.如果你要經常用cscope的話, 可以把上面那句加到~/.vimrc中去.

更多cscope命令可開啟一個vim檔案中檢視

   help :顯示一個簡短的摘要。

              使用方法:

              :cs help

後續補充說不定會更新。。。



相關推薦

Vim Cscope配置使用

1、Cscope介紹        Cscope是類似於ctags一樣的工具,但可以認為她是ctags的增強版,因為她比ctags能夠做更多的事。在Vim中,通過cscope的查詢,跳轉到指定的地方就像跳轉到任何標籤;她能夠儲存標籤棧,所以通過合適的鍵盤對映繫結,你能夠在函

Linux - vim安裝 配置使用

格式 only ctx net height border term mona 方便 一 Vim 簡單介紹 曾經一直用vi,近期開始使用 vim,以下將兩者做一下比較。 vi和vim都是多模式編輯器,不同的是vim 是vi的升級版本號,它不僅兼容vi的全部指令,並且

Ubuntu 12.04下安裝vim, 簡單配置基本使用介紹

ubuntu12.04預設沒有安裝vim,執行命令會出現以下錯誤: [email protected]:~$ vim test1.c The program 'vim' can be found in the following packages:  * vi

linux應用之vim的安裝配置(centos)

utf8 power scroll pbo gb2312 nco pla red vma 1.vim的安裝 #yum search vim //查看vim相關軟件信息 #yum install -y vim* //在線安裝vim 2.vim的配置 (1)~/.vimi

ubuntu16.04下vim的安裝配置

一、安裝vim 使用命令$ sudo apt-get install vim 來安裝vim,安裝後的vim需要進行一些配置,不然使用起來會有些不方便,比如不會自動縮排。 二、配置vim 使用命令$ vim /etc/vim/vimrc修改vim配置檔案 (修改該檔案對所有使用者都

ubuntu16.04下vim配置自動補全

開啟終端,輸入vim ~/.vimrc 將以下內容儲存 set nocompatible "去掉有關vim一致性模式,避免以前版本的一些bug和侷限. set mouse=a "滑鼠可任意移動 set number "顯示行號. set ruler "顯示當

centos下vim的安裝配置

1 安裝 (如果是新裝的centos,最好按照vim之前,先Linux中必備常用支援庫的安裝:http://blog.csdn.net/clevercode/article/details/45438401) # yum -y install vim* 2 檢視vim的

Linux ubuntu16.04下vim的安裝配置

一、安裝vim使用命令sudo apt-get install vim來安裝vim。sudo apt install vim二、進行vim配置,便於使用。set ai

Ubuntu14.04下Vim的安裝配置

1.Vim的安裝: 輸入命令:sudo apt-get install vim-gtk 2.Vim的配置: (1)剛安裝的VIM,可能介面並不是十分友好,這就需要我們去更改vim的配置檔案,按照我們的需求去修改它。 在命令列下,輸入命令:sudo vim /etc/vim/vimrc 在這個檔案

Flask入門之SQLAlchemy配置數據庫連接

數據 rdo nsh imp log kref mod pre file 1. 安裝SQLAlchemy pip install flask-sqlalchemy 2. 導入和配置 from flask_sqlalchemy import SQLAlchemy bas

centos EMQTTD 集群安裝配置測試驗證

centos emqttd 集群安裝配置與測試驗證安裝包下載地址:http://emqtt.com/downloads在這裏我們下載 emqttd-centos6.8-v2.1.2.zip配置兩臺主機hosts192.168.0.10 s1.emqtt.io 192.168.0.20 s2.emqtt.i

【ADO.NET】1、簡單配置使用

字符串 文件中 .exe 增加 獲取字符串 pass 數據庫連接 rect manage 1、一些基礎的知識點 ExecuteReader(); //返回查詢到的數據,一次一行,用於 selectExecuteNonQuery(); //返回影響的行數,用於 delete,

Debian下的VIM配置文件

ati 一個 感覺 detail targe blog tails 配置 details 傳動們:http://blog.csdn.net/gatieme/article/details/43883261?spm=5176.100239.blogcont47532.3.yX

nmap檢測ms17-010的配置使用方法

病毒 微軟 nmap 永恒之藍 ms17-010 1 前言針對近期肆虐全球的“永恒之藍”勒索蠕蟲病毒,為有效預防病毒的入侵,將被病毒入侵後的損失降到最低,各單位均采取了相關應急處置辦法,但沒有方法驗證處置辦法是否行之有效。很幸運的是,Paulino Calderon在https:

CentOS 6.x 本地yum源配置使用

mnt local 放置 cal nbsp 自動 all rpm-gpg 網絡 系統默認已經安裝了可使用yum的軟件包,所以可以直接配置: # mount /dev/cdrom /mnt 掛載鏡像,可以寫到配

UIAutomator環境配置運行

pla 引入 rms blog rop prop 目錄 orm java 環境配置,引入UTAutomator測試包 1.進入Eclipse,創建測試項目,例如Android/Java項目 2.右鍵點擊測試項目,選擇“Properties”---Java Build Pat

docker虛擬化安裝配置常用命令

sta 80端口 ubuntu map 虛擬化 導出 6.5 關系 版本 一、Docker安裝配置 docker只有在centos6.5以上機器才能使用yum直接安裝,如果其他版本需要安裝centos擴展源epel。 docker官方文檔說要求Linux kernel至

solr的安裝配置helloworld

配置中文 啟動tomcat com war包 執行 package .text 文件 rdo 一、安裝solr 1.安裝jdk環境和tomcat 2.解壓solr壓縮包,這裏我解壓到opt目錄下 3.把/usr/local/solr-4.8.0/dist/solr-4.8.

CxImage 簡單配置使用

選項 ghost reel sage header ctu 也會 wim 才會 CxImage 簡單配置與使用 如果本篇文章還不能解決你在生成解決方案以及便宜過程中的問題 請參閱: http://blog.csdn.net/afterwards_/article/det

網絡硬件設備配置管理(CCNA)下

網絡 硬件 cisco ccna 點擊下載:網絡硬件設備配置與管理(CCNA)下本文出自 “飛奔的魚兒” 博客,請務必保留此出處http://feiyuer.blog.51cto.com/6967044/1931155網絡硬件設備配置與管理(CCNA)下