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

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Ubuntu安裝vim插件

Ubuntu安裝vim插件的步驟

時(shí)間:2015-01-12 11:28:00 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150112/34535.html 手機(jī)查看 評論

  Source Insight是一款編輯器,擁有強(qiáng)大的功能,但適用于Windows系統(tǒng),那么Ubuntu系統(tǒng)該使用哪種編輯器呢?Vim就是Linux下很好的編輯器,下面小編就給大家介紹下如何在Ubuntu上安裝vim插件。

 Ubuntu安裝vim插件的步驟

  source insight是windows下的優(yōu)秀編輯器,適合閱讀管理代碼,主要有以下功能:

  查找函數(shù),變量或者宏的定義。

  查找函數(shù),變量或者宏的引用位置。

  查找函數(shù)被調(diào)用的位置

  查找某個(gè)符號在工程內(nèi)的所有匹配

  由于unix哲學(xué)主張一個(gè)工具只做好一件事情,所以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

  會生成一個(gè)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)識

  如果項(xiàng)目有多層文件結(jié)構(gòu),一般只在根目錄生成一個(gè)tag文件,那么子目錄訪問不到tag文件,在子目錄中直接打開源文件將找不到函數(shù)的tag,一個(gè)方便的做法是在.vimrc中將tag加到tags的查找路徑中,每個(gè)項(xiàng)目一項(xiàng)。

  “project1”

  set tags+=/project1/tags

  ctags的快捷鍵:

  ctrl+] 切換到定義處

  g+ctrl+] 如果多處匹配,列出匹配tag列表供選擇

  count+ctrl+t 后退count個(gè)tag

 。篶ount+tag 前進(jìn)count個(gè)tag

 。簍s 列出匹配tag列表,存在多個(gè)匹配時(shí)

 。簍n 跳到下一處匹配tag

 。簍p 跳到上一處匹配tag

  :tf 跳到地一個(gè)匹配tag

 。簍l 跳到最后一個(gè)匹配tag

  :set 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),那是因?yàn)闆]有打開cscopeverbose選項(xiàng),打開后增加數(shù)據(jù)庫后會顯示成功還是失敗信息,默認(rèn)是關(guān)閉的,我們把它打開。

 。簊etcsverb

  想要查看當(dāng)前已經(jīng)加載了哪些cscope數(shù)據(jù)庫

 。篶sshow

  想要刪除某個(gè)數(shù)據(jù)庫

  :cskill #

  安裝ctags和cscope后,就有兩種數(shù)據(jù)庫了,默認(rèn)會同時(shí)查看cscope和ctag數(shù)據(jù)庫,這個(gè)行為由cst控制,默認(rèn)是打開的。

  :setcst

  Csto控制查看數(shù)據(jù)庫的順序,等于0時(shí)優(yōu)先查看cscope數(shù)據(jù)庫,再查看ctags數(shù)據(jù)庫

  :setcsto=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查找命令

 。篶s find type name

  Type包括

  0或者s —— 查找name在這個(gè)工程中出現(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ù)和變量。這個(gè)功能可以由taglist實(shí)現(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窗口,

 。篢listToggle

  可以設(shè)置成F8快捷鍵,不過等后面安裝了winmanager后也不需要手動控制了。

  nnoremap 《silent》 《F8》 :TlistToggle《CR》 F8

  幾個(gè)比較實(shí)用的選項(xiàng)需要打開:

  let Tlist_Auto_Open=1 “打開文件時(shí)自動打開taglist

  let Tlist_Exit_OnlyWindow=1 “關(guān)閉文件時(shí)自動關(guān)閉taglist

  let Tlist_File_Fold_Auto_Close=1 “taglist window中折疊非當(dāng)前文件

  let Tlist_Process_File_Always=1 “taglist始終解析文件

  需要查看更多選項(xiàng)請help

 。篽elp taglist.txt

  Ctrl-w-w 跳到taglist窗口,Taglist窗口中也有快捷鍵,

  《enter》 跳到光標(biāo)下的tag定義的位置

  u 更新taglist

  zo 打開折疊

  zc 關(guān)閉折疊

  《tab》或]] 跳到下一個(gè)文件

  《BS》或[[ 跳到上一個(gè)文件

  4.NERDTree

  Source insight右邊是文件列表窗口,顯示了工程的所有文件名。文件管理插件NERDTree具有類似的功能,該插件可以顯示當(dāng)前目錄下所有文件和目錄,并方便地瀏覽和操作文件。

  Vim addon manager沒有NERDTree插件,需要自己下載NERDTree,下載后將plugin/NERD_tree.vim 和doc/NERD_tree.txt分別復(fù)制到.vim的相應(yīng)目錄下

  為了讓winmanager順利打開NERDTree窗口,在.vimrc中增加下面代碼,

  let g:NERDTree_title=‘[NERD Tree]’function! NERDTree_Start() exec ‘NERDTree’endfunctionfunction! NERDTree_IsValid() return 1endfunction

  5.winmanager

  為了像source insight一樣同時(shí)顯示多個(gè)窗口,需要winmanager插件。

  vim-addons install winmanager

  同時(shí)在winmanager中顯示NERDTree和taglist窗口,默認(rèn)在左邊,

  let g:winManagerWindowLayout=‘NERDTree|TagList’

  設(shè)置快捷鍵wm打開winmanager,

  nmap wm :WMToggle《cr》 wm命令打開

  設(shè)置窗口轉(zhuǎn)換快捷鍵,不過在用了MiniBufExplorer后有更方便的選擇,

  map 《c-w》《c-b》 :BottomExplorerWindow《cr》 跳到下面窗口

  map 《c-w》《c-f》 :FirstExplorerWindow《cr》 跳到上面窗口

  最好打開vim時(shí)會自動打開winmanager窗口,

  let g:AutoOpenWinManager = 1

  同時(shí)修改winmanager.vim

  “set auto open Winmanagerif g:AutoOpenWinManager autocmd VimEnter * nested call s:StartWindowsManager()|3wincmd w|q endif

  其中3表示打開后光標(biāo)在第3個(gè)窗口,即源文件窗口。1,2分別表示NERDTree和taglist窗口。

  因?yàn)閣inmanager總會打開一個(gè)沒有用的空窗口,不知道為什么,需要最后加q關(guān)閉它。如果是用WMToggle打開winmanager的話,要關(guān)閉這個(gè)空窗口就需要在winmanager.vim的ToggleWindowsManager函數(shù)中增加q。

  function! 《SID》ToggleWindowsManager() if IsWinManagerVisible() call s:CloseWindowsManager() else call s:StartWindowsManager() ”close empty window

  exe ‘q’ end

  endfunction

  更多請查看

  :help winmanager

  6.MiniBufExplorer

  寫程序的時(shí)候肯定會多個(gè)源文件同時(shí)編輯,像source insight就有個(gè)window list,保存了最近打開過的所有源文件。Vim通過buffer來達(dá)到類似的作用,buffer的命令操作包括

  :ls 顯示當(dāng)前打開的所有文件

 。篵n 跳到下一個(gè)文件

  :bp 跳到上一個(gè)文件

 。篵d 刪除一個(gè)buffer

  MiniBufExplorer插件提供了更直觀的方式,將buffer顯示在最上端的窗口內(nèi),窗口操作包括

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

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

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

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

  為了只在在源碼窗口打開選中的buffer,需要設(shè)置miniBufExplModSelTarget,默認(rèn)是關(guān)閉的,

  let g:miniBufExplModSelTarget = 1

  不過MiniBufExplorer還有個(gè)更重要的功能是可以實(shí)現(xiàn)用CTRL鍵加h|j|k|l方便地切換窗口,

  let g:miniBufExplMapWindowNavVim = 1 用《CTRL-h|j|k|l》切換到上下左右窗口

  7.OmniCppComplete

  大部分IDE都支持自動補(bǔ)全功能,vim作為linux下優(yōu)秀的編輯器當(dāng)然不缺少,不過vim自帶的補(bǔ)全功能,ctrl+n,ctrl+p可以再當(dāng)前源文件中實(shí)現(xiàn)簡單的補(bǔ)全功能,但這是遠(yuǎn)遠(yuǎn)不夠的。OmniCppComplete利用了Ctags生成的tag數(shù)據(jù)庫,實(shí)現(xiàn)了文件間名字補(bǔ)全,包括

  命名空間(namespace),類(class),結(jié)構(gòu)(struct)和聯(lián)合(union)補(bǔ)全

  函數(shù)屬性成員和返回值類型補(bǔ)全

  “this”指針成員補(bǔ)全

  C/C++類型轉(zhuǎn)換(cast)對象補(bǔ)全

  類型定義(typedef)和匿名類型(anonymous types)補(bǔ)全

  安裝好后輸入時(shí)鍵入ctrl+x ctrl+o就會補(bǔ)全當(dāng)前名字,使用過IDE的同學(xué)都知道補(bǔ)全只要一個(gè)tab鍵就行了,按這么多鍵太麻煩了。這就需要supertab插件的幫助了,

  Vim-addons install supertab

  安裝好后,設(shè)置以下選項(xiàng),

  let g:SuperTabRetainCompletionType=2

  letg:SuperTabDefaultCompletionType=“《C-X》《C-O》”

  SuperTabDefaultCompletionType設(shè)置tab鍵對應(yīng)的命令,

  SuperTabRetainCompletionType表示

  0- 不記錄上次的補(bǔ)全方式

  1- 記住上次的補(bǔ)全方式,直到用其他的補(bǔ)全命令改變它

  2- 記住上次的補(bǔ)全方式,直到按ESC退出插入模式為止

  8.surround

  在在編程時(shí)會遇到大量的匹對符號,如“,(,{等等,高效地處理這些符號可以大大地提高編程效率,Surround正是處理這些符號的非常優(yōu)秀等等插件。

  Surround的使用非常簡單明了(*代表當(dāng)前光標(biāo)位置):

  插入符號

  Hellow*orld! ysiw) Hello (world)!

  或者

  Hellow*orld! veS) Hello (world)!

  替換

  “Hello*world!” cs“‘ ’Hello world!‘

  刪除

  ”Hello*world!“ ds” Hello world!

  總結(jié)

  至此,在安裝了以上插件后,vim已經(jīng)具備了強(qiáng)大的編輯功能。當(dāng)然,這里只是列出一些基本插件,還有很多其他有趣又好用的插件,比如注釋用的NERD_commenter.vim,高亮?xí)灥腣isualMark,頭文件切換的a.vim等等,以后有機(jī)會再研究。

  上面就是Ubuntu上安裝vim插件的方法介紹了,安裝插件后的vim將擁有更多的功能,以滿足程序編輯的需要,如果你還沒有安裝這些vim插件,不妨為自己的系統(tǒng)安裝下吧。

標(biāo)簽 Ubuntu vim

發(fā)表評論

0

沒有更多評論了

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

立即評論

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

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

官方交流群 軟件收錄