Ubuntu給我們安裝軟件提供了很大的便利,比如說(shuō),安裝vim,我們可以直接使用"sudo apt-get install vim"即可安裝!
同樣,cscope和ctags也可以使用相同方法安裝,這是多么暢快淋漓啊!謝謝Ubuntu給我們用戶(hù)如此便利!
對于Taglist使用這個(gè)方法安裝不了,我們需要先下載,然后安裝完成:
首先上網(wǎng)下載Taglist插件,下載完成后解壓,再將文件下的taglist.vim使用cp命令拷貝到HOME/.vim/plugin文件夾下(cp -r taglist.vim ~/.vim/plugin)
這樣,vim+Taglist+cscope+ctags四種工具我們是創(chuàng )建好了,但是如何使用呢?
(1). 設置縮進(jìn)
:set smartindent // 設置縮進(jìn)
:set smartindent shiftwidth=4 // C語(yǔ)言自動(dòng)縮進(jìn),縮進(jìn)值為4個(gè)字符寬度
(2). 顯示光標行列信息
:set ruler // 顯示光標信息(右下角)
(3). 查看制表符
:set list // 顯示制表符,以^符號顯示制表符的位置
(4). 查看行數信息
:set number //顯示行號(左邊)
(5). 關(guān)鍵字高亮
:syntax on //關(guān)鍵字高亮
(6). 多文件編輯 ,在編寫(xiě)程序時(shí)有可能需要同時(shí)編輯多個(gè)文件,在這種情況下,需要如下設置
: split two.c // 多文件編輯
當然,如果不嫌麻煩,可以在每次打開(kāi)Vim時(shí) 輸入如上命令,如我經(jīng)常用的是:set number :set ruler :syntax on :set smartindent 命令,如果將平時(shí)在底行模式下輸入的命令直接寫(xiě)入配置文件,則以后使用Vim時(shí)不用再次輸入這些命令。
首先,試著(zhù)在Vi的底行模式下輸入如下命令,如果不支持的話(huà),去下載一個(gè)Vim的全版本,sudo apt-get install vim-full。
以下是修改配置文件的方法:
(1). 找到Vimrc文件。
(2) 查看文件的權限:
zhouyl@ubuntu:~$ cd /etc/vim
zhouyl@ubuntu:/etc/vim$ ls
vimrc vimrc~ vimrc.tiny
zhouyl@ubuntu:/etc/vim$ ls -l vimrc
-rw-r--r-- 1 root root 3449 9月 11 17:30 vimrc
(3) 如果沒(méi)有寫(xiě)權限的話(huà),修改權限,使我們可以修改該配置文件
sudo chmod a+w vimrc
(4)根據個(gè)人需要將上訴命令寫(xiě)入配置文件
比如,我個(gè)人的設置是: syntax on , set ruler ,set number , set smartindent shiftwidth=4
下面貼上我的vimrc文件的配置信息:
因為我的文檔中的原配置文件已經(jīng)有了語(yǔ)法高亮:
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
syntax on
endif
所以我就沒(méi)寫(xiě)了,您如果vimrc文件里面沒(méi)有此項建議自己加上syntax on設置語(yǔ)法高亮
PS:在配置文件中"符號后的內容是注釋?zhuān)以谂渲梦募惺遣恍枰砑臃柕?nbsp;,這里關(guān)于cscope、ctags和Taglist的設置可以先寫(xiě)上,后面將對這三個(gè)插件有介紹。好了,現在去開(kāi)一個(gè)Vim,編輯一個(gè)程序看看,是不是感覺(jué)很不一般呢?
好了,下面順便演示下,智能補全的用法,我分四種情況:1、前面申明過(guò)的變量或者函數名的補全;2、結構體等自建結構的補全;3、STL等標準庫的補全;4、括號、引號等自動(dòng)匹配補全。
對于第一種情況,寫(xiě)程序的過(guò)程中,直接用CTRL+p即可選擇,對于第二種情況,如果想申明了結構體T,想在輸入T.時(shí)彈出成員供選擇,只需在用之前按一下:CTRL+F12,然后效果如圖:

在Vim中加載代碼文件后,可以使用以下命令控制taglist
TlistOpen(直接Tlist也可)打開(kāi)并將輸入焦點(diǎn)至于標簽列表窗口,效果如上圖所示
TlistClose關(guān)閉標簽列表窗口
TlistToggle切換標簽列表窗口狀態(tài)(打開(kāi)←→關(guān)閉),標簽列表窗口是否獲得焦點(diǎn)取決于其他配置
ctl-w+w或ctl-w+ 方向鍵窗口切換(taglist本質(zhì)上是一個(gè)vim分隔窗口,因此可以使用ctl-w系列快捷鍵對窗口進(jìn)行切換操作)在Taglist窗口主要有以下操作
按F1:打開(kāi)幫助回車(chē)鍵:跳到光標所在的標記的定義處(如將光標移到main函數,按回車(chē)鍵)
o:新建一個(gè)窗口,跳到標記定義處
p:預覽標記定義(仍然在taglist窗口)
空格:顯示標記的原型(如函數原型)
u:更新標記列表(比如源文件新增了一個(gè)函數,并在保存后,可在taglist窗口按u)
s:選擇排序字段(暫時(shí)我也不知道什么意思)
d:刪除光標所在的taglist文件(如用vi打開(kāi)了兩個(gè)文件f1.c,f2.c可以刪除f1.c的標記)
x:n放大/縮小taglist窗口
+:展開(kāi)(指標記)
-:折疊
*:全部展開(kāi)
=:全部折疊
[[:將光標移到前一個(gè)文件的起點(diǎn)
]]:將光標移到后一個(gè)文件的起點(diǎn)
q:退出taglist窗口
F1:關(guān)閉幫助
盡管ctags也可以支持其它編輯器,但是它正式支持的只有VIM。并且VIM中已經(jīng)默認安裝了Ctags,它可以幫助程序員很容易地瀏覽源代碼。熟練的使用ctags僅需記住下面七條命令:(很簡(jiǎn)單吧,呵呵)
1.$ctags –R * ($為Linux系統Shell提示符)
2.$ vi –t tag (請把tag替換為您欲查找的變量或函數名)
3.:ts(ts助記字:tagslist, “:”開(kāi)頭的命令為VI中命令行模式命令)
4.:tp(tp助記字:tagspreview)---此命令不常用,可以不用記
5.:tn(tn助記字:tagsnext) ---此命令不常用,可以不用記
6.Ctrl+ ]跳到光標所在函數或者結構體的定義處
7.Ctrl+ T返回查找或跳轉
下面我們逐條的解釋上面的命令:“$ctags –R*”:“-R”表示遞歸創(chuàng )建,也就包括源代碼根目錄(當前目錄)下的所有子目錄?!?span style="font-family:Times New Roman,serif">*”表示所有文件。這條命令會(huì )在當前目錄下產(chǎn)生一個(gè)“tags”文件,當用戶(hù)在當前目錄中運行vi時(shí),會(huì )自動(dòng)載入此tags文件。Tags文件中包括這些對象的列表:用#define定義的宏枚舉型變量的值函數的定義、原型和聲明名字空間(namespace)類(lèi)型定義(typedefs)變量(包括定義和聲明)類(lèi)(class)、結構(struct)、枚舉類(lèi)型(enum)和聯(lián)合(union)類(lèi)、結構和聯(lián)合中成員變量或函數VIM用這個(gè)“tags”文件來(lái)定位上面這些做了標記的對象。剩下的命令就是定位這些對象的方法:“$vi –t tag” :在運行vim的時(shí)候加上“-t”參數,例如:[/usr/src]$vim -tmain這個(gè)命令將打開(kāi)定義“main”(變量或函數或其它)的文件,并把光標定位到這一行。如果這個(gè)變量或函數有多處定義,在VI命令行模式“:ts”命令就能列出一個(gè)列表供用戶(hù)選擇?!埃?span style="font-family:Times New Roman,serif">tp”為上一個(gè)tag標記文件,“:tn”為下一個(gè)tag標記文件。
當然,若當前tags文件中用戶(hù)所查找的變量或函數名只有一個(gè),“:tp,:tn”命令不可用。
(最方便的方法是把光標移到變量名或函數名上,然后按下“Ctrl+]”,這樣就能直接跳到這個(gè)變量或函數定義的源文件中,并把光標定位到這一行。用“Ctrl+T”可以退回原來(lái)的地方。即使用戶(hù)使用了N次“Ctrl+]”查找了N個(gè)變量,按N次“Ctrl+t”也能回到最初打開(kāi)的文件,它會(huì )按原路返回 。 ^_^
注意:運行vim的時(shí)候,必須在“tags”文件所在的目錄下運行。否則,運行vim的時(shí)候還要用“:settags=”命令設定“tags”文件的路徑,這樣vim才能找到“tags”文件。在完成編碼時(shí),可以手工刪掉tags文件(帚把不到,灰塵不會(huì )自己跑掉^_^)。
有時(shí)候系統提示“找不到tag”時(shí)不要一味著(zhù)急,有可能你想要查詢(xún)的函數時(shí)系統函數,如果這樣,那妳幸運勒,可以使用Shift+K來(lái)查詢(xún)。如果不是沒(méi)也可以自己找到tags文件,打開(kāi)查詢(xún),如果還是找不到...哼哼,我也沒(méi)轍了!
在Vim里,通過(guò)cscope查詢(xún)結果來(lái)跳轉就象跳轉到其他的標簽完全一樣;它被保存在標簽棧里。這樣你就可以象使用tags一樣在函數等等之間便捷的跳轉。在VIM中使用cscope非常簡(jiǎn)單:
首先在目錄下使用“cscope -kqb”生成cscope.out文件;
使用時(shí)先在VIM的命令行下調用“cscope add/../../cscope.out”(或cs add /../../cscope.out)命令添加一個(gè)cscope數據庫,然后就可以調“cscope find”(或 cs f )命令進(jìn)行查找了。
VIM支持8種cscope的查詢(xún)功能,如下:
c:Find functions calling this function//查找調用本函數的函數
d:Find functions called by this function //查找本函數調用的函數
e:Find this egrep pattern//查找egrep模式,相當于egrep功能,但查找速度快多了
f:Find this file //查找并打開(kāi)文件,類(lèi)似vim的find功能
g:Find this definition//查找函數、宏、枚舉等定義的位置,類(lèi)似ctags的功能
i:Find files #including this file //查找包含本文件的文件
s:Find this C symbol //查找C語(yǔ)言符號,即查找函數名、宏、枚舉值等出現的地方
t:Find assignments to //查找指定的字符串
例如,我們想在代碼中查找調用work()函數的函數,我們可以輸入:“:cs f c work”,回車(chē)后發(fā)現沒(méi)有找到匹配的功能,可能并沒(méi)有函數調用work()。我們再輸入“:cs f s work”,查找這個(gè)符號出現的位置,現在vim列出了這個(gè)符號出現的所有位置。我們還可以進(jìn)行字符串查找,它會(huì )雙引號或單引號括起來(lái)的內容中查找。還可以輸入一個(gè)正則表達式,這類(lèi)似于egrep程序的功能。
cscope在vim命令行下還可以執行下列操作
help: Show this message(Usage: help)
kill: Kill a connection(Usage: kill #)
reset:Reinit all connections(Usage: reset)
show: Show connections (Usage: show)
更詳細的Cscope用法見(jiàn):http://blog.csdn.net/longerzone/article/details/7788010
聯(lián)系客服