1)安裝cygwin+ctags+cscope
下載下傳setup.exe,以管理者身份運作;
搜尋vim, ctags, cscope,選中,taglist沒有,後續自己單獨下載下傳;
安裝完成後,桌面上的cygwin terminal好像不能用;
找到C:\cygwin\Cygwin批處理檔案,運作就能打開終端;
注:我後來又重裝了一次,這次桌面上的cygwin terminal快捷鍵是可用的,看來前幾次安裝就是出了問題。
2)找到vi的配置檔案:
運作vi,:echo $VIM 可以檢視VIM的安裝目錄,我的安裝目錄是/usr/share/vim,對應window的C:\cygwin\usr\share\vim,其實我的安裝目錄下還有一級vim73目錄,的配置檔案模闆就是/usr/share/vim/vim73/vimrc_example.vim,打開它,有段說明,按照說明将這個vimrc_example.vim複制成~/.vimrc檔案,這個就是vi的配置檔案了。
3)配置ctags
cd到代碼目錄
ctags -R *
生成tags檔案;
告訴vi tags索引檔案的位置:
在~/.vimrc中加入一行:
set tags=<tags file path>
例如:
set tags=~/linux-0.11/tags
重新開機vi之後,你現在可以使用Ctrl+]跳轉了,把光标放到某個函數調用上,試試看。
4)安裝taglist
到官網下載下傳taglsit,是一個壓縮包,解壓後會看到兩個檔案夾:plugin和doc,把這兩個檔案夾裡的内容複制到vi已有的對應目錄:/usr/share/vim/vim73/plugin和/usr/share/vim/vim73/doc
重新開機vi,taglist就自動生效了,在vi中輸入指令:Tlist,你就會看到Taglist視窗出現了。
5)配置cscope
在vi中使用cs指令的時候,vi預設尋找cscope可執行程式,可是我們在安裝cygwin的時候裝的是mlcscope,是以我們需要做個連結:
cd /usr/bin
ln -s mlcscope cscope
cd到代碼目錄,搜尋所有你感興趣的檔案,例如:
find -name "*.s" -o -name "*.c" > file_list.cs
生成cscope索引檔案
cscope -Rbkq -i file_list.cs
告訴vi cscope索引檔案的位置:
在~/.vimrc中加入一行:
cs add <cscope.out path> <pre_path>,例如:
cs add ~/linux-0.11/cscope.out ~/linux-0.11/
<pre_path>是cscope在使用索引檔案查找源碼檔案時候的基準位置; 比如cscope.out裡面記錄了一個init/main.c檔案,cs在找這個檔案的時候就知道從~/linux-0.11為基準找int/main,也就是說cs會找~/linux-0.11/init/main.c檔案;
如果你在生成cscope.out索引檔案的時候使用了-P參數,則索引檔案裡就已經記錄了每個源碼檔案的絕對路徑,于是你在使用cs add加載資料庫的時候就不需要再制定<pre_path>了;
好了,現在可以在vi中使用cs搜尋代碼了,試試:cs f g foo查找foo的定義;
6) 為了讓vi更好用,在.vimrc檔案中加入這麼幾行:
" add by mayq
" set tag database
set tags=~/linux-0.11/tags
" set cscope database
cs add ~/linux-0.11/cscope.out ~/linux-0.11/
" show line number
set nu
" set current line hightlight, forground color=white, backgournd color=dark
" red
set cursorline
hi CursorLine cterm=NONE ctermbg=darkred ctermfg=white
hi CursorColumn cterm=NONE ctermbg=darkred ctermfg=white
" taglist setting
let Tlist_Use_LEFT_Window=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Auto_Open=1
nmap tl :Tlist<cr>
" end mayq