歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux維護

CentOS 6.2配置vim開發環境的步驟

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目錄

ssh [email protected]

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版本。

Copyright © Linux教程網 All Rights Reserved