gvim IDE 环境的使用

本文详细介绍了 Vim 编程环境中的各种实用工具和技术,包括 ctags、Taglist、Winmanager、cscope 等,以及如何在 Vim 中高效地进行代码导航、搜索与管理。

1.ctags的使用

tags指的是函数, 类, 结构体,变量等

cd /home/luzhonghui/vim71

ctags -R  //会在vim71路径下生成一个ctags文件


vim /home/luzhonghui/vim71/src/main.c

在vim中运行命令:set tags=/home/luzhonghui/vim71/tags

该命令将tags文件加入到vim中来


将光标定位到main.c中的任意一个函数,如setmouse( )上,按下ctrl+],此时光标会自动跳到该函数的定义处;


按下ctrl+T,跳回到刚才的函数;

变量, 结构, 宏, 等等, 都可以的;


不过还有一个小瑕疵, 你修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:ctags -R

使tags文件更新一下, 不过让人感到欣慰的是vim不用重新启动, 正在编写的程序也不用退出, 马上就可以又正确使用<C-]>和<C-T>了.


2.Taglist

特点:

在Vim的一个垂直或水平的分割窗口中显示一个文件中定义的tags(函数, 类, 结构,变量, 等);

当你在taglist窗口中选中一个tag名时, 源文件中的光标会自动跳转到该tag的定义处;

在控制台vim和GUI vim中都可以使用;

可以和winmanager插件一起使用. winmanager插件可以让你同时使用文件浏览器,缓冲区浏览器和taglist插件, 就像一个IDE一样;


vim /home/luzhonghui/vim71/src/main.c

进入vim后,用下面的命令打开Taglist窗口:Tlist


TagList最基本也是最常用的操作:

将光标定位到左边Tag List窗口中的的某一个结构体、变量或者函数上,按下Enter,会自动跳转到其定义处;

如果还不想让源码跳转,但是想看看该tag在源码中完整的表达,可以将光标移到你想要看的tag上,然后按下空格键,在下面的命令栏中,会显示该tag在源码中完整的写法, 而不会跳转到源码处;


注:如果在命令行下输入:Tlist,无反应,可能是需要更新tag文件,回到源码顶层,输入:ctags -R,更新下tag文件,再vim打开某个.c文件,输入:Tlist


3.Winmanager(文件浏览器和窗口管理器)

通过WinManager插件来将TagList窗口和netrw窗口整合起来

netrw窗口:当光标停在某个文件或文件夹的时候, 按下回车, 可以打开该文件或文件夹;


进入"~/vim71"文件夹后运行vim, 然后在vim中运行命令:

e ~/vim71


打开~/vim71/src/main.c, 在normal状态下输入"wm"

其中左上边是netrw窗口, 左下边是TagList窗口, 当再次输入"wm"命令时(注意:还是要在normal状态下)这两个窗口又关闭了;


4.cscope的使用

特点:

无须在厚厚的程序清单中翻来翻去就可以认识一个 C 程序的工作原理;

无须熟悉整个程序就可以知道清楚程序 bug 所要修改的代码位置;

在所有相关的源文件中对一个全局变量改名;

在所有相关的位置将一个常数改为一个预处理符号;


它被设计用来回答以下的问题:
* 什么地方用到了这个符号?
* 这是在什么地方定义的?
* 这个变量在哪里被赋值?
* 这个全局符号的定义在哪里?
* 这个函数在源文件中的哪个地方?
* 哪些函数调用了这个函数?
* 这个函数调用了哪些函数?
* 信息 "out of space" 从哪来?
* 这个源文件在整个目录结构中处于什么位置?
* 哪些文件包含这个头文件?


跟Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令:

$ cd /home/wooin/vim71/
$ cscope -Rbq
# 此后会生成三个文件
$ ll cscope.*
-rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out
-rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out
-rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out
# 打开文件, 开始Coding
$ cd src
$ vi main.c
进入vim后第一件事是要把刚才生成的cscope文件导入到vim中来, 用下面的命令:
:cs add /home/wooin/vim71/cscope.out /home/wooin/vim71
上面这条命令很重要, 必须写全, 不能只写前半句:
:cs add /home/wooin/vim71/cscope.out
因为源码是多级目录的, 如果这样写, cscope是无法在子目录中的源码中工作的, 当然, 如果你的源码都在同一级目录中就无所谓了. 如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.


查找函数vim_strsave()的定义, 用命令:

:cs find g vim_strsave

按下回车后会自动跳转到vim_strsave()的定义处. 此时你肯定会说Ctags也可以做到这个呀, 那么下面说的这个Ctags就无法做到了, 我想查找vim_strsave()到底在那些地方被调用过了, 用命令:

:cs find c vim_strsave
按下回车后vim会自动跳转到第一个符合要求的地方, 并且在命令栏显示有多少符合要求的结果

如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口:
:cw


cscope的主要功能是通过同的子命令"find"来实现的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name

0 或 s查找本 C 符号(可以跳过注释)
1 或 g查找本定义
2 或 d查找本函数调用的函数
3 或 c查找调用本函数的函数
4 或 t查找本字符串
6 或 e查找本 egrep 模式
7 或 f查找本文件
8 或 i查找包含本文件的文件

当光标停在某个你要查找的词上时, 按下<C-_>g, 就是查找该对象的定义, 其他的同理.
按这种组合键有一点技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪就回到nomal状态了
<C-_>g的按法是先按"Ctrl+Shift+-", 然后很快再按"g"


5.QuickFix窗口

用下面的命令调出QuickFix窗口:

:cw


在下面的QuickFix窗口中我们可以找到每一个编译错误, 同样你可以用鼠标点击每一条记录, 代码会马上自动跳转到错误处, 你还可以用下面的命令来跳转:

:cn        // 切换到下一个结果
:cp        // 切换到上一个结果
如果你经常使用这两个命令, 你还可以给他们设定快捷键, 比如在~/.vimrc中增加:
nmap <F6> :cn<cr>
nmap <F7> :cp<cr>


6.MiniBufExplorer(快速浏览和操作Buffer)

在编程的时候不可能永远只编辑一个文件, 你肯定会打开很多源文件进行编辑, 如果每个文件都打开一个vim进行编辑的话那操作起来将是多麻烦啊, 所以vim有buffer(缓冲区)的概念,


7.插件A(c/h文件间相互切换)

按F12时在一个新的buffer中打开c/h文件, 这样在写程序的时候就可以不假思索地在c/h文件间进行切换, 减少了按键的次数


8.Grep(在工程中查找 -- 插件)

F3


9.Visual Mark(高亮的书签)

如果是gvim, 直接在代码上按下Ctrl+F2, 如果是vim, 用"mm",会发现光标所在的行变高亮了;


10.自动补全

随便找一个有成员变量的对象, 比如"parmp", 进入Insert模式, 将光标放在"->"后面,
然后按下"Ctrl+X Ctrl+O", 此时会弹出一个下列菜单, 显示所有匹配的标签;


如果你增加了一些成员变量, 全能补全还不能马上将新成员补全, 需要你重新生成一下tags文件, 但是你不用重启vim, 只是重新生成一下tags文件就行了, 这时全能补全已经可以自动补全了, 还真够"全能"吧.


11.

转自:http://blog.youkuaiyun.com/wooin/article/details/1858917

            http://blog.youkuaiyun.com/wooin/article/details/2004470


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值