VIM安装插件,使其成了一个IDE 工具


1.语法高亮
在 .vimrc文件中添加
syntax enable
syntax on

colorscheme desert

2.Ctags的使用
果你在读程序时看了一个函数调用, 或者一个变量, 或者一个宏等等, 你想知道它们的定义在哪儿,当光标在某个函数或变量上时,  按下"Ctrl+]", 光标会自动跳转到其定义处。

用下面的命令解压安装:
$ tar -xzvf ctags-5.6.tar.gz
$ cd ctags-5.6
$ make
# make install   // 需要root权限

然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令: ctags -R
我现在以 vim71 的源码目录做演示
$ cd /home/wooin/vim71
$ ctags -R
此时在/home/wooin/vim71目录下会生成一个 tags 文件, 现在用vim打开 /home/wooin/vim71/src/main.c
$ vim /home/wooin/vim71/src/main.c
再在vim中运行命令:
:set tags=/home/wooin/vim71/tags

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

3. 插件: TagList
下载地址 http://www.vim.org/scripts/script.php?script_id=273
安装 在 ~/.vim 目录下解压taglist_xx.zip

在Windows平台上用过Source Insight看程序的人肯定很熟悉代码窗口左边那个Symbol窗口, 那里面列出了当前文件中的所有宏, 全局变量, 函数名等, 在查看代码时用这个窗口总揽全局,

首先请先在你的~/.vimrc文件中添加下面两句:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1

此时用vim打开一个c源文件试试:
$ vim ~/vim/src/main.c
进入vim后用下面的命令打开taglist窗口, 如图5:
:Tlist

4.文件浏览器和窗口管理器 -- 插件: WinManager
下载地址 http://www.vim.org/scripts/script.php?script_id=95
版本 2.x
安装 在 ~/.vim 目录下解压winmanager.zip
手册 :help winmanager 

现在在你的~/.vimrc中增加下面两句
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>

然后重启vim, 打开~/vim71/src/main.c, 在normal状态下输入"wm", 

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

安装Cscope:
如果你的系统中有cscope命令, 则可以跳过这一小段, 如果没有, 就先跟着我一起安装一个吧.
在Cscope的主页: http://cscope.sourceforge.net 下载一个源码包, 解压后编译安装:
# ./configure
# make
# make install       // 需要root权限

先在~/vimrc中增加一句:
:set cscopequickfix=s-,c-,d-,i-,t-,e-
这个是设定是否使用 quickfix 窗口来显示 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

可以用下面的命令打开QuickFix窗口:
:cw + ENTER
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 查找包含本文件的文件

如果每次查找都要输入一长串命令的话还真是件讨人厌的事情, Cscope的帮助手册中推荐了一些快捷键的用法, 下面是其中一组, 也是我用的, 将下面的内容添加到~/.vimrc中, 并重启vim:
let mapleader=","
nmap <Leader>s :cs find s <C-R>=expand("<cword>")<CR><CR>:c   w<cr>
nmap < Leader >g :cs find g <C-R>=expand("<cword>")<CR><CR>:cw<cr>
nmap < Leader >c :cs find c <C-R>=expand("<cword>")<CR><CR>:cw<cr>
nmap < Leader >t :cs find t <C-R>=expand("<cword>")<CR><CR>:cw<cr>
nmap < Leader >e :cs find e <C-R>=expand("<cword>")<CR><CR>:cw<cr>
nmap < Leader >f :cs find f <C-R>=expand("<cfile>")<CR><CR>:cw<cr>
nmap < Leader >i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:cw<cr>
nmap < Leader >d :cs find d <C-R>=expand("<cword>")<CR><CR>:cw<cr>
当光标停在某个你要查找的词上时, 按下<C-_>g, 就是查找该对象的定义, 其他的同理.
按这种组合键有一点技巧,按了<C-_>后要马上按下一个键,否则屏幕一闪就回到nomal状态了
<   Leader   > g的按法是先按",+g"

6.快速浏览和操作Buffer -- 插件: MiniBufExplorer 
下载地址 http://www.vim.org/scripts/script.php?script_id=159
版本 6.3.2
安装 将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可
手册 在minibufexpl.vim 文件的头部

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

使用方法:
重新启动vim, 当你只编辑一个buffer的时候
MiniBufExplorer派不上用场, 当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了, 见下图:

(--- 图13 ---)
上面那个狭长的窗口就是MiniBufExplorer窗口, 其中列出了当前所有已经打开的buffer, 当你把光标置于这个窗口时, 有下面几个快捷键可以用:
<Tab> 向前循环切换到每个buffer名上
<S-Tab> 向后循环切换到每个buffer名上
<Enter> 在打开光标所在的buffer
d 删除光标所在的buffer

以下的两个功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1

<C-Tab> 向前循环切换到每个buffer上,并在但前窗口打开
<C-S-Tab> 向后循环切换到每个buffer上,并在但前窗口打开

如果在~/.vimrc中设置了下面这句:
let g:miniBufExplMapWindowNavVim = 1
则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:
C-w,h j k l    向"左,下,上,右"切换窗口.
在~/.vimrc中设置:
let g:miniBufExplMapWindowNavArrows = 1
是用<C-箭头键>切换到上下左右窗口中去

7. c/h文件间相互切换 -- 插件: A
下载地址 http://www.vim.org/scripts/script.php?script_id=31
版本  
安装 将a.vim 放到 ~/.vim/plugin 文件夹中
手册

安装好a.vim后有下面的几个命令可以用了:
:A 在新Buffer中切换到c/h文件
:AS 横向分割窗口并打开c/h文件
:AV 纵向分割窗口并打开c/h文件
:AT 新建一个标签页并打开c/h文件
其他还有一些命令, 你可以在它的网页上看看, 我都没用过, 其实也都是大同小异, 找到自己最顺手的就行了.

我在~/.vimrc中增加了一句:
nnoremap <silent> <F12> :A<CR>
意思是按F12时在一个新的buffer中打开c/h文件, 这样在写程序的时候就可以不假思索地在c/h文件间进行切换, 减少了按键的次数, 思路也就更流畅了, 阿弥陀佛....

8.Grep插件
下载地址 http://www.vim.org/scripts/script.php?script_id=311
版本 1.8
安装 把grep.vim 文件丢到 ~/.vim/plugin 文件夹就好了
手册 在grep.vim 文件头部

vim有自己的查找功能, 但是跟shell中的grep比起来还是有些差距的, 有时Coding正火急火燎的时候, 真想按下F3, 对光标所在的词来个全工程范围的grep, 不用敲那些繁琐的命令, 现在福音来了, 跟我同样懒的人不在少数, 在grep.vim脚本的前部可以找到一些说明文档:
:Grep 按照指定的规则在指定的文件中查找
:Rgrep 同上, 但是是递归的grep
:GrepBuffer 在所有打开的缓冲区中查找
:Bgrep 同上
:GrepArgs 在vim的argument filenames (:args)中查找
:Fgrep 运行fgrep
:Rfgrep 运行递归的fgrep
:Egrep 运行egrep
:Regrep 运行递归的egrep
:Agrep 运行agrep
:Ragrep 运行递归的agrep

但是我从来都不用敲上面那些命令的^_^, 因为我在~/.vimrc中增加了下面这句:
nnoremap <silent> <F3> :Grep<CR>
比如你想在/home/wooin/vim71/src/main.c中查找"FEAT_QUICKFIX", 则将光标移到"FEAT_QUICKFIX"上, 然后按下F3键, 

在最下面的命令行会显示:
Search for pattern: FEAT_QUICKFIX
此时你还可以编辑该行, grep支持正则表达式, 你想全词匹配的话可以改成:
Search for pattern: /<FEAT_QUICKFIX/>
然后按下回车:
在最下面的命令行会显示:
Search in files: *
是问你搜索范围, 默认是该目录下的所有文件, 此时你还可以编辑该行, 比如你只想搜索源码文件:
Search in files: *.c *.h
然后在按下回车, 会在弹出的QuickFix窗口中列出所有符合条件的搜索结果, 你可以在其中查找你想要的结果

9.自动补全


猜你喜欢

转载自blog.csdn.net/dongshengliao/article/details/40828989