vim一款優秀的系統文本編輯器,常用於Linux系統中,使用vim需自行安裝,且需要配置其開發環境,那麼在CentOS 6.2中,要如何搭建vim開發環境呢?下面小編就給大家介紹下CentOS 6.2配置vim開發環境的方法,一起來學習下吧。
1.首先使用Ubuntu(所在ip為192.168.16.230)翻牆登陸http://www.vim.org/,下載其上面的vim相關插件到Ubuntu的下載目錄下:
cd ~/下載/
http://ctags.sourceforge.net
http://cscope.sourceforge.net/
http://www.vim.org/scripts/script.php?script_id=273
http://www.vim.org/scripts/script.php?script_id=1581
http://www.vim.org/scripts/script.php?script_id=197
http://www.vim.org/scripts/script.php?script_id=95
http://www.vim.org/scripts/script.php?script_id=159
http://www.vim.org/scripts/script.php?script_id=31
http://www.vim.org/scripts/script.php?script_id=2620
http://www.vim.org/scripts/download_script.php?src_id=9679
http://www.vim.org/scripts/script.php?script_id=42
http://www.vim.org/scripts/script.php?script_id=311
使用sftp將這些壓縮包上傳到目標服務器CentOS 6.2上面
cd /usr/local/src
sftp [email protected]
ls
put a.vim ***
quit
退出sftp,下面開始安裝。
2.在主目錄下新建目錄,開始安裝
mkdir -p .vim/plugin
mkdir -p .vim/doc
mkdir -p .vim/tags
mkdir -p ~/.vim/syntax
將上述文件包轉移到~/.vim/下面,逐個安裝插件:
2.1 ctags插件(Exuberant Ctags)
生成tag文件的插件,從如下官網
http://ctags.sourceforge.net
下載到如下源碼包ctags-5.8.tar.gz,下面使用源碼安裝方式
tar zxvf ctags-5.8.tar.gz
cd ctags-5.8
。/configure
make
make install
cd 。。/
發現ctags是個可執行文件,被復制到/usr/local/bin下面了。你可以使用
ctags --help
來查看該執行文件的命令選項。
tags文件是由ctags程序產生的一個索引文件, ctags程序其實叫“Exuberant Ctags”, 是Unix上面ctags程序的替代品, 並且比它功能強大, 是大多數Linux發行版上默認的ctags程序。
2.2 taglist插件
這個是浏覽源代碼的插件,直接將壓縮包解壓即可自動安裝
unzip taglist_46.zip
會在plugin和doc中各生成一個文件taglist.vim和taglist.txt
相應地在我的.vimrc中如下配置:
let Tlist_Show_One_File = 1 “不同時顯示多個文件的tag,只顯示當前文件的
let Tlist_Exit_OnlyWindow = 1 ”如果taglist窗口是最後一個窗口,則退出vim
let Tlist_Use_Right_Window = 0 “在右側窗口中顯示taglist窗口 (默認是0)
注意taglist插件需要tags文件,所以它需要ctags或cscope生成的tags文件。也就是說,這幾個插件是緊密聯系的。
2.3 Lookup插件
利用插入補全方式在項目中快速查找文件,緩存區,目錄的插件,我們從
http://www.vim.org/scripts/scipt.php?script_id=1581
下載源碼包lookupfile-1.8.zip進行安裝
unzip lookupfile-1.8.zip
將在doc,plugin,autoload目錄下分別生成lookupfile.txt,lookupfile.vim和lookupfile.vim
注意autoload目錄是自動生成的。
Lookupfile插件還需最新的genutils插件支持,否則你打開vim時會有警告:
lookupfile: You need a newer version of genutils.vim plugin
從下面的地址下載
http://www.vim.org/scripts/script.php?script_id=197
得到genutils-2.5.zip,下面直接解壓就可自動安裝好
unzip genutils-2.5.zip
發現它在autoload和plugin目錄中都放入了文件genutils.vim
Lookupfile在查找文件時,需要使用tags文件,它可以使用ctags命令生成的tag文件,不過效率比較低,我們專門給它生成了一個包含項目中所有文件名的tag文件。下面是具體步驟:
我編寫了下面的shell腳本make_lookupfile_tag.sh,為trafficserver-3.2.4的源代碼,生成一個文件名tag文件。
#!/bin/bash
# generate tag file for lookupfile plugin
echo -e ”!_TAG_FILE_SORTED\t2\t/2=foldcase/“ 》 filenametags
find 。 -not -regex ‘.*\。\(png\|gif\)’ -type f -printf ”%f\t%p\t1\n“ | \
sort -f 》》 filenametags
回想一下我們在”使用標簽(tag)文件“一文中介紹的tag文件的格式。再對照腳本命令來看:
echo命令用來生成filenametags文件中的”!_TAG_FILE_SORTED”行,表明此tag文件是經過排序的。
find命令用來查找所有類型為普通文件,文件後綴名不是.png和.gif的文件,找到的文件按”文件名\t文件路徑\t1″的格式輸出出來。
sort命令則把find命令的輸出重新排序,然後寫入filenametags文件中
在~/program_dev/trafficserver-3.2.4/目錄下運行該腳本,
chmod +x make_lookupfile_tag.sh
/bin/bash make_lookupfile_tag.sh
會生成一個名為filenametags的文件,包含了trafficserver-3.2.4目錄下的所有文件的名字及其所在目錄,你可以打開該文件查看並驗證。
現在我們需要讓lookupfile插件知道到哪去找文件名tag文件。我們假定vim當前工作目錄為~/program_dev/trafficserver-3.2.4/,執行下面的命令:
:let g:LookupFile_TagExpr = ‘”。/filenametags“’
注:如果不設定g:LookupFile_TagExpr的值,那麼lookupfile插件會以tags選項定義的文件作為它的tag文件。
當恢復前次會話時,就給lookupfile插件定義了tag文件。
現在我們就可以使用lookupfile來打開文件了,按”《F5》“或輸入”:LookupFile“在當前窗口上方打開一個lookupfile小窗口,開始輸入文件名(至少4個字符),隨著你的輸入,符合條件的文件就列在下拉列表中了。文件名可以使用vim的正則表達式,這大大方便了文件的查找。你可以用”CTRL-N“和”CTRL-P“(或者用上、下光標鍵)來在下拉列表中選擇你所需的文件。選中文件後,按回車,就可以在之前的窗口中打開此文件。
2.4 cscope插件
標簽跳轉插件,從下面的網址下載
http://cscope.sourceforge.net/
得到源碼包cscope-15.8a.tar.gz,下面進行源碼包安裝:
tar zxvf cscope-15.8a.tar.gz
cd cscope-15.8a
ll
。/configure
make
make install
cd 。。/
注意使用下面的命令查看到
which cscope
可執行文件所在路徑是/usr/local/bin/cscope
cscope的用法很簡單,首先需要在你的工程目錄,比如trafficserver-3.2.4下面生成一個cscope數據庫,也就是一個索引文件。cscope只在第一次解析時掃描全部文件,以後再調用cscope時,它只掃描那些改動過的文件,這大大提高了cscope生成索引的速度。
2.5 BufExplore插件
緩沖區文件浏覽插件,從下面的地址下載
http://vim.sourceforge.net/scripts/script.php?script_id=42
直接解壓即可自動安裝
unzip bufexplorer-7.3.6.zip
將在doc和plugin目錄下分別安裝bufexplorer.txt和bufexplorer.vim文件。
2.6 winmager插件
該插件控制各插件在vim窗口中的布局顯示,從下面的地址下載
http://vim.sourceforge.net/scripts/script.php?script_id=95
得到winmanager.zip文件。
unzip winmanager.zip
把該文件在~/.vim/目錄中解壓縮,這會將如下文件解壓到~/.vim/plugin和~/.vim/doc目錄中:
plugin/winmanager.vim – winmanager插件
plugin/winfileexplorer.vim - 改良的Explorer插件
plugin/wintagexplorer.vim – winmanager提供的tag插件,用處不大
doc/winmanager.txt – 幫助文件
注意:winmanager插件需要與BufExplorer插件一起才能使用
2.7 直接是*.vim的插件
這樣的插件目前有
a.vim, //將.h文件與.c文件來回切換
minbufexpl.vim //快速浏覽和操作Buffer,自如切換
直接復制到~/.vim/plugin/下面就可以了
2.8 vim自帶插件
QuickFix 編譯糾錯,顯示查詢結果窗口
new-omni-completion 全能補全
2.9 NeoComplCache插件
自動補全插件,下載地址:
http://www.vim.org/scripts/script.php?script_id=2620
將下載下來的壓縮包neocomplcache-8.0.zip使用如下命令解壓
unzip neocomplcache-8.0.zip
其解壓後文件夾裡面的文件,好像是四個,autoload、doc、plugin、vest、README.MD,會自動放到.vim相應的文件夾下面。
在~/.vimrc文件裡加入自動啟動的命令:
let g:neocomplcache_enable_at_startup = 1。
2.10 查看插件自帶的文檔
注意到上面各步驟中已經把插件自帶的文檔放入$HOME/.vim/doc目錄下了,現在
進入vim,輸入命令:helptags $HOME/.vim/doc,vim就會自動讀取$HOME/.vim/doc目錄下的文檔,
輸入:help local-additions即可跳轉到$HOME/.vim/doc中的所有文檔列表處,用選擇要看的文檔即可。
我們可以看到,當前我們已經安裝的插件有taglist,lookupfile,bufexplorer,winmanager插件等。
2.11 安裝vim中文幫助文檔
vim中文文檔的主頁是:
http://vimcdoc.sourceforge.net/
它將vim的help文件翻譯成為中文,已經支持目前最新的vim 7.3。
如果想使用vim中文文檔(.cnx文件),可以遵循以下步驟:
cd ~/.vim/
$wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.8.0.tar.gz(注意這不是真實的地址,僅作示例)
tar zxvf vimcdoc-1.8.0.tar.gz
ll
cd vimcdoc-1.8.0
sudo 。/vimcdoc.sh -i
cd 。。/
將會將這些文檔安裝在/usr/share/vim/,/usr/share/doc等幾個目錄下面。
啟動vim,輸入:help,看看幫助文檔是否已經便成中文了?
2.12 grep插件
工程中正則查找插件,從下面的地址下載
http://www.vim.org/scripts/script.php?script_id=311
將得到的grep.vim直接放到~/.vim/plugin/下面就可以了。
一些注意事項:
1)vim中文文檔不會覆蓋原英文文檔,安裝後vim默認使用中文文檔。若想使用英文文檔,可在vim中執行以下命令:
:set helplang=en
同理,使用以下命令可重新使用中文文檔:
:set helplang=cn
2)使用以下命令可以卸載vim中文文檔:
sudo 。/vimcdoc.sh -u
3)幫助文件的文本是utf-8編碼的, 如果想用vim直接查看, 需要在~/.vimrc中設置:
:set encoding=utf-8
2.12語法高亮
普通一些的要求是更改色彩方案,設置如下:
首先要在你的 ~/.vimrc 文件中增加下面幾句話:
syntax enable
syntax on
選中你喜歡的配色方案,在.vimrc文件中做設置,比如
colorscheme desert
更個性化的需求
讓運算符號, 各種括號, 函數名, 自定義類型等也高亮起來
對各種語言的源文件(比如c,c++,php,python等)新建一個語法文件,分別存放到
/usr/share/vim/vim72/syntax/c.vim
下面,以C語言為例,新建一個文件~/.vim/syntax/c.vim
加入以下內容
”========================================================
“ Highlight All Function
”========================================================
syn match cFunction “/《[a-zA-Z_][a-zA-Z_0-9]*/》[^()]*)(”me=e-2
syn match cFunction “/《[a-zA-Z_][a-zA-Z_0-9]*/》/s*(”me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
“========================================================
” Highlight All Math Operator
“========================================================
” C math operators
syn match cMathOperator display “[-+/*/%=]”
“ C pointer operators
syn match cPointerOperator display ”-》/|/。“
” C logical operators - boolean results
syn match cLogicalOperator display “[!《》]=/=”
syn match cLogicalOperator display “==”
“ C bit operators
syn match cBinaryOperator display ”/(&/||/|/^/|《《/|》》/)=/=“
syn match cBinaryOperator display ”/~“
syn match cBinaryOperatorError display ”/~=“
” More C logical operators - highlight in preference to binary
syn match cLogicalOperator display “&&/|||”
syn match cLogicalOperatorError display “/(&&/|||/)=”
“ Math Operator
hi cMathOperator guifg=#3EFFE2
hi cPointerOperator guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cBinaryOperator guifg=#3EFFE2
hi cBinaryOperatorError guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cLogicalOperatorError guifg=#3EFFE2
再打開你的C文件看看, 是不是又明亮了許多。 還有一個壓箱底的要告訴你, 如果你自己增加了一個類型或者結構之類的, 怎麼讓它也象”int“, ”void“這樣高亮起來呢? 再在上面的文件~/.vim/syntax/c.vim中添加下面的東東:
”========================================================
“ My Own DataType
”========================================================
syn keyword cType My_Type_1 My_Type_2 My_Type_3
這樣你自己的類型My_Type_1, My_Type_2, My_Type_3就也可以向“int”一樣高亮起來了, 這樣的缺點是每增加一個類型, 就要手動在這裡添加一下。
3.配置.vimrc文件
當vim在啟動時,如果沒有找到vimrc或gvimrc,它缺省工作VI兼容的模式。這意味著,你只能使用VI所具備的功能,而vim中的大量擴展功能將無法使用。也許這就是你的vim如此難用的原因。
vim中自帶了一個vimrc例子,以我所在的CentOS 6.2上的為例,使用下面的命令找到這個文件
locate vimrc_example.vim
發現它的真實目錄在
/usr/share/vim/vim72/vimrc_sample.vim
將其拷貝到我的主目錄下面
cp -f /usr/share/vim/vim72/vimrc_sample.vim ~/.vimrc
或者你在vim中執行下面的命令,和上面的shell命令完成相同的功能:
:!cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc
現在,你退出vim後再進入,你的vim和剛才已經不一樣了。
你可以先讀一下你的vimrc,看看它都設定了什麼:
:e ~/.vimrc
這是一個注釋良好的文件,不需要多解釋。
在今後使用vim的日子裡,你會頻繁的更改你的vimrc。所以我們需要設置一些快捷方式,使我們能快速的訪問vimrc。
把下面這段內容拷貝到你的vimrc中:
1 “Set mapleader
2 let mapleader = ”;“
3
4 ”Fast reloading of the .vimrc
5 map 《silent》 《leader》ss :source ~/.vimrc《cr》
6 “Fast editing of .vimrc
7 map 《silent》 《leader》ee :e ~/.vimrc《cr》
8 ”When .vimrc is edited, reload it
9 autocmd! bufwritepost .vimrc source ~/.vimrc
為了方便解釋,我給每一行都加了一個行號。
在vimrc中,雙引號開頭的行,將被當作注釋忽略。
第2行,用來設置mapleader變量,當mapleader為未設置或為空時,使用缺省的”\”來作為mapleader。mapleader變量是作用是什麼呢?看下面的介紹。
第5行定義了一個映射(map),這個映射把《leader》ss,映射為命令:source ~/.vimrc《cr》。當定義一個映射時,可以使用《leader》前綴。而在映射生效時,vim會把《leader》替換成mapleader變量的值。也就是說,我們這裡定義的《leader》ss在使用時就變成了”,ss“,當輸入這一快捷方式時,就會source一次~/.vimrc文件(也就是重新執行一遍.vimrc文件)。
第7行,定義了《leader》ee快捷鍵,當輸入,ee時,會打開~/.vimrc進行編輯。
第9行,定義了一個自動命令,每次寫入.vimrc後,都會執行這個自動命令,source一次~/.vimrc文件。
有了上面的快捷鍵,我們就能快速的打開vimrc文件編輯,快速重新source vimrc文件,方便多了。
相關的配置文件參見趙攀提供的.vimrc文件的內容。
注意:最後的源碼結構類似如下:
~--|--.vimrc
|--.vim --|-plugin--
|-doc--
|-autoload
|-vest
4.實戰體驗
4.1下載一個trafficserver的源碼,並以此為例來闡釋使用vim開發的方法
登陸192.168.16.237上,並在當前主目錄上新建一個program_dev目錄
cd ~/
mkdir program_dev
wget http://mirror.esocc.com/apache/trafficserver/trafficserver-3.2.4.tar.bz2
下載完成後,解壓縮
tar jxvf trafficserver-3.2.4.tar.bz2
ll
注意:使用首先生成3種類型的標簽,分別是ctags,cscope和lookupfile插件需要用到的標簽。
4.2生成ctags標簽(請參照下一種方法來生成tags並設置)
ctags -R trafficserver-3.2.4
將在trafficserver-3.2.4同級目錄生成一個名為tags的文件
現在進入vim環境,輸入以下命令
:cd ~/program_dev/trafficserver-3.2.4 “切換到當前源碼目錄
:set tags=~/program_dev/tags ”設置tags選項為當前目錄下的tags文件
注意這裡設置tags需要明確寫出絕對路徑,否則將會導致很多函數找不到。tags文件是個純文本文件,你可以使用vim打開它看一下。
另外,根據.vimrc中的配置,使用下面的快捷鍵來分別生成tags文件和cscope文件
cd trafficserver-3.2.4
find ‘pwd’ -name “*.cpp” -o -name “*.cc” -o -name “*.c” -o -name “*.h” 》 cscope.files
cscope -bqk -i cscope.files
ctags和cscope會自動區分和處理各自的索引。
這裡注意使用cscope的方法,cscope在生成索引文件時,只搜索c,lex和yacc的文件(後綴名為.c,.h,.l,.y),要生成c++的文件索引,就得使用上面的方法,先產生一個文件列表cscope.files,然後讓cscope為這個列表中的每個文件都生成索引。
將上述內容寫成一個腳本make_cscope_ctags_index.sh,其內容如下:
#!/bin/bash
find 。 -name “*.h” -o -name “*.c” -o -name “*.cc” 》 cscope.files
cscope -bkq -i cscope.files
ctags -R
保存在~/.vim/中,現在將其復制到trafficserver-3.2.4下面,並運行下面的命令
/bin/bash make_cscope_ctags_index.sh
命令在trafficserver-3.2.4下面生成如下文件
cscope.files
cscope.in.out
cscope.out
cscope.po.out
tags
經過分析cscope.files,我們看到了很多文件。現在更新tags設置項
:set tags=~/program_dev/trafficserver-3.2.4/tags
至此,我們設置好了tags選項,接下來開始使用它:
在當前命令行輸入
vim -t main
這個命令將打開定義“main”(變量或函數或其它)的文件,並把光標定位到這一行。
在浏覽源碼時,當要查詢某個函數的定義時,將光標放在該函數上,按《C-]》鍵,就會跳轉到該函數的定義處,按《C-t》鍵是返回。
注意:運行vim的時候,必須在“tags”文件所在的目錄下運行。否則,運行vim的時候還要用“:settags=”命令設定“tags”文件的路徑,這樣vim才能找到“tags”文件。
在完成編碼時,可以手工刪掉tags文件(帚把不到,灰塵不會自己跑掉^_^)。
現在打開編號為43的文件中的main函數
按F9打開winmanager,這時按照設置,將會出現3部分窗口布局。如果打開了多個文件(多緩沖區),將在最上角出現第四個窗口,MiniBufExplorer窗口。現在按住Ctrl,再連續按W,將在各個窗口之間按照逆時針順序來回切換。當然,按照趙攀的文檔,使用F2也一樣起到該作用。再按一次F9將關閉winmanager窗口布局。
當選中某個窗口時,都可以使用vim通常的移動鼠標的方式來選擇不同的標簽等,比如gg,G等快捷鍵。
將光標定位到main函數所在的文件中,將光標定位到某個函數上,按住Ctrl+]鍵,將會跳轉到該函數的定義位置。
4.3快速浏覽和操作Buffer
用vim打開多個文件時,vim最上方會出現一個MiniBufExplorer窗口,其中列出了當前所有已經打開的buffer,當你把光標置於這個窗口時(當你處於winmanager窗口布局中時,使用Ctrl+W來輪流切換), 有下面幾個快捷鍵可以用:
《Tab》 向前循環切換到每個buffer名上
《S-Tab》 向後循環切換到每個buffer名上
《Enter》 在打開光標所在的buffer
d 刪除光標所在的buffer
當你只編輯一個buffer的時候MiniBufExplorer派不上用場, 當你打開第二個buffer的時候, MiniBufExplorer窗口就自動彈出來了,
4.4bufexplorer插件用法
打開vim,輸入\be在當前窗口浏覽緩存,\bs水平打開一個窗口浏覽緩存,\bv垂直打開一個窗口浏覽緩存。
但是在Filelist和taglist的窗口內,你可以移動上下移動光標,使用ghjk這四個鍵
附注:
:cw change-word 改變到下一個詞的尾部,不含詞後面的空格
4.5Taglist窗口的快捷鍵操作
在taglist窗口中,可以使用下面的快捷鍵:
《CR》 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣
o 在一個新打開的窗口中顯示光標下tag
《Space》 顯示光標下tag的原型定義
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出現順序排序間切換
x taglist窗口放大和縮小,方便查看較長的tag
+ 打開一個折疊,同zo
- 將tag折疊起來,同zc
* 打開所有的折疊,同zR
= 將所有tag折疊起來,同zM
[[ 跳到前一個文件
]] 跳到後一個文件
q 關閉taglist窗口
《F1》 顯示幫助
可以用”:TlistOpen“打開taglist窗口,用”:TlistClose“關閉taglist窗口。或者使用”:TlistToggle“在打開和關閉間切換。在我的vimrc中定義了下面的映射,使用《F9》鍵就可以打開/關閉taglist窗口:
map 《silent》 《F8》 :TlistToggle《cr》
按照“typedef”, “variable”, “function”等進行了分類。 將光標移到VimMain上, 如圖中左邊紅色的方框, 按下回車後, 源程序會自動跳轉到VimMain的定義處, 如圖中右邊的紅色方框。 這就是TagList最基本也是最常用的操作。在浏覽TagList窗口時, 如果還不想讓源碼跳轉, 但是想看看tag在源碼中完整的表達, 可以將光標移到你想要看的tag上, 如圖中上邊黃色的方框, 然後按下空格鍵, 在下面的命令欄中, 如圖下邊黃色的方框, 會顯示該tag在源碼中完整的寫法, 而不會跳轉到源碼處。
4.6cscope插件用法
在vim中使用cscope非常簡單,首先調用”cscope add“命令添加一個cscope數據庫,然後就可以調用”cscope find“命令進行查找了。vim支持8種cscope的查詢功能,如下:
s: 查找C語言符號,即查找函數名、宏、枚舉值等出現的地方
g: 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能
d: 查找本函數調用的函數
c: 查找調用本函數的函數
t: 查找指定的字符串
e: 查找egrep模式,相當於egrep功能,但查找速度快多了
f: 查找並打開文件,類似vim的find功能
i: 查找包含本文件的文件
例如,我們想在vim 7.0的源代碼中查找調用do_cscope()函數的函數,我們可以輸入:”:cs find c do_cscope“,回車後發現沒有找到匹配的功能,可能並沒有函數調用do_cscope()。我們再輸入”:cs find s do_cscope“,查找這個C符號出現的位置,現在vim列出了這個符號出現的所有位置。
我們還可以進行字符串查找,它會雙引號或單引號括起來的內容中查找。還可以輸入一個正則表達式,這類似於egrep程序的功能,但它是在交叉索引數據庫中查找,速度要快得多。
cscope的主要功能是通過同的子命令“find”來實現的
“cscope find”的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s查找本 C 符號(可以跳過注釋)
1 或 g查找本定義
2 或 d查找本函數調用的函數
3 或 c查找調用本函數的函數
4 或 t查找本字符串
6 或 e查找本 egrep 模式
7 或 f查找本文件
8 或 i查找包含本文件的文件
vim提供了一些選項可以調整它的cscope功能:
cscopecscopeprg選項用於設置cscope程序的位置。
cscopecscopequickfix設定是否使用quickfix窗口來顯示cscope的結果,詳情請”:help cscopequickfix“;
如果你想vim同時搜索tag文件以及cscope數據庫,設置cscopecscopetag選項;
cscopecscopetagorder選項決定是先查找tag文件還是先查找cscope數據庫。設置為0則先查找cscope數據庫,設置為1先查找tag文件。我通常設置為1,因為在tag文件中查找到的結果,會把最佳匹配列在第一位。
vim的手冊中給出了使用cscope的建議方法,使用命令”:help cscope-suggestions“查看。
下面是我的vimrc中關於cscope接口的設置:
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“
” cscope setting
“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“
if has(”cscope“)
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
” add any database in current directory
if filereadable(“cscope.out”)
cs add cscope.out
endif
set csverb
endif
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》
先在~/vimrc中增加一句:
:set cscopequickfix=s-,c-,d-,i-,t-,e- 這個是設定是否使用 quickfix 窗口來顯示 cscope 結果, 用法在後面會說到。
我想查找vim_strsave()到底在那些地方被調用過了, 用命令:
:cs find c vim_strsave 按下回車後vim會自動跳轉到第一個符合要求的地方, 並且在命令欄顯示有多少符合要求的結果, 如圖:
如果自動跳轉的位置你不滿意, 想看其他的結果, 可以用下面的命令打開QuickFix窗口:
:cw 如圖:
4.7 quickfix窗口
QuickFix窗口的主要作用就是上面看到的那個功能: 輸出一些供選擇的結果, 可以被很多命令調用, 更詳細的介紹和使用方法請用下面的命令打開QuickFix的手冊來學習吧:
:help quickfix
可以用下面的命令來跳轉:
:cn // 切換到下一個結果
:cp // 切換到上一個結果 如果你經常使用這兩個命令, 你還可以給他們設定快捷鍵, 比如在~/.vimrc中增加:
nmap 《F6》 :cn《cr》
nmap 《F7》 :cp《cr》
5.產生的疑問
5.1 cscope和ctags有啥區別?
兩者能並存,前者更強大,特別是查找字符串,前者威力更大。ctags是跳轉到標簽定義的地方,但如果想查找函數在哪裡被調用,或者標簽在哪些地方出現過,就需要使用更為強大的cscope。
Cscope是一個交互式的屏幕下使用的工具,它被設計用來回答以下的問題:
* 什麼地方用到了這個符號?
* 這是在什麼地方定義的?
* 這個變量在哪裡被賦值?
* 這個全局符號的定義在哪裡?
* 這個函數在源文件中的哪個地方?
* 哪些函數調用了這個函數?
* 這個函數調用了哪些函數?
* 信息 “out of space” 從哪來?
* 這個源文件在整個目錄結構中處於什麼位置?
* 哪些文件包含這個頭文件?
上面就是CentOS 6.2配置vim開發環境的方法介紹了,從本文的介紹方法中可以看出,vim開發環境的配置內容較多,搭建的時候要有耐心,且該方法只適用於CentOS 6.2版本。