vim 的高级应用


一、ctags应用

ctags(Generate tag files for source code)是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。Linux下VIM简单易用,大家只要看看VIM自带的vitutor,大约只要20分钟就能掌握VIM的用法。但是对于Linux下的C/C++的程序员,使用VIM+Ctags的组合来写程序也许是最佳的选择。  ctags 最先是用来生成C代码的tags文件,后来扩展成可以生成各类语言的tags, 有些语言也有专有的tags生成工具(比如java的jtags, python的ptags).

1、添加快捷命令

打开主目录下的.bash_profile然后添加下面这两天快捷命令。

>alias tag='cscope -Rbq && ctags--c-kinds=+defglmnstuvx --langmap=c:.c.h.ho.hem.het.hec.hev.him.hit.hic.hiv -R.'

>alias tagclean='rm -f cscope.* tags'

2、使用例子

[18:05 @ comport ]$ ls

comport.c cp_common.h  cp_comport.c  cp_comport.h makefile

[18:05 @ comport ]$ tag

[18:05 @ comport ]$ ls

comport.c cp_common.h  cp_comport.c  cp_comport.h cscope.in.out  cscope.out  cscope.po.out makefile  tags

[18:05 @ comport ]$ vim comport.c

……….[这里不做显示,更详细的应用参考ctag应用]

【1,      光标移动到需要查看的变量或者函数】

【2,      ctrl + ]  进行查找跳转】

【3,      ctrl + t  跳回原位置】

[18:06 @ comport ]$ ls

comport.c cp_common.h  cp_comport.c  cp_comport.h cscope.in.out  cscope.out  cscope.po.out makefile  tags

[18:06 @ comport ]$ tagclean

[18:08 @ comport ]$ ls

comport.c cp_common.h  cp_comport.c  cp_comport.h makefile

                                    

ctag更详细应用http://www.mcuos.com/thread-8477-1-1.html

 

二、cscope应用

cscope 一个 C 语言的浏览工具,通过这个工具可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。目前支持 C C++cscope 自身带一个基于文本的用户界面,不过gvim 提供了cscope接口,因此可以在 gvim 中调用 cscope,方便快捷地浏览源代码
Cscope是一个类似ctags的工具。你可以把它想作是超过频的ctags,因为它功能比ctags强大很多。 Vim里,通过cscope查询结果来跳转就象跳转到其他的标签完全一样;它被保存在标签栈里。这样你就可以象使用tags一样在函数等等之间便捷的跳转。在VIM中使用cscope非常简单,首先调用“cscopeadd”命令添加一个cscope数据库,然后就可以调用“cscopefind”命令进行查找了。VIM支持8cscope的查询功能,如下:例如,我们想在代码中查找调用work()函数的函数,我们可以输入:“:csfindc work”,回车后发现没有找到匹配的功能,可能并没有函数调用work()。我们再输入“:csfind swork”,查找这个符号出现的位置,现在vim列出了这个符号出现的所有位置。我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能。

1、安装cscope

http://sourceforge.net/projects/cscope/files/下载cscope-15.8a.tar.gz

./configure --with-flex (注:如果平台是Linux,最好带上 --with-flex选项)
make (注:我没有遇到错误)
make install (注: 直接安装好了)

2、配置cscope

vim 配置文件 vimrc. 你可以修改/etc/vimrc使用所有用户都使用本配置文件,当然你还可以修改~/.vimrc 下载配置文件:cscope_map.vim 把cscope_map.vim里从 if has("cscope") 到 endif里边的内容复制到/etc/vimrc里边去里边的命令意思请看下边文章:

http://blog.csdn.net/longerzone/article/details/7789581

3、Cscope 使用

3.1、建立cscope使用的索引文件
  在你需要浏览源码的根目录下(如你想用cscope看linux源码)使用下面命令:
  #: cscope-Rbkq<回车>
 R 表示把所有子目录里的文件也建立索引
 b 表示cscope不启动自带的用户界面,而仅仅建立符号数据库
 q 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
 k 在生成索引文件时,不搜索/usr/include目录
3.2、使用cs find 查找[3](也可以简化写成 cs f)后面添加需要得字符串类型:
  c:Findfunctions calling this function//查找调用本函数的函数
  d:Findfunctions called by this function //查找本函数调用的函数
  e:Find thisegrep pattern//查找egrep模式,相当于egrep功能,但查找速度快多了
  f:Find thisfile //查找并打开文件,类似vim的find功能
  g:Find thisdefinition//查找函数、宏、枚举等定义的位置,类似ctags的功能
  i:Find files#including this file //查找包含本文件的文件
  s:Find thisC symbol //查找C语言符号,即查找函数名、宏、枚举值等出现的地方
  t:Findassignments to //查找指定的字符串
  例如:使用cscope查找do_fork函数的定义,在vim命令行下执行 :cs f gdo_fork,上面所有命令也可以配合按键及来实现;
 Ctrl+ \ + s 表示 :cs find s命令
 同样ctrl + \ + g,d,c,t,e,f,i表示 cs find +g,d,c,t,e,f,i命令
 Cscope_map.vim说明:有英文注释的我就不说明了,我就说一下里边的键 map 映射
 如: nmap<C-\>s :cs find s<C-R>=expand("<cword>")<CR><CR>
 nmap 表示在vim的普通模式下,即相对于:编辑模块和可视模式,以下是几种模式
 :map 普通,可视模式及操作符等待模式
 :vmap 可视模式
 : omap 操作符等待模式
 :map! 插入和命令行模式
 :imap 插入模式
 :cmap 命令行模式
 <C-\>表示:Ctrl+\ s表示输入(即按:s) s
 表示输入':'
 “cs finds"表示输入"csfind s"也即是要输入的命令
 <C-R>=expand("cword")总体是为了得到:光标下的变量或函数。cword 表示:cursor word, 类似的还有:cfile表示光标所在处的文件名吧。

至于回车吧,不太清楚

 

 

                                       

cscope应用参考http://blog.csdn.net/longerzone/article/details/7788010

http://kb.microembedded.com/cscope - KnowledgeME Cscope

 


 

三、vim-config应用

1、下载vim-config.tar.bz2

http://amstradstuff.online.fr/GNUstep/vim-config.tar.bz2

直接解压到主目录下面即可[如果有条件的话,直接用郭工的,里面包括c-support]。

2、一些应用介绍

(1)   在编辑C文件的时候

会自动出现一些文件信息格式

[20:57 @ ~ ]$ vim test.c

 test.c                                                                                                                            

/*********************************************************************************

 *      Copyright:  (C) 2012 ieczw<ieczw@qq.com> 

 *                  All rights reserved.

 *

 *       Filename:  test.c

 *    Description:  This file

 *                 

 *        Version:  1.0.0(12/15/2012~)

 *         Author:  ieczw <ieczw@qq.com>

 *      ChangeLog:  1, Release initial version on"12/15/2012 05:47:59 PM"

 *                

 ********************************************************************************/

如果你想要把那些名字修改成你自己的怎么办?

下面就开始来进行修改:

[21:00 @ ~ ]$ find .vim -iname "*" | xargs grepieczw[用法例子看]

.vim/c-support/templates/Templates:|AUTHOR|    = ieczw

.vim/c-support/templates/Templates:|EMAIL|     = ieczw@qq.com

.vim/c-support/templates/c.comments.template: *      Copyright:  (C) |YEAR| ieczw<ieczw@qq.com> 

.vim/c-support/templates/c.comments.template: *      Copyright:  (C) |YEAR| ieczw<ieczw@qq.com>

[21:00 @ ~ ]$ vim .vim/c-support/templates/Templates

[然后按ESC键,执行下面命令]

:g/czw/s//ieczw/g

同样打开.vim/c-support/templates/c.comments.template执行同样的操作。

然后都成你的了。这时候你再用vim新建一个C文件,就可以有你自己的配置了。

 

                              

find&grep应用:find ./ -iname “*.c” | xargs grep “xxx”

四、vim的一些高级应用

 [郭工配置的.vimrc更强大,这里我就说下他的vimrc的一些用法]

这里还以上面的test.c为例,打开test.c

1、一些例子

(1)、快速依次 \  + i  +  m

/********************************************************************************

 *  Description:

 *   Input Args:

 *  Output Args:

 * Return Value:

 ********************************************************************************/

int main (int argc, char **argv)

{

    return 0;

} /* ----- End of main() ----- */

这样很方便可以快速插入函数,也方便我们对函数的注释。

还有更为灵活的用法:

(2)、快速依次\  +  i  +  f

然后命令栏出现:FUNCTION_NAME :

然后在后面输入函数名:test 回车

/**************************************************************************************

 *  Description:

 *   Input Args:

 *  Output Args:

 * Return Value:

 *************************************************************************************/

int test ()

{

    return 0;

} /* ----- End of test() ----- */

2、函数全局查看及跳转

如何在vim下实现函数目录的查看和跳转呢?

除了ctags之外,还有vim自带的一些功能。

按下  F4  功能键左边出现全局目录(图一):

按下  ctrl + w + w 光标由当前位置跳转到另一侧相应的位置。

然后可以上下移动光标还选中你要看的函数或者变量,定义之累的东西,全ENTER键跳转到该函数或变量,定义。

当然这个只能看单个文件,如果想看多个文件,就用ctags;有时候把ctags和这个方法加起来一起用,效果会更好。

图一

 

 

 

3、.vimrc的快捷功能的添加和修改

切换到自己的主目录下,打开.vimrc

就比如刚F4的快捷键:

"My(guowenxue)map setting

map<F12> :q!<CR>

map<F11> :wq<CR>

map<F4> :Tlist<CR>

这里你可以吧F4 换成F5

也可添加:

map<F5> :set nu<CR>

等等。


 

3、Vim的其他一些常用按键

在vim 下

gg 跳转到首行

GG 跳转到末行

yy 复制 [3yy 复制当前行往下的三行包括本行 ]

p  粘贴复制的信息到当前行

0  跳转到行首

Shift +3 选择所有该字符串,并且n向上移动,N向下移动;

复制部分内容:

(1)、按下v ;

(2)、移动光标选中要复制的内容;

(3)、按下y键,复制;

(4)、移动光标到指定位置,按p键,粘贴;

 

 

 

 

 

 

 

 

 

                                

注:由于本人能力有限,就说这一点点功能,希望大家多多指教,帮我完善。

联系方式     QQ623799215

                E-mailieczw@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值