熱搜:win11繞過硬件限制安裝 一鍵重裝Win10系統(tǒng) 最干凈的u盤啟動盤 真正純凈版的win7系統(tǒng)
時(shí)間:2015-03-18 17:30:03 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150318/41885.html 手機(jī)查看 評論 反饋
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)境的方法,一起來學(xué)習(xí)下吧。
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
來查看該執(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è)是瀏覽源代碼的插件,直接將壓縮包解壓即可自動安裝
unzip taglist_46.zip
會在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文件。也就是說,這幾個(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目錄是自動生成的。
Lookupfile插件還需最新的genutils插件支持,否則你打開vim時(shí)會有警告:
lookupfile: You need a newer version of genutils.vim plugin
從下面的地址下載
https://www.vim.org/scripts/script.php?script_id=197
得到genutils-2.5.zip,下面直接解壓就可自動安裝好
unzip genutils-2.5.zip
發(fā)現(xiàn)它在autoload和plugin目錄中都放入了文件genutils.vim
Lookupfile在查找文件時(shí),需要使用tags文件,它可以使用ctags命令生成的tag文件,不過效率比較低,我們專門給它生成了一個(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
回想一下我們在”使用標(biāo)簽(tag)文件“一文中介紹的tag文件的格式。再對照腳本命令來看:
echo命令用來生成filenametags文件中的”!_TAG_FILE_SORTED”行,表明此tag文件是經(jīng)過排序的。
find命令用來查找所有類型為普通文件,文件后綴名不是.png和.gif的文件,找到的文件按”文件名\t文件路徑\t1″的格式輸出出來。
sort命令則把find命令的輸出重新排序,然后寫入filenametags文件中
在~/program_dev/trafficserver-3.2.4/目錄下運(yùn)行該腳本,
chmod +x make_lookupfile_tag.sh
/bin/bash make_lookupfile_tag.sh
會生成一個(gè)名為filenametags的文件,包含了trafficserver-3.2.4目錄下的所有文件的名字及其所在目錄,你可以打開該文件查看并驗(yàn)證。
現(xiàn)在我們需要讓lookupfile插件知道到哪去找文件名tag文件。我們假定vim當(dāng)前工作目錄為~/program_dev/trafficserver-3.2.4/,執(zhí)行下面的命令:
。簂et g:LookupFile_TagExpr = ‘”。/filenametags“’
注:如果不設(shè)定g:LookupFile_TagExpr的值,那么lookupfile插件會以tags選項(xiàng)定義的文件作為它的tag文件。
當(dāng)恢復(fù)前次會話時(shí),就給lookupfile插件定義了tag文件。
現(xiàn)在我們就可以使用lookupfile來打開文件了,按”《F5》“或輸入”:LookupFile“在當(dāng)前窗口上方打開一個(gè)lookupfile小窗口,開始輸入文件名(至少4個(gè)字符),隨著你的輸入,符合條件的文件就列在下拉列表中了。文件名可以使用vim的正則表達(dá)式,這大大方便了文件的查找。你可以用”CTRL-N“和”CTRL-P“(或者用上、下光標(biāo)鍵)來在下拉列表中選擇你所需的文件。選中文件后,按回車,就可以在之前的窗口中打開此文件。
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的用法很簡單,首先需要在你的工程目錄,比如trafficserver-3.2.4下面生成一個(gè)cscope數(shù)據(jù)庫,也就是一個(gè)索引文件。cscope只在第一次解析時(shí)掃描全部文件,以后再調(diào)用cscope時(shí),它只掃描那些改動過的文件,這大大提高了cscope生成索引的速度。
2.5 BufExplore插件
緩沖區(qū)文件瀏覽插件,從下面的地址下載
https://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窗口中的布局顯示,從下面的地址下載
https://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,自如切換
直接復(fù)制到~/.vim/plugin/下面就可以了
2.8 vim自帶插件
QuickFix 編譯糾錯(cuò),顯示查詢結(jié)果窗口
new-omni-completion 全能補(bǔ)全
2.9 NeoComplCache插件
自動補(bǔ)全插件,下載地址:
https://www.vim.org/scripts/script.php?script_id=2620
將下載下來的壓縮包neocomplcache-8.0.zip使用如下命令解壓
unzip neocomplcache-8.0.zip
其解壓后文件夾里面的文件,好像是四個(gè),autoload、doc、plugin、vest、README.MD,會自動放到.vim相應(yīng)的文件夾下面。
在~/.vimrc文件里加入自動啟動的命令:
let g:neocomplcache_enable_at_startup = 1。
2.10 查看插件自帶的文檔
注意到上面各步驟中已經(jīng)把插件自帶的文檔放入$HOME/.vim/doc目錄下了,現(xiàn)在
進(jìn)入vim,輸入命令:helptags $HOME/.vim/doc,vim就會自動讀取$HOME/.vim/doc目錄下的文檔,
輸入:help local-additions即可跳轉(zhuǎn)到$HOME/.vim/doc中的所有文檔列表處,用選擇要看的文檔即可。
我們可以看到,當(dāng)前我們已經(jīng)安裝的插件有taglist,lookupfile,bufexplorer,winmanager插件等。
2.11 安裝vim中文幫助文檔
vim中文文檔的主頁是:
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 。。/
將會將這些文檔安裝在/usr/share/vim/,/usr/share/doc等幾個(gè)目錄下面。
啟動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中文文檔不會覆蓋原英文文檔,安裝后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語法高亮
普通一些的要求是更改色彩方案,設(shè)置如下:
首先要在你的 ~/.vimrc 文件中增加下面幾句話:
syntax enable
syntax on
選中你喜歡的配色方案,在.vimrc文件中做設(shè)置,比如
colorscheme desert
更個(gè)性化的需求
讓運(yùn)算符號, 各種括號, 函數(shù)名, 自定義類型等也高亮起來
對各種語言的源文件(比如c,c++,php,python等)新建一個(gè)語法文件,分別存放到
/usr/share/vim/vim72/syntax/c.vim
下面,以C語言為例,新建一個(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“這樣高亮起來呢? 再在上面的文件~/.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”一樣高亮起來了, 這樣的缺點(diǎn)是每增加一個(gè)類型, 就要手動在這里添加一下。
3.配置.vimrc文件
當(dāng)vim在啟動時(shí),如果沒有找到vimrc或gvimrc,它缺省工作VI兼容的模式。這意味著,你只能使用VI所具備的功能,而vim中的大量擴(kuò)展功能將無法使用。也許這就是你的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命令完成相同的功能:
。!cp $VIMRUNTIME/vimrc_example.vim ~/.vimrc
現(xiàn)在,你退出vim后再進(jìn)入,你的vim和剛才已經(jīng)不一樣了。
你可以先讀一下你的vimrc,看看它都設(shè)定了什么:
:e ~/.vimrc
這是一個(gè)注釋良好的文件,不需要多解釋。
在今后使用vim的日子里,你會頻繁的更改你的vimrc。所以我們需要設(shè)置一些快捷方式,使我們能快速的訪問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è)行號。
在vimrc中,雙引號開頭的行,將被當(dāng)作注釋忽略。
第2行,用來設(shè)置mapleader變量,當(dāng)mapleader為未設(shè)置或?yàn)榭諘r(shí),使用缺省的”\”來作為mapleader。mapleader變量是作用是什么呢?看下面的介紹。
第5行定義了一個(gè)映射(map),這個(gè)映射把《leader》ss,映射為命令:source ~/.vimrc《cr》。當(dāng)定義一個(gè)映射時(shí),可以使用《leader》前綴。而在映射生效時(shí),vim會把《leader》替換成mapleader變量的值。也就是說,我們這里定義的《leader》ss在使用時(shí)就變成了”,ss“,當(dāng)輸入這一快捷方式時(shí),就會source一次~/.vimrc文件(也就是重新執(zhí)行一遍.vimrc文件)。
第7行,定義了《leader》ee快捷鍵,當(dāng)輸入,ee時(shí),會打開~/.vimrc進(jìn)行編輯。
第9行,定義了一個(gè)自動命令,每次寫入.vimrc后,都會執(zhí)行這個(gè)自動命令,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的源碼,并以此為例來闡釋使用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)簽(請參照下一種方法來生成tags并設(shè)置)
ctags -R trafficserver-3.2.4
將在trafficserver-3.2.4同級目錄生成一個(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需要明確寫出絕對路徑,否則將會導(dǎo)致很多函數(shù)找不到。tags文件是個(gè)純文本文件,你可以使用vim打開它看一下。
另外,根據(jù).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會自動區(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)過分析cscope.files,我們看到了很多文件。現(xiàn)在更新tags設(shè)置項(xiàng)
。簊et tags=~/program_dev/trafficserver-3.2.4/tags
至此,我們設(shè)置好了tags選項(xiàng),接下來開始使用它:
在當(dāng)前命令行輸入
vim -t main
這個(gè)命令將打開定義“main”(變量或函數(shù)或其它)的文件,并把光標(biāo)定位到這一行。
在瀏覽源碼時(shí),當(dāng)要查詢某個(gè)函數(shù)的定義時(shí),將光標(biāo)放在該函數(shù)上,按《C-]》鍵,就會跳轉(zhuǎn)到該函數(shù)的定義處,按《C-t》鍵是返回。
注意:運(yùn)行vim的時(shí)候,必須在“tags”文件所在的目錄下運(yùn)行。否則,運(yùn)行vim的時(shí)候還要用“:settags=”命令設(shè)定“tags”文件的路徑,這樣vim才能找到“tags”文件。
在完成編碼時(shí),可以手工刪掉tags文件(帚把不到,灰塵不會自己跑掉^_^)。
現(xiàn)在打開編號為43的文件中的main函數(shù)
按F9打開winmanager,這時(shí)按照設(shè)置,將會出現(xiàn)3部分窗口布局。如果打開了多個(gè)文件(多緩沖區(qū)),將在最上角出現(xiàn)第四個(gè)窗口,MiniBufExplorer窗口。現(xiàn)在按住Ctrl,再連續(xù)按W,將在各個(gè)窗口之間按照逆時(shí)針順序來回切換。當(dāng)然,按照趙攀的文檔,使用F2也一樣起到該作用。再按一次F9將關(guān)閉winmanager窗口布局。
當(dāng)選中某個(gè)窗口時(shí),都可以使用vim通常的移動鼠標(biāo)的方式來選擇不同的標(biāo)簽等,比如gg,G等快捷鍵。
將光標(biāo)定位到main函數(shù)所在的文件中,將光標(biāo)定位到某個(gè)函數(shù)上,按住Ctrl+]鍵,將會跳轉(zhuǎn)到該函數(shù)的定義位置。
4.3快速瀏覽和操作Buffer
用vim打開多個(gè)文件時(shí),vim最上方會出現(xiàn)一個(gè)MiniBufExplorer窗口,其中列出了當(dāng)前所有已經(jīng)打開的buffer,當(dāng)你把光標(biāo)置于這個(gè)窗口時(shí)(當(dāng)你處于winmanager窗口布局中時(shí),使用Ctrl+W來輪流切換), 有下面幾個(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派不上用場, 當(dāng)你打開第二個(gè)buffer的時(shí)候, MiniBufExplorer窗口就自動彈出來了,
4.4bufexplorer插件用法
打開vim,輸入\be在當(dāng)前窗口瀏覽緩存,\bs水平打開一個(gè)窗口瀏覽緩存,\bv垂直打開一個(gè)窗口瀏覽緩存。
但是在Filelist和taglist的窗口內(nèi),你可以移動上下移動光標(biāo),使用ghjk這四個(gè)鍵
附注:
:cw 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窗口放大和縮小,方便查看較長的tag
+ 打開一個(gè)折疊,同zo
- 將tag折疊起來,同zc
* 打開所有的折疊,同zR
= 將所有tag折疊起來,同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上, 如圖中左邊紅色的方框, 按下回車后, 源程序會自動跳轉(zhuǎn)到VimMain的定義處, 如圖中右邊的紅色方框。 這就是TagList最基本也是最常用的操作。在瀏覽TagList窗口時(shí), 如果還不想讓源碼跳轉(zhuǎn), 但是想看看tag在源碼中完整的表達(dá), 可以將光標(biāo)移到你想要看的tag上, 如圖中上邊黃色的方框, 然后按下空格鍵, 在下面的命令欄中, 如圖下邊黃色的方框, 會顯示該tag在源碼中完整的寫法, 而不會跳轉(zhuǎn)到源碼處。
4.6cscope插件用法
在vim中使用cscope非常簡單,首先調(diào)用”cscope add“命令添加一個(gè)cscope數(shù)據(jù)庫,然后就可以調(diào)用”cscope find“命令進(jìn)行查找了。vim支持8種cscope的查詢功能,如下:
s: 查找C語言符號,即查找函數(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)沒有找到匹配的功能,可能并沒有函數(shù)調(diào)用do_cscope()。我們再輸入”:cs find s do_cscope“,查找這個(gè)C符號出現(xiàn)的位置,現(xiàn)在vim列出了這個(gè)符號出現(xiàn)的所有位置。
我們還可以進(jìn)行字符串查找,它會雙引號或單引號括起來的內(nèi)容中查找。還可以輸入一個(gè)正則表達(dá)式,這類似于egrep程序的功能,但它是在交叉索引數(shù)據(jù)庫中查找,速度要快得多。
cscope的主要功能是通過同的子命令“find”來實(shí)現(xiàn)的
“cscope find”的用法:
cs find c|d|e|f|g|i|s|t name
0 或 s查找本 C 符號(可以跳過注釋)
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窗口來顯示cscope的結(jié)果,詳情請”:help cscopequickfix“;
如果你想vim同時(shí)搜索tag文件以及cscope數(shù)據(jù)庫,設(shè)置cscopecscopetag選項(xiàng);
cscopecscopetagorder選項(xiàng)決定是先查找tag文件還是先查找cscope數(shù)據(jù)庫。設(shè)置為0則先查找cscope數(shù)據(jù)庫,設(shè)置為1先查找tag文件。我通常設(shè)置為1,因?yàn)樵趖ag文件中查找到的結(jié)果,會把最佳匹配列在第一位。
vim的手冊中給出了使用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中增加一句:
:set cscopequickfix=s-,c-,d-,i-,t-,e- 這個(gè)是設(shè)定是否使用 quickfix 窗口來顯示 cscope 結(jié)果, 用法在后面會說到。
我想查找vim_strsave()到底在那些地方被調(diào)用過了, 用命令:
。篶s find c vim_strsave 按下回車后vim會自動跳轉(zhuǎn)到第一個(gè)符合要求的地方, 并且在命令欄顯示有多少符合要求的結(jié)果, 如圖:
如果自動跳轉(zhuǎn)的位置你不滿意, 想看其他的結(jié)果, 可以用下面的命令打開QuickFix窗口:
。篶w 如圖:
4.7 quickfix窗口
QuickFix窗口的主要作用就是上面看到的那個(gè)功能: 輸出一些供選擇的結(jié)果, 可以被很多命令調(diào)用, 更詳細(xì)的介紹和使用方法請用下面的命令打開QuickFix的手冊來學(xué)習(xí)吧:
:help quickfix
可以用下面的命令來跳轉(zhuǎn):
。篶n // 切換到下一個(gè)結(jié)果
:cp // 切換到上一個(gè)結(jié)果 如果你經(jīng)常使用這兩個(gè)命令, 你還可以給他們設(shè)定快捷鍵, 比如在~/.vimrc中增加:
nmap 《F6》 :cn《cr》
nmap 《F7》 :cp《cr》
5.產(chǎn)生的疑問
5.1 cscope和ctags有啥區(qū)別?
兩者能并存,前者更強(qiáng)大,特別是查找字符串,前者威力更大。ctags是跳轉(zhuǎn)到標(biāo)簽定義的地方,但如果想查找函數(shù)在哪里被調(diào)用,或者標(biāo)簽在哪些地方出現(xiàn)過,就需要使用更為強(qiáng)大的cscope。
Cscope是一個(gè)交互式的屏幕下使用的工具,它被設(shè)計(jì)用來回答以下的問題:
* 什么地方用到了這個(gè)符號?
* 這是在什么地方定義的?
* 這個(gè)變量在哪里被賦值?
* 這個(gè)全局符號的定義在哪里?
* 這個(gè)函數(shù)在源文件中的哪個(gè)地方?
* 哪些函數(shù)調(diào)用了這個(gè)函數(shù)?
* 這個(gè)函數(shù)調(diào)用了哪些函數(shù)?
* 信息 “out of space” 從哪來?
* 這個(gè)源文件在整個(gè)目錄結(jié)構(gòu)中處于什么位置?
* 哪些文件包含這個(gè)頭文件?
上面就是CentOS 6.2配置vim開發(fā)環(huán)境的方法介紹了,從本文的介紹方法中可以看出,vim開發(fā)環(huán)境的配置內(nèi)容較多,搭建的時(shí)候要有耐心,且該方法只適用于CentOS 6.2版本。
發(fā)表評論
共0條
評論就這些咯,讓大家也知道你的獨(dú)特見解
立即評論以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場