集成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建退出这一选择(不要告诉别人哦).
当然还有其他的插件,很利于快捷的编写代码,大家可以自己去研究,时间允许的话,后续会继续告诉大家我的经验.

猜你喜欢

转载自blog.csdn.net/hubbybob1/article/details/48501035
今日推荐