系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > CentOS 6.2配置vim開發(fā)環(huán)境

CentOS 6.2配置vim開發(fā)環(huán)境的步驟

時(shí)間:2015-03-18 17:30:03 作者:qipeng 來(lái)源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問(wèn): https://m.xitongzhijia.net/xtjc/20150318/41885.html 手機(jī)查看 評(píng)論

  vim一款優(yōu)秀的系統(tǒng)文本編輯器,常用于Linux系統(tǒng)中,使用vim需自行安裝,且需要配置其開發(fā)環(huán)境,那么在CentOS 6.2中,要如何搭建vim開發(fā)環(huán)境呢?下面小編就給大家介紹下CentOS 6.2配置vim開發(fā)環(huán)境的方法,一起來(lái)學(xué)習(xí)下吧。

 CentOS 6.2配置vim開發(fā)環(huán)境的步驟

  1.首先使用Ubuntu(所在ip為192.168.16.230)翻墻登陸https://www.vim.org/,下載其上面的vim相關(guān)插件到Ubuntu的下載目錄下:

  cd ~/下載/

  https://ctags.sourceforge.net

  https://cscope.sourceforge.net/

  https://www.vim.org/scripts/script.php?script_id=273

  https://www.vim.org/scripts/script.php?script_id=1581

  https://www.vim.org/scripts/script.php?script_id=197

  https://www.vim.org/scripts/script.php?script_id=95

  https://www.vim.org/scripts/script.php?script_id=159

  https://www.vim.org/scripts/script.php?script_id=31

  https://www.vim.org/scripts/script.php?script_id=2620

  https://www.vim.org/scripts/download_script.php?src_id=9679

  https://www.vim.org/scripts/script.php?script_id=42

  https://www.vim.org/scripts/script.php?script_id=311

  使用sftp將這些壓縮包上傳到目標(biāo)服務(wù)器CentOS 6.2上面

  cd /usr/local/src

  sftp root@192.168.16.237

  ls

  put a.vim ***

  quit

  退出sftp,下面開始安裝。

  2.在主目錄下新建目錄,開始安裝

  mkdir -p .vim/plugin

  mkdir -p .vim/doc

  mkdir -p .vim/tags

  mkdir -p ~/.vim/syntax

  將上述文件包轉(zhuǎn)移到~/.vim/下面,逐個(gè)安裝插件:

  2.1 ctags插件(Exuberant Ctags)

  生成tag文件的插件,從如下官網(wǎng)

  https://ctags.sourceforge.net

  下載到如下源碼包c(diǎn)tags-5.8.tar.gz,下面使用源碼安裝方式

  tar zxvf ctags-5.8.tar.gz

  cd ctags-5.8

  。/configure

  make

  make install

  cd 。。/

  發(fā)現(xiàn)ctags是個(gè)可執(zhí)行文件,被復(fù)制到/usr/local/bin下面了。你可以使用

  ctags --help

  來(lái)查看該執(zhí)行文件的命令選項(xiàng)。

  tags文件是由ctags程序產(chǎn)生的一個(gè)索引文件, ctags程序其實(shí)叫“Exuberant Ctags”, 是Unix上面ctags程序的替代品, 并且比它功能強(qiáng)大, 是大多數(shù)Linux發(fā)行版上默認(rèn)的ctags程序。

  2.2 taglist插件

  這個(gè)是瀏覽源代碼的插件,直接將壓縮包解壓即可自動(dòng)安裝

  unzip taglist_46.zip

  會(huì)在plugin和doc中各生成一個(gè)文件taglist.vim和taglist.txt

  相應(yīng)地在我的.vimrc中如下配置:

  let Tlist_Show_One_File = 1 “不同時(shí)顯示多個(gè)文件的tag,只顯示當(dāng)前文件的

  let Tlist_Exit_OnlyWindow = 1 ”如果taglist窗口是最后一個(gè)窗口,則退出vim

  let Tlist_Use_Right_Window = 0 “在右側(cè)窗口中顯示taglist窗口 (默認(rèn)是0)

  注意taglist插件需要tags文件,所以它需要ctags或cscope生成的tags文件。也就是說(shuō),這幾個(gè)插件是緊密聯(lián)系的。

  2.3 Lookup插件

  利用插入補(bǔ)全方式在項(xiàng)目中快速查找文件,緩存區(qū),目錄的插件,我們從

  https://www.vim.org/scripts/scipt.php?script_id=1581

  下載源碼包lookupfile-1.8.zip進(jìn)行安裝

  unzip lookupfile-1.8.zip

  將在doc,plugin,autoload目錄下分別生成lookupfile.txt,lookupfile.vim和lookupfile.vim

  注意autoload目錄是自動(dòng)生成的。

  Lookupfile插件還需最新的genutils插件支持,否則你打開vim時(shí)會(huì)有警告:

  lookupfile: You need a newer version of genutils.vim plugin

  從下面的地址下載

  https://www.vim.org/scripts/script.php?script_id=197

  得到genutils-2.5.zip,下面直接解壓就可自動(dòng)安裝好

  unzip genutils-2.5.zip

  發(fā)現(xiàn)它在autoload和plugin目錄中都放入了文件genutils.vim

  Lookupfile在查找文件時(shí),需要使用tags文件,它可以使用ctags命令生成的tag文件,不過(guò)效率比較低,我們專門給它生成了一個(gè)包含項(xiàng)目中所有文件名的tag文件。下面是具體步驟:

  我編寫了下面的shell腳本make_lookupfile_tag.sh,為trafficserver-3.2.4的源代碼,生成一個(gè)文件名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

  回想一下我們?cè)?rdquo;使用標(biāo)簽(tag)文件“一文中介紹的tag文件的格式。再對(duì)照腳本命令來(lái)看:

  echo命令用來(lái)生成filenametags文件中的”!_TAG_FILE_SORTED”行,表明此tag文件是經(jīng)過(guò)排序的。

  find命令用來(lái)查找所有類型為普通文件,文件后綴名不是.png和.gif的文件,找到的文件按”文件名\t文件路徑\t1″的格式輸出出來(lái)。

  sort命令則把find命令的輸出重新排序,然后寫入filenametags文件中

  在~/program_dev/trafficserver-3.2.4/目錄下運(yùn)行該腳本,

  chmod +x make_lookupfile_tag.sh

  /bin/bash make_lookupfile_tag.sh

  會(huì)生成一個(gè)名為filenametags的文件,包含了trafficserver-3.2.4目錄下的所有文件的名字及其所在目錄,你可以打開該文件查看并驗(yàn)證。

  現(xiàn)在我們需要讓lookupfile插件知道到哪去找文件名tag文件。我們假定vim當(dāng)前工作目錄為~/program_dev/trafficserver-3.2.4/,執(zhí)行下面的命令:

  :let g:LookupFile_TagExpr = ‘”。/filenametags“’

  注:如果不設(shè)定g:LookupFile_TagExpr的值,那么lookupfile插件會(huì)以tags選項(xiàng)定義的文件作為它的tag文件。

  當(dāng)恢復(fù)前次會(huì)話時(shí),就給lookupfile插件定義了tag文件。

  現(xiàn)在我們就可以使用lookupfile來(lái)打開文件了,按”《F5》“或輸入”:LookupFile“在當(dāng)前窗口上方打開一個(gè)lookupfile小窗口,開始輸入文件名(至少4個(gè)字符),隨著你的輸入,符合條件的文件就列在下拉列表中了。文件名可以使用vim的正則表達(dá)式,這大大方便了文件的查找。你可以用”CTRL-N“和”CTRL-P“(或者用上、下光標(biāo)鍵)來(lái)在下拉列表中選擇你所需的文件。選中文件后,按回車,就可以在之前的窗口中打開此文件。

  2.4 cscope插件

  標(biāo)簽跳轉(zhuǎn)插件,從下面的網(wǎng)址下載

  https://cscope.sourceforge.net/

  得到源碼包c(diǎn)scope-15.8a.tar.gz,下面進(jìn)行源碼包安裝:

  tar zxvf cscope-15.8a.tar.gz

  cd cscope-15.8a

  ll

  。/configure

  make

  make install

  cd 。。/

  注意使用下面的命令查看到

  which cscope

  可執(zhí)行文件所在路徑是/usr/local/bin/cscope

  cscope的用法很簡(jiǎn)單,首先需要在你的工程目錄,比如trafficserver-3.2.4下面生成一個(gè)cscope數(shù)據(jù)庫(kù),也就是一個(gè)索引文件。cscope只在第一次解析時(shí)掃描全部文件,以后再調(diào)用cscope時(shí),它只掃描那些改動(dòng)過(guò)的文件,這大大提高了cscope生成索引的速度。

  2.5 BufExplore插件

  緩沖區(qū)文件瀏覽插件,從下面的地址下載

  https://vim.sourceforge.net/scripts/script.php?script_id=42

  直接解壓即可自動(dòng)安裝

  unzip bufexplorer-7.3.6.zip

  將在doc和plugin目錄下分別安裝bufexplorer.txt和bufexplorer.vim文件。

  2.6 winmager插件

  該插件控制各插件在vim窗口中的布局顯示,從下面的地址下載

  https://vim.sourceforge.net/scripts/script.php?script_id=95

  得到winmanager.zip文件。

  unzip winmanager.zip

  把該文件在~/.vim/目錄中解壓縮,這會(huì)將如下文件解壓到~/.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文件來(lái)回切換

  minbufexpl.vim //快速瀏覽和操作Buffer,自如切換

  直接復(fù)制到~/.vim/plugin/下面就可以了

  2.8 vim自帶插件

  QuickFix 編譯糾錯(cuò),顯示查詢結(jié)果窗口

  new-omni-completion 全能補(bǔ)全

  2.9 NeoComplCache插件

  自動(dòng)補(bǔ)全插件,下載地址:

  https://www.vim.org/scripts/script.php?script_id=2620

  將下載下來(lái)的壓縮包neocomplcache-8.0.zip使用如下命令解壓

  unzip neocomplcache-8.0.zip

  其解壓后文件夾里面的文件,好像是四個(gè),autoload、doc、plugin、vest、README.MD,會(huì)自動(dòng)放到.vim相應(yīng)的文件夾下面。

  在~/.vimrc文件里加入自動(dòng)啟動(dòng)的命令:

  let g:neocomplcache_enable_at_startup = 1。

  2.10 查看插件自帶的文檔

  注意到上面各步驟中已經(jīng)把插件自帶的文檔放入$HOME/.vim/doc目錄下了,現(xiàn)在

  進(jìn)入vim,輸入命令:helptags $HOME/.vim/doc,vim就會(huì)自動(dòng)讀取$HOME/.vim/doc目錄下的文檔,

  輸入:help local-additions即可跳轉(zhuǎn)到$HOME/.vim/doc中的所有文檔列表處,用選擇要看的文檔即可。

  我們可以看到,當(dāng)前我們已經(jīng)安裝的插件有taglist,lookupfile,bufexplorer,winmanager插件等。

  2.11 安裝vim中文幫助文檔

  vim中文文檔的主頁(yè)是:

  https://vimcdoc.sourceforge.net/

  它將vim的help文件翻譯成為中文,已經(jīng)支持目前最新的vim 7.3。

  如果想使用vim中文文檔(.cnx文件),可以遵循以下步驟:

  cd ~/.vim/

  $wget https://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.8.0.tar.gz(注意這不是真實(shí)的地址,僅作示例)

  tar zxvf vimcdoc-1.8.0.tar.gz

  ll

  cd vimcdoc-1.8.0

  sudo 。/vimcdoc.sh -i

  cd 。。/

  將會(huì)將這些文檔安裝在/usr/share/vim/,/usr/share/doc等幾個(gè)目錄下面。

  啟動(dòng)vim,輸入:help,看看幫助文檔是否已經(jīng)便成中文了?

  2.12 grep插件

  工程中正則查找插件,從下面的地址下載

  https://www.vim.org/scripts/script.php?script_id=311

  將得到的grep.vim直接放到~/.vim/plugin/下面就可以了。

  一些注意事項(xiàng):

  1)vim中文文檔不會(huì)覆蓋原英文文檔,安裝后vim默認(rèn)使用中文文檔。若想使用英文文檔,可在vim中執(zhí)行以下命令:

 。簊et helplang=en

  同理,使用以下命令可重新使用中文文檔:

 。簊et helplang=cn

  2)使用以下命令可以卸載vim中文文檔:

  sudo 。/vimcdoc.sh -u

  3)幫助文件的文本是utf-8編碼的, 如果想用vim直接查看, 需要在~/.vimrc中設(shè)置:

 。簊et encoding=utf-8

  2.12語(yǔ)法高亮

  普通一些的要求是更改色彩方案,設(shè)置如下:

  首先要在你的 ~/.vimrc 文件中增加下面幾句話:

  syntax enable

  syntax on

  選中你喜歡的配色方案,在.vimrc文件中做設(shè)置,比如

  colorscheme desert

  更個(gè)性化的需求

  讓運(yùn)算符號(hào), 各種括號(hào), 函數(shù)名, 自定義類型等也高亮起來(lái)

  對(duì)各種語(yǔ)言的源文件(比如c,c++,php,python等)新建一個(gè)語(yǔ)法文件,分別存放到

  /usr/share/vim/vim72/syntax/c.vim

  下面,以C語(yǔ)言為例,新建一個(gè)文件~/.vim/syntax/c.vim

  加入以下內(nèi)容

  ”========================================================

  “ 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文件看看, 是不是又明亮了許多。 還有一個(gè)壓箱底的要告訴你, 如果你自己增加了一個(gè)類型或者結(jié)構(gòu)之類的, 怎么讓它也象”int“, ”void“這樣高亮起來(lái)呢? 再在上面的文件~/.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”一樣高亮起來(lái)了, 這樣的缺點(diǎn)是每增加一個(gè)類型, 就要手動(dòng)在這里添加一下。

  3.配置.vimrc文件

  當(dāng)vim在啟動(dòng)時(shí),如果沒(méi)有找到vimrc或gvimrc,它缺省工作VI兼容的模式。這意味著,你只能使用VI所具備的功能,而vim中的大量擴(kuò)展功能將無(wú)法使用。也許這就是你的vim如此難用的原因。

  vim中自帶了一個(gè)vimrc例子,以我所在的CentOS 6.2上的為例,使用下面的命令找到這個(gè)文件

  locate vimrc_example.vim

  發(fā)現(xiàn)它的真實(shí)目錄在

  /usr/share/vim/vim72/vimrc_sample.vim

  將其拷貝到我的主目錄下面

  cp -f /usr/share/vim/vim72/vimrc_sample.vim ~/.vimrc

  或者你在vim中執(zhí)行下面的命令,和上面的shell命令完成相同的功能:

 。海p $VIMRUNTIME/vimrc_example.vim ~/.vimrc

  現(xiàn)在,你退出vim后再進(jìn)入,你的vim和剛才已經(jīng)不一樣了。

  你可以先讀一下你的vimrc,看看它都設(shè)定了什么:

 。篹 ~/.vimrc

  這是一個(gè)注釋良好的文件,不需要多解釋。

  在今后使用vim的日子里,你會(huì)頻繁的更改你的vimrc。所以我們需要設(shè)置一些快捷方式,使我們能快速的訪問(wèn)vimrc。

  把下面這段內(nèi)容拷貝到你的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

  為了方便解釋,我給每一行都加了一個(gè)行號(hào)。

  在vimrc中,雙引號(hào)開頭的行,將被當(dāng)作注釋忽略。

  第2行,用來(lái)設(shè)置mapleader變量,當(dāng)mapleader為未設(shè)置或?yàn)榭諘r(shí),使用缺省的”\”來(lái)作為mapleader。mapleader變量是作用是什么呢?看下面的介紹。

  第5行定義了一個(gè)映射(map),這個(gè)映射把《leader》ss,映射為命令:source ~/.vimrc《cr》。當(dāng)定義一個(gè)映射時(shí),可以使用《leader》前綴。而在映射生效時(shí),vim會(huì)把《leader》替換成mapleader變量的值。也就是說(shuō),我們這里定義的《leader》ss在使用時(shí)就變成了”,ss“,當(dāng)輸入這一快捷方式時(shí),就會(huì)source一次~/.vimrc文件(也就是重新執(zhí)行一遍.vimrc文件)。

  第7行,定義了《leader》ee快捷鍵,當(dāng)輸入,ee時(shí),會(huì)打開~/.vimrc進(jìn)行編輯。

  第9行,定義了一個(gè)自動(dòng)命令,每次寫入.vimrc后,都會(huì)執(zhí)行這個(gè)自動(dòng)命令,source一次~/.vimrc文件。

  有了上面的快捷鍵,我們就能快速的打開vimrc文件編輯,快速重新source vimrc文件,方便多了。

  相關(guān)的配置文件參見趙攀提供的.vimrc文件的內(nèi)容。

  注意:最后的源碼結(jié)構(gòu)類似如下:

  ~--|--.vimrc

  |--.vim --|-plugin--

  |-doc--

  |-autoload

  |-vest

  4.實(shí)戰(zhàn)體驗(yàn)

  4.1下載一個(gè)trafficserver的源碼,并以此為例來(lái)闡釋使用vim開發(fā)的方法

  登陸192.168.16.237上,并在當(dāng)前主目錄上新建一個(gè)program_dev目錄

  ssh root@192.168.16.237

  cd ~/

  mkdir program_dev

  wget https://mirror.esocc.com/apache/trafficserver/trafficserver-3.2.4.tar.bz2

  下載完成后,解壓縮

  tar jxvf trafficserver-3.2.4.tar.bz2

  ll

  注意:使用首先生成3種類型的標(biāo)簽,分別是ctags,cscope和lookupfile插件需要用到的標(biāo)簽。

  4.2生成ctags標(biāo)簽(請(qǐng)參照下一種方法來(lái)生成tags并設(shè)置)

  ctags -R trafficserver-3.2.4

  將在trafficserver-3.2.4同級(jí)目錄生成一個(gè)名為tags的文件

  現(xiàn)在進(jìn)入vim環(huán)境,輸入以下命令

 。篶d ~/program_dev/trafficserver-3.2.4 “切換到當(dāng)前源碼目錄

 。簊et tags=~/program_dev/tags ”設(shè)置tags選項(xiàng)為當(dāng)前目錄下的tags文件

  注意這里設(shè)置tags需要明確寫出絕對(duì)路徑,否則將會(huì)導(dǎo)致很多函數(shù)找不到。tags文件是個(gè)純文本文件,你可以使用vim打開它看一下。

  另外,根據(jù).vimrc中的配置,使用下面的快捷鍵來(lái)分別生成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會(huì)自動(dòng)區(qū)分和處理各自的索引。

  這里注意使用cscope的方法,cscope在生成索引文件時(shí),只搜索c,lex和yacc的文件(后綴名為.c,.h,.l,.y),要生成c++的文件索引,就得使用上面的方法,先產(chǎn)生一個(gè)文件列表cscope.files,然后讓cscope為這個(gè)列表中的每個(gè)文件都生成索引。

  將上述內(nèi)容寫成一個(gè)腳本make_cscope_ctags_index.sh,其內(nèi)容如下:

  #!/bin/bash

  find 。 -name “*.h” -o -name “*.c” -o -name “*.cc” 》 cscope.files

  cscope -bkq -i cscope.files

  ctags -R

  保存在~/.vim/中,現(xiàn)在將其復(fù)制到trafficserver-3.2.4下面,并運(yùn)行下面的命令

  /bin/bash make_cscope_ctags_index.sh

  命令在trafficserver-3.2.4下面生成如下文件

  cscope.files

  cscope.in.out

  cscope.out

  cscope.po.out

  tags

  經(jīng)過(guò)分析cscope.files,我們看到了很多文件。現(xiàn)在更新tags設(shè)置項(xiàng)

 。簊et tags=~/program_dev/trafficserver-3.2.4/tags

  至此,我們?cè)O(shè)置好了tags選項(xiàng),接下來(lái)開始使用它:

  在當(dāng)前命令行輸入

  vim -t main

  這個(gè)命令將打開定義“main”(變量或函數(shù)或其它)的文件,并把光標(biāo)定位到這一行。

  在瀏覽源碼時(shí),當(dāng)要查詢某個(gè)函數(shù)的定義時(shí),將光標(biāo)放在該函數(shù)上,按《C-]》鍵,就會(huì)跳轉(zhuǎn)到該函數(shù)的定義處,按《C-t》鍵是返回。

  注意:運(yùn)行vim的時(shí)候,必須在“tags”文件所在的目錄下運(yùn)行。否則,運(yùn)行vim的時(shí)候還要用“:settags=”命令設(shè)定“tags”文件的路徑,這樣vim才能找到“tags”文件。

  在完成編碼時(shí),可以手工刪掉tags文件(帚把不到,灰塵不會(huì)自己跑掉^_^)。

  現(xiàn)在打開編號(hào)為43的文件中的main函數(shù)

  按F9打開winmanager,這時(shí)按照設(shè)置,將會(huì)出現(xiàn)3部分窗口布局。如果打開了多個(gè)文件(多緩沖區(qū)),將在最上角出現(xiàn)第四個(gè)窗口,MiniBufExplorer窗口,F(xiàn)在按住Ctrl,再連續(xù)按W,將在各個(gè)窗口之間按照逆時(shí)針順序來(lái)回切換。當(dāng)然,按照趙攀的文檔,使用F2也一樣起到該作用。再按一次F9將關(guān)閉winmanager窗口布局。

  當(dāng)選中某個(gè)窗口時(shí),都可以使用vim通常的移動(dòng)鼠標(biāo)的方式來(lái)選擇不同的標(biāo)簽等,比如gg,G等快捷鍵。

  將光標(biāo)定位到main函數(shù)所在的文件中,將光標(biāo)定位到某個(gè)函數(shù)上,按住Ctrl+]鍵,將會(huì)跳轉(zhuǎn)到該函數(shù)的定義位置。

  4.3快速瀏覽和操作Buffer

  用vim打開多個(gè)文件時(shí),vim最上方會(huì)出現(xiàn)一個(gè)MiniBufExplorer窗口,其中列出了當(dāng)前所有已經(jīng)打開的buffer,當(dāng)你把光標(biāo)置于這個(gè)窗口時(shí)(當(dāng)你處于winmanager窗口布局中時(shí),使用Ctrl+W來(lái)輪流切換), 有下面幾個(gè)快捷鍵可以用:

  《Tab》 向前循環(huán)切換到每個(gè)buffer名上

  《S-Tab》 向后循環(huán)切換到每個(gè)buffer名上

  《Enter》 在打開光標(biāo)所在的buffer

  d 刪除光標(biāo)所在的buffer

  當(dāng)你只編輯一個(gè)buffer的時(shí)候MiniBufExplorer派不上用場(chǎng), 當(dāng)你打開第二個(gè)buffer的時(shí)候, MiniBufExplorer窗口就自動(dòng)彈出來(lái)了,

  4.4bufexplorer插件用法

  打開vim,輸入\be在當(dāng)前窗口瀏覽緩存,\bs水平打開一個(gè)窗口瀏覽緩存,\bv垂直打開一個(gè)窗口瀏覽緩存。

  但是在Filelist和taglist的窗口內(nèi),你可以移動(dòng)上下移動(dòng)光標(biāo),使用ghjk這四個(gè)鍵

  附注:

 。篶w change-word 改變到下一個(gè)詞的尾部,不含詞后面的空格

  4.5Taglist窗口的快捷鍵操作

  在taglist窗口中,可以使用下面的快捷鍵:

  《CR》 跳到光標(biāo)下tag所定義的位置,用鼠標(biāo)雙擊此tag功能也一樣

  o 在一個(gè)新打開的窗口中顯示光標(biāo)下tag

  《Space》 顯示光標(biāo)下tag的原型定義

  u 更新taglist窗口中的tag

  s 更改排序方式,在按名字排序和按出現(xiàn)順序排序間切換

  x taglist窗口放大和縮小,方便查看較長(zhǎng)的tag

  + 打開一個(gè)折疊,同zo

  - 將tag折疊起來(lái),同zc

  * 打開所有的折疊,同zR

  = 將所有tag折疊起來(lái),同zM

 。郏 跳到前一個(gè)文件

  ]] 跳到后一個(gè)文件

  q 關(guān)閉taglist窗口

  《F1》 顯示幫助

  可以用”:TlistOpen“打開taglist窗口,用”:TlistClose“關(guān)閉taglist窗口;蛘呤褂”:TlistToggle“在打開和關(guān)閉間切換。在我的vimrc中定義了下面的映射,使用《F9》鍵就可以打開/關(guān)閉taglist窗口:

  map 《silent》 《F8》 :TlistToggle《cr》

  按照“typedef”, “variable”, “function”等進(jìn)行了分類。 將光標(biāo)移到VimMain上, 如圖中左邊紅色的方框, 按下回車后, 源程序會(huì)自動(dòng)跳轉(zhuǎn)到VimMain的定義處, 如圖中右邊的紅色方框。 這就是TagList最基本也是最常用的操作。在瀏覽TagList窗口時(shí), 如果還不想讓源碼跳轉(zhuǎn), 但是想看看tag在源碼中完整的表達(dá), 可以將光標(biāo)移到你想要看的tag上, 如圖中上邊黃色的方框, 然后按下空格鍵, 在下面的命令欄中, 如圖下邊黃色的方框, 會(huì)顯示該tag在源碼中完整的寫法, 而不會(huì)跳轉(zhuǎn)到源碼處。

  4.6cscope插件用法

  在vim中使用cscope非常簡(jiǎn)單,首先調(diào)用”cscope add“命令添加一個(gè)cscope數(shù)據(jù)庫(kù),然后就可以調(diào)用”cscope find“命令進(jìn)行查找了。vim支持8種cscope的查詢功能,如下:

  s: 查找C語(yǔ)言符號(hào),即查找函數(shù)名、宏、枚舉值等出現(xiàn)的地方

  g: 查找函數(shù)、宏、枚舉等定義的位置,類似ctags所提供的功能

  d: 查找本函數(shù)調(diào)用的函數(shù)

  c: 查找調(diào)用本函數(shù)的函數(shù)

  t: 查找指定的字符串

  e: 查找egrep模式,相當(dāng)于egrep功能,但查找速度快多了

  f: 查找并打開文件,類似vim的find功能

  i: 查找包含本文件的文件

  例如,我們想在vim 7.0的源代碼中查找調(diào)用do_cscope()函數(shù)的函數(shù),我們可以輸入:”:cs find c do_cscope“,回車后發(fā)現(xiàn)沒(méi)有找到匹配的功能,可能并沒(méi)有函數(shù)調(diào)用do_cscope()。我們?cè)佥斎?rdquo;:cs find s do_cscope“,查找這個(gè)C符號(hào)出現(xiàn)的位置,現(xiàn)在vim列出了這個(gè)符號(hào)出現(xiàn)的所有位置。

  我們還可以進(jìn)行字符串查找,它會(huì)雙引號(hào)或單引號(hào)括起來(lái)的內(nèi)容中查找。還可以輸入一個(gè)正則表達(dá)式,這類似于egrep程序的功能,但它是在交叉索引數(shù)據(jù)庫(kù)中查找,速度要快得多。

  cscope的主要功能是通過(guò)同的子命令“find”來(lái)實(shí)現(xiàn)的

  “cscope find”的用法:

  cs find c|d|e|f|g|i|s|t name

  0 或 s查找本 C 符號(hào)(可以跳過(guò)注釋)

  1 或 g查找本定義

  2 或 d查找本函數(shù)調(diào)用的函數(shù)

  3 或 c查找調(diào)用本函數(shù)的函數(shù)

  4 或 t查找本字符串

  6 或 e查找本 egrep 模式

  7 或 f查找本文件

  8 或 i查找包含本文件的文件

  vim提供了一些選項(xiàng)可以調(diào)整它的cscope功能:

  cscopecscopeprg選項(xiàng)用于設(shè)置cscope程序的位置。

  cscopecscopequickfix設(shè)定是否使用quickfix窗口來(lái)顯示cscope的結(jié)果,詳情請(qǐng)”:help cscopequickfix“;

  如果你想vim同時(shí)搜索tag文件以及cscope數(shù)據(jù)庫(kù),設(shè)置cscopecscopetag選項(xiàng);

  cscopecscopetagorder選項(xiàng)決定是先查找tag文件還是先查找cscope數(shù)據(jù)庫(kù)。設(shè)置為0則先查找cscope數(shù)據(jù)庫(kù),設(shè)置為1先查找tag文件。我通常設(shè)置為1,因?yàn)樵趖ag文件中查找到的結(jié)果,會(huì)把最佳匹配列在第一位。

  vim的手冊(cè)中給出了使用cscope的建議方法,使用命令”:help cscope-suggestions“查看。

  下面是我的vimrc中關(guān)于cscope接口的設(shè)置:

  “”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“

  ” 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中增加一句:

 。簊et cscopequickfix=s-,c-,d-,i-,t-,e- 這個(gè)是設(shè)定是否使用 quickfix 窗口來(lái)顯示 cscope 結(jié)果, 用法在后面會(huì)說(shuō)到。

  我想查找vim_strsave()到底在那些地方被調(diào)用過(guò)了, 用命令:

 。篶s find c vim_strsave 按下回車后vim會(huì)自動(dòng)跳轉(zhuǎn)到第一個(gè)符合要求的地方, 并且在命令欄顯示有多少符合要求的結(jié)果, 如圖:

  如果自動(dòng)跳轉(zhuǎn)的位置你不滿意, 想看其他的結(jié)果, 可以用下面的命令打開QuickFix窗口:

 。篶w 如圖:

  4.7 quickfix窗口

  QuickFix窗口的主要作用就是上面看到的那個(gè)功能: 輸出一些供選擇的結(jié)果, 可以被很多命令調(diào)用, 更詳細(xì)的介紹和使用方法請(qǐng)用下面的命令打開QuickFix的手冊(cè)來(lái)學(xué)習(xí)吧:

 。篽elp quickfix

  可以用下面的命令來(lái)跳轉(zhuǎn):

  :cn // 切換到下一個(gè)結(jié)果

 。篶p // 切換到上一個(gè)結(jié)果 如果你經(jīng)常使用這兩個(gè)命令, 你還可以給他們?cè)O(shè)定快捷鍵, 比如在~/.vimrc中增加:

  nmap 《F6》 :cn《cr》

  nmap 《F7》 :cp《cr》

  5.產(chǎn)生的疑問(wèn)

  5.1 cscope和ctags有啥區(qū)別?

  兩者能并存,前者更強(qiáng)大,特別是查找字符串,前者威力更大。ctags是跳轉(zhuǎn)到標(biāo)簽定義的地方,但如果想查找函數(shù)在哪里被調(diào)用,或者標(biāo)簽在哪些地方出現(xiàn)過(guò),就需要使用更為強(qiáng)大的cscope。

  Cscope是一個(gè)交互式的屏幕下使用的工具,它被設(shè)計(jì)用來(lái)回答以下的問(wèn)題:

  * 什么地方用到了這個(gè)符號(hào)?

  * 這是在什么地方定義的?

  * 這個(gè)變量在哪里被賦值?

  * 這個(gè)全局符號(hào)的定義在哪里?

  * 這個(gè)函數(shù)在源文件中的哪個(gè)地方?

  * 哪些函數(shù)調(diào)用了這個(gè)函數(shù)?

  * 這個(gè)函數(shù)調(diào)用了哪些函數(shù)?

  * 信息 “out of space” 從哪來(lái)?

  * 這個(gè)源文件在整個(gè)目錄結(jié)構(gòu)中處于什么位置?

  * 哪些文件包含這個(gè)頭文件?

  上面就是CentOS 6.2配置vim開發(fā)環(huán)境的方法介紹了,從本文的介紹方法中可以看出,vim開發(fā)環(huán)境的配置內(nèi)容較多,搭建的時(shí)候要有耐心,且該方法只適用于CentOS 6.2版本。

標(biāo)簽 CentOS vim

發(fā)表評(píng)論

0

沒(méi)有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見解

立即評(píng)論

以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

官方交流群 軟件收錄