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