集成VIM強大的代碼編輯器(二)

由於這篇文章太長了,所以對於讀者而言不容易查看,對於本人而言編輯起來也是很吃力,所以就分了上下篇去寫,而這篇會更加精彩,如果時間充足的話,也許會寫第三篇,來致敬偉大的VIM,上篇的地址如下:
http://blog.csdn.net/hubbybob1/article/details/48055605
好了步入正題。
五.Cscope插件
如果說ctags的主要功能是建立各大文件之間的聯繫的話,那麼Cscope的就是賦予VIM強大的搜索功能。首先來看如何安裝此插件:首先要通過version命令查看vim支持的插件,在終端直接輸入vim,打開vim編輯器,然後:version就可以看的vim的特性了,如下圖所示:(+:表示支持,- :表示部支持)
這裏寫圖片描述
可見是支持cscope的。

  1. http://sourceforge.net/projects/cscope/files/cscope/ //下載源碼爲cscope-15.8b.tar.gz
  2. 解壓:tar zxvf cscope-15.8b.tar.gz 後會得到進入cscope-15.8b
  3. 執行./configure make make install 到此安裝完畢,如果有問題參考http://blog.csdn.net/andywangguanxi/article/details/8544634當然如果你覺得麻煩的話就直接在終端輸入命令:sudo apt-get install cscope
  4. 將文件http://cscope.sourceforge.net/cscope_maps.vim下載到~/.vim/plugin目錄。到此這個插件就可以使用了

打開vim,然後查看cscope的幫助文件命令:cs help或者cscope help就會得到:

cscope 命令:
add  :添加一個新的數據庫             (用法: add file|dir [pre-path] [fl
ags])
find :查詢一個模式                   (用法: find c|d|e|f|g|i|s|t name)
      3 或 c: Find functions calling this function
      2 或 d: Find functions called by this function
      6 或 e: Find this egrep pattern
      7 或 f: Find this file
      1 或 g: Find this definition
      8 或 i: Find files #including this file
      0 或 s: Find this C symbol
      4 或 t: Find this text string
help :顯示此信息                     (用法: help)
kill :結束一個連接                   (用法: kill #)
reset:重置所有連接                   (用法: reset)
show :顯示連接                       (用法: show)

這個插件使用簡單如此簡單,但是功能卻是相當強大,如下圖所示當輸入
在使用這個插件前必須像ctags一樣建立關聯文件,進入源碼文件的根目錄然後使用命令cscope -Rbq就會生成三個文件:cscope.in.out cscope.out cscope.po.out,其中我們需要將 cscope.out 添加到源碼中去,那麼使用vim隨便打開一個源碼,然後使用命令:

cs add /絕對路徑/cscope.out

這樣才真正的可以使用cscope插件如下圖所示,當輸入命令:

cs f c channel_new     //查找調用過channel_new函數的函數

這裏寫圖片描述
好了盡然降到這兒,就不得不在進化一下了,使用vim ~/.vimrc來加強配置了:

if has("cscope")
set csprg=/usr/bin/cscope " 指定用來執行cscope的命令
set csto=0 " 設置cstag命令查找次序:0先找cscope數據庫再找標籤文件;1先找標籤文件再找cscope數據庫
set cst " 同時搜索cscope數據庫和標籤文件
set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口來顯示cscope查找結果
set nocsverb
if filereadable("cscope.out") " 若當前目錄下存在cscope數據庫,添加該數據庫到vim
cs add cscope.out
elseif $CSCOPE_DB != "" " 否則只要環境變量CSCOPE_DB不爲空,則添加其指定的數據庫到vim
cs add $CSCOPE_DB
endif
set csverb

六.文件管理插件NERD tree ,MiniBufExplorer,Winmanager
(一).NERD tree
還記得很多代碼編輯器中都有這麼一個窗口,那就是目錄結構窗口,,對於代碼的機構會一目瞭然,,因此,這一小結,我們就來研究一下樹形文件管理器和vin的結合使用吧,它就是NERD tree.
先從網站上下載這個插件吧:http://www.vim.org/scripts/script.php?script_id=1658
1.你會得到nerdtree.zip,然後解壓就可以得到四個目錄:syntax,plugin,nerdtree_plugin,doc,這四個目錄內個包含一個文件
2. 我們把syntax,plugin,doc下的文件分別考到~/.vim下的對應的目錄下,把nerdtree_plugin整體拷貝到~/.vim,即可.
3. 爲了讓取得幫助文件需要進入doc目錄,然後執行vim,輸入:helptags就可以看到如下:
這裏寫圖片描述

" Press ? for help  

就是按下’?’建就可以看到說明文檔了,如下:
這裏寫圖片描述
那麼下面就要講本插件的最常用的功能了,當然這些都在help文檔內看到,就是上面的操作了:

ctrl + w + r    //移動當前窗口的佈局位置,改變當前窗口的位置
s               // vsplit 一個新窗口打開選中文件,並跳到該窗口
o               //在已有窗口中打開文件、目錄或書籤,並跳到該窗口
O               //遞歸打開選中,結點下的所有目錄,但不打開文件
x               //合攏選中結點的父目錄
X               //遞歸 合攏選中結點下的所有目錄
e               //在主窗口中打開查看目錄
P               //跳到根結點
p               //跳到父結點
J               //跳到當前目錄下同級的最後一個結點
j               //跳到當前目錄下同級的後一個結點
C               //將選中目錄或選中文件的父目錄設爲根結點,這個很有用
m               //顯示文件系統菜單,主要包括
                //   (!)Execute file//可執行文件
                //   (a)dd a childnode
                //   (m)ove the current node
                //   (d)elete the current node
                //   (c)copy the current node
t               //在新 Tab 中打開選中文件/書籤,並跳到新 Tab
T               //在新 Tab 中打開選中文件/書籤,但不跳到新 Tab   
                //這兩個是指在vim建立標籤,但是切換標籤的時候輸入命令:
                   :tabn下一標籤頁
                   :tabp上衣標籤頁
                //這個功能很好,但是感覺很麻煩,可以直接建立一個終端標籤頁,即快捷鍵:
                   CTRL + SHIFT + T建立和
                   CTRL + PageUp/PageDown 來切換更方便    

(二).MiniBufExplorer
這個插件的作用是提供多文件同時編輯功能,這個功能很重要,就像eclipse的同時打開多個C文件一樣.

  1. 下載插件:http://www.vim.org/scripts/script.php?script_id=159得到minibufexpl .vim,就只有這一個vim文件
  2. 將minibufexpl .vim拷貝到~/.vim/plugin目錄下
  3. 然後配置~/.vimrc,添加以下內容:
    let g:NERDTree_title="[NERDTree]"  
    let g:winManagerWindowLayout="NERDTree|TagList" 

    let g:miniBufExplMapWindowNavVim = 1    
    let g:miniBufExplMapWindowNavArrows = 1   
    let g:miniBufExplMapCTabSwitchBufs = 1 "這個作用是使用快捷鍵 CTRL + TAB 和  CTRL +SHIFT + TAB才能看的出來
    let g:miniBufExplModSelTarget = 1  
    let g:miniBufExplMoreThanOne=0 
    "解決FileExplorer窗口變小問題  
    let g:miniBufExplForceSyntaxEnable = 1  
    let g:miniBufExplorerMoreThanOne=2 

到此其插件的安裝就完成了,那麼來看看他最常用的功能吧:
這裏寫圖片描述
由上圖可以看出,在同一個vim下可以同時打開多個文件,這個插件就是這個強大的功能.

//在使用快捷鍵 CTRL + 方向鍵,可以切換MiniBufExplorer窗口,下面是快捷鍵
Tab          //向前(右)循環切換到每個buffer名(文件名)上 或者 CTRL + TAB
SHIFT + Tab  //向後(左)循環切換到每個buffer名上
//這兩個可以與CTRL + Tab 和CTRL +  SHIFT + Tab做對比
Enter        //在打開光標所在的文件buffer
d            //刪除光標所在的文件buffer
//當然你也可以使用方向鍵,來移動光標切換文件顯示,但是效率不高
//也可以使用命令行來切換
:bn       //打開當前buffer的下一個buffer
:bp       //打開當前buffer的前一個buffer
:b"num"   //打開指定的buffer,"num"指的是buffer開始的那個數字

(三)Winmanager
下面來說一下最爲關鍵的一個插件Winmanager,Winmanager將其他插件與vim整合起來,可見這纔是一個關鍵的插件:
\
1. 下載插件:http://www.vim.org/scripts/script.php?script_id=95得到winmanager.zip,
2. 解壓得到兩個目錄:plugin和doc,同理將兩個目錄下的文件考到~/.vim下的對應目錄下
3. 在~/.vimrc中添加一下內容,可以使用快捷鍵 w+m直接打開這些插件窗口很方便

  let g:NERDTree_title="[NERDTree]"  
  let g:winManagerWindowLayout="NERDTree|TagList"  
  function! NERDTree_Start()  
    exec 'NERDTree'  
  endfunction    
  function! NERDTree_IsValid()  
    return 1  
  endfunction   
nmap wm :WMToggle<CR>   

4.修改~/.vim/plugin目錄下的winmanager.vim文件,找到這段代碼,在else下的call s: 下面添加一行exe ‘q’

function! <SID>ToggleWindowsManager()  
   if IsWinManagerVisible()  
      call s:CloseWindowsManager()  
   else  
      call s:StartWindowsManager()  
      exe 'q'  
   end  
endfunction  

到此基本的vim窗口就配置完畢了!
在此在告訴大家的一個小技巧:
當你在代碼之中按下 : CTRL + : 你會看到下圖所示的內容
這裏寫圖片描述
你就會看到帶有序號的東西出來,仔細看的的話,就是自己曾經父之過的東西,那麼這就方便了,你只要按下數字鍵(TAB + SPACE也可以)就可以快捷的把內容複製到光標處,按ESC建退出這一選擇(不要告訴別人哦).
當然還有其他的插件,很利於快捷的編寫代碼,大家可以自己去研究,時間允許的話,後續會繼續告訴大家我的經驗.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章