cscope熱鍵:(引用自使用 vim 和 cscope 來 trace 程式碼)
當你維護的軟體專案不小時,上述功能絕對不夠用。這時你需要 cscope 的協助。當你安裝好 cscope,而且建立好專案的 cscope 資料庫之後,將游標移到程式當中某個文字串,按 Ctrl+\ 再按以下按鍵:
- 's': 即 Symbol,以此文字串當識別字,列出專案當中所有參考到此識別字的地方,包含定義和引用
- 'g': 即 Global,以此文字串當作 global 變數或函數的名稱,跳到專案中定義此 global 變數或函數的地方 (這個功能有另一個與 ctags 相同的快速鍵 Ctrl-])
- 'c': 即 Calls,以此文字串當函數名稱,找出所有呼叫到的此函數的函數
- 't': 即 Text,列出專案中所有出現此文字串的地方 (包含註解)
- 'e': 即 Egrep,以此文字串當 regular expression,用 egrep 方式來搜尋
- 'f': 即 File,以此文字串當檔案名稱,開啟此檔案
- 'i': 即 Includes,以此文字串當 header 檔名稱,列出所有 include 此檔案的檔案
- 'd': 即 calleD,以此文字串當函數名稱,列出此函數所呼叫到的函數
- :cscope find symbol foo
- :cs f s foo
taglist更新(史丹利部落格-Ubuntu安裝Vim Plugin ctags及taglist)
Taglist網站去下載zip檔http://vim-taglist.sourceforge.net/
- (1)下載後解壓縮該檔案
# unzip taglist_45.zip
Archive: taglist_45.zip
inflating: plugin/taglist.vim
inflating: doc/taglist.txt
(2)將plugin及doc複製到家目錄的".vim"這個目錄裏,如果不存在就建一個新的".vim"
在/etc/vim/vimrc裏加入下面1行
map :Tlist
還未夠班 根本沒資格寫這篇
但為了 習慣vim的超陡學習曲線且看到神人前輩 將vim 用的比source insight快速方便之後,從此下定決心 將此神器 化為自己內力一環
神一下 vim 或 vim ide 可以找到一堆資料
這篇 vimide 更是一盞明燈
我卻視它為濫觴 從這邊開始 先配置好最佳使用方式及套件 我們必須關注的是 ctags 跟 cscopes 這兩個神套件 - 也有人說他們並非是vim的套件
第一步(安裝vim):sudo apt-get install vim
第二步(設定vim為預設編輯器):sudo update-alternative --config editor 進入一個清單之後選擇選擇vim所屬的編號.
第三步(安裝ctags wget與unzip):sudo apt-get install exuberant-ctags wget unzip //安裝必要套件,其中exuberant-ctags這套件是為了ctags -R . 遞迴設定時能夠順利成功!!!
第四步(設定懶人包):vimide懶人包的安裝
svn checkout http://vimide.googlecode.com/svn/trunk/linux vimide
cd vimide/
sh install.sh
打开目录与函数名的快捷键是:第五步:生成tags文件
切換到代碼目錄下 執行執行ctags -R . (-R是遞迴的意思 記得後面還有個小點)
第六步:試試看vim一份專案文件 :Tlist是否成功
:Tlist 打開打開tags列表 可使用快捷見Ctrl + O 打開來
, Ctrl + T
第七步:
sudo apt-get install cscope
mkdir -p ~/.vim/plugin
cd ~/.vim/plugin
wget http://cscope.sourceforge.net/cscope_maps.vim
第八步:
vim ~/.vimrc (若沒有此檔(開出來是空白)可以打開vim輸入:mkvimrc 就會自動生成)
更改vimm設定檔
推薦設定檔 (已整理過,而且set的內容 由a到z照順序排列)
"VIMIDE vimrc basic settings
"--------start---------
set ai! "autoindenti
set autoread "If modify can sync
set bs=2 "Use backspace to delete charactor in insert mode
set backspace=start,indent,eol
set confirm "If conflict can ask
set cursorline "Draw underline at highlight result
set expandtab
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp950
set history=100 "100 history to back
set hls "highlight search
set helplang=tw
set ic "ignorecase
set incsearch
set nu! "set number of line
set mouse=a
set nowb
set nobackup
set noerrorbells
set novisualbell
set nocompatible "Disable vim as vimode
set noswapfile
set ru
set smartindent
set shiftwidth=4
set tabstop=4
set tags=tags;/
set vb t_vb= "no bi voice
set wrap
filetype plugin on
filetype indent on
syntax on
set ruler
map <> :NERDTree
map :TlistToggle
vmap "+y
autocmd VimEnter * NERDTree
autocmd BufEnter * silent! lcd %:p:h
"--------end--------
let Tlist_Ctags_Cmd='/usr/bin/ctags'
let Tlist_Show_One_File = 1
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
inoremap :call PhpDocSingle()i
nnoremap :call PhpDocSingle()
vnoremap :call PhpDocRange()
您好,想詢問一下「第五步:生成tags文件
回覆刪除切換到代碼目錄下 執行執行ctags -R .」這段的代碼目錄是什麼呢?(一直卡在這裡
您好 就是在你程式資料夾的最外層 直接下ctags -R .
刪除R後面要有一個空白加一點
就是針對目前目路往下作 遞迴的ctags
概念有點像Makefile 會針對每一層目錄去交叉索引相關的tag(關鍵字)