Ubuntu安裝vim插件的步驟
Source Insight是一款編輯器,擁有強(qiáng)大的功能,但適用于Windows系統(tǒng),那么Ubuntu系統(tǒng)該使用哪種編輯器呢?Vim就是Linux下很好的編輯器,下面學(xué)習(xí)啦小編就給大家介紹下如何在Ubuntu上安裝vim插件。
source insight是windows下的優(yōu)秀編輯器,適合閱讀管理代碼,主要有以下功能:
查找函數(shù),變量或者宏的定義。
查找函數(shù),變量或者宏的引用位置。
查找函數(shù)被調(diào)用的位置
查找某個符號在工程內(nèi)的所有匹配
由于unix哲學(xué)主張一個工具只做好一件事情,所以linux下并沒有這種集多樣功能于一體的軟件。vim是非常優(yōu)秀的編輯器,本文介紹如何通過安裝插件將vim武裝成和source insight一樣甚至更強(qiáng)大的工具。
我的環(huán)境是ubuntu12.04 LTS+vim version 7.3
1. ctags
ctags插件用來查找函數(shù),變量或者宏的定義,ubuntu下可以非常方便的安裝,
sudo apt-get install exuberant-ctag
在源文件目錄下執(zhí)行命令
ctags -R
會生成一個tags文件,里面包含了所有源文件的符號信息。在vim中,快捷鍵ctrl+]會跳到當(dāng)前函數(shù)的定義處。為了方便生產(chǎn)tags,設(shè)置快捷鍵F5生成tag,將下面命令加入到~/.vimrc
nnoremap 《F5》 :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q ?!禖R》
nnoremap 表示vim普通模式的鍵映射,
--c++-kinds=+p : 為標(biāo)簽添加函數(shù)原型(prototype)信息
--fields=+iaS : 為標(biāo)簽添加繼承信息(inheritance),訪問控制(access)信息,函數(shù)特征(function Signature,如參數(shù)表或原型等)
--extra=+q : 為類成員標(biāo)簽添加類標(biāo)識
如果項目有多層文件結(jié)構(gòu),一般只在根目錄生成一個tag文件,那么子目錄訪問不到tag文件,在子目錄中直接打開源文件將找不到函數(shù)的tag,一個方便的做法是在.vimrc中將tag加到tags的查找路徑中,每個項目一項。
“project1”
set tags+=/project1/tags
ctags的快捷鍵:
ctrl+] 切換到定義處
g+ctrl+] 如果多處匹配,列出匹配tag列表供選擇
count+ctrl+t 后退count個tag
:count+tag 前進(jìn)count個tag
?。簍s 列出匹配tag列表,存在多個匹配時
?。簍n 跳到下一處匹配tag
:tp 跳到上一處匹配tag
?。簍f 跳到地一個匹配tag
?。簍l 跳到最后一個匹配tag
?。簊et tags? 查看tags文件路徑
2.cscope
Ctags只能找到符號定義的地方,如果要像sourceinsight一樣,具備查找類似函數(shù)調(diào)用查找,符號引用查找等高級功能,就要借助于cscope了。Cscope是類似于ctags的工具,不過它的功能比ctags強(qiáng)大多了。
在當(dāng)前源文件目錄下執(zhí)行
cscope–Rbq
其中
-R:遞歸處理子層目錄
-b:生成數(shù)據(jù)庫后自動退出
-q:生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
vim打開源文件后,增加cscope數(shù)據(jù)庫到當(dāng)前環(huán)境中
?。篶sadd cscope.out
可以發(fā)現(xiàn)執(zhí)行后沒有反應(yīng),那是因為沒有打開cscopeverbose選項,打開后增加數(shù)據(jù)庫后會顯示成功還是失敗信息,默認(rèn)是關(guān)閉的,我們把它打開。
:setcsverb
想要查看當(dāng)前已經(jīng)加載了哪些cscope數(shù)據(jù)庫
?。篶sshow
想要刪除某個數(shù)據(jù)庫
?。篶skill #
安裝ctags和cscope后,就有兩種數(shù)據(jù)庫了,默認(rèn)會同時查看cscope和ctag數(shù)據(jù)庫,這個行為由cst控制,默認(rèn)是打開的。
?。簊etcst
Csto控制查看數(shù)據(jù)庫的順序,等于0時優(yōu)先查看cscope數(shù)據(jù)庫,再查看ctags數(shù)據(jù)庫
?。簊etcsto=0
為了方便,我們可以在.vimrc中自動增加當(dāng)前路徑下的cscope數(shù)據(jù)庫
if has(“cscope”) set csprg=/usr/local/bin/cscope set csto=0 set cst set csverb if filereadable(“cscope.out”) cs add cscope.out elseif $CSCOPE_DB != “” cs add $CSCOPE_DB endif set csverbendif
配置好以后就可以使用cscope的強(qiáng)大的查找功能了,cscope查找命令
:cs find type name
Type包括
0或者s —— 查找name在這個工程中出現(xiàn)的位置
1或者g —— 查找name的定義
2或者d —— 查找name調(diào)用的函數(shù)
3或者c —— 查找調(diào)用name的函數(shù)
4或者t —— 查找name字符串
6或者e —— 查找egrep匹配模式
7或者f —— 查找文件
8或者i —— 查找#include 文件名為name的文件
我在平常使用的最多是查找定義和調(diào)用當(dāng)前函數(shù)的函數(shù),所以在.vimrc中配置成F3和F4快捷鍵,自動查找光標(biāo)下符號。
nmap 《F3》 :cs find 3 《C-R》=expand(“《cword》”)《CR》《CR》
nmap 《F4》 :cs find 0 《C-R》=expand(“《cword》”)《CR》《CR》
3.taglist
source insight左邊是當(dāng)前文件的所有符號窗口,包括include的頭文件,函數(shù)和變量。這個功能可以由taglist實現(xiàn)。Ubuntu下安裝非常方便,
vim-addons install taglist
vim-addons是vim的插件管理程序,如果沒有安裝的話可以執(zhí)行以下命令安裝
sudo apt-get install vim-addon-manager
sudo apt-get install vim-scripts
vim-addons status可以看到當(dāng)前插件的安裝狀態(tài)
vim-addons install 安裝插件
vim-addons remove 刪除插件
安裝好taglist后,可以自己打開和關(guān)閉taglist窗口,
:TlistToggle
可以設(shè)置成F8快捷鍵,不過等后面安裝了winmanager后也不需要手動控制了。
nnoremap 《silent》 《F8》 :TlistToggle《CR》 F8
幾個比較實用的選項需要打開:
let Tlist_Auto_Open=1 “打開文件時自動打開taglist
let Tlist_Exit_OnlyWindow=1 “關(guān)閉文件時自動關(guān)閉taglist
let Tlist_File_Fold_Auto_Close=1 “taglist window中折疊非當(dāng)前文件
let Tlist_Process_File_Always=1 “taglist始終解析文件
需要查看更多選項請help
:help taglist.txt
Ctrl-w-w 跳到taglist窗口,Taglist窗口中也有快捷鍵,
《enter》 跳到光標(biāo)下的tag定義的位置
u 更新taglist
zo 打開折疊
zc 關(guān)閉折疊
《tab》或]] 跳到下一個文件
《BS》或[[ 跳到上一個文件
Ubuntu安裝vim插件的步驟
上一篇:Ubuntu磁盤整理命令匯總
下一篇:Ubuntu如何安裝配置JRE