您的位置:首页 > Web前端

vim+ ctags + taglist + cscope +bufexploer + lookupfile总结

2013-09-02 17:29 323 查看
http://my.oschina.net/hevakelcj/blog/138950

最近VIM用得比较多,所以在学了不少。在这里对收获到的东西做一个总结。

1.编程四要素vim,ctags,cscope,taglist

vim配合这3件东西之后,极为强大。与SourceInsight有一拼。

1.1ctags

ctags叫作“标签”,它记录源码中所有标识符定义所在的文件与行号。

(1)安装

先在命令终端运行一下:

1
$ctags--version
看一下当前系统有有没有安装ctags,如果有就跳过本节。

我是在http://ctags.sourceforge.net/上下载的最近的源码,解压,配置,编译,安装。

1
$
tar
zxvfctags-5.8.
tar
.gz
2
$
cd
ctags-5.8
3
$./configure&&
make
4
...
5
$
sudo
make
install
然后再检查一下是否成功安装

1
$ctags--version
通常是没问题的。

(2)使用

在咱们的源码目录下执行简单的

1
$ctags-R.
ctags就会遍历当前目录下的所有.c,.h,.cpp文件,提取所有的标识符并记录到tags文件中。

进入vim可又使用标签参数,使vim打开时跳到标签所在位置。如果我们要找WinMain,如下:

1
$
vi
-tWinMain
进行vim之后,常用的几个命令:

:tag{ident}"跳转到ident标签位置上
:tags"显示标签栈
:ts"显示找到的所有标签
:tp"显示上一个标签
:tn"显示下一个标签

快捷键:

Ctrl+t"返回原来的文件
Ctrl+]"跳至下一个标签

1.2cscope

cscope比ctags更强大,它不仅记录标识符定义所在的位置,还记录了标识符(函数)之间的调用关系与文件的包含关系,功能更多。只不过没ctags使用简单。

(1)安装

同样先检查一下cscope有没有安装。

如果没有安装就从网上下载源码进行安装。下载地址:http://cscope.sourceforge.net/

同样步骤:解压,配置,编译,安装。与ctags一样。

(2)使用

与ctags类似,首先得生成一个cscope.out文件。这个文件与tags文件功能类似,但比较复杂。

1
$
find
.-name
"*.h"
-o-name
"*.c"
-o-name
"*.cpp"

>cscope.files
2
$cscope-bkq-icscope.files
3
$
rm
cscope.files
cscope就会生成一个cscope.out文件。

然后在当前的目录下打开vim。在vim在执行命令将cscope.out加进来:

1
:csaddcscope.out
好了,现在cscope就可又用了。

常用的搜索命令格式:

1
:cs
find
{querytype}{ident}
2
3
:csf{querytype}{ident}
其中{querytype}表示:

numquerytypefunctiondescript
0sC符号出现过的地方
1g定义的地方
2d被这个函数调用的函数列表
3c调用这个函数的函数列表
4t搜字串
6eegrep匹配
7f搜索文件
8i包含这个文件的文件列表
通常我们会在~/.vimrc文件中进行一下按键映射,使操作便简便:

1
nmap<C-@>s:cs
find
s<C-R>=
expand
(
"<cword>"
)<CR><CR>
2
3
nmap<C-@>s:cs
find
s<C-R><C-W><CR>
其实的依此类推:

01
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
"
02
"cscopesetting
03
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
""
"
04
if
has(
"cscope"
)
05
set
csprg=/usr/bin/cscope
06
set
csto=1
07
set
cst
08
set
nocsverb
09
"addanydatabase
in
currentdirectory
10
if
filereadable(
"cscope.out"
)
11
csaddcscope.out
12
endif
13
set
csverb
14
endif
15
16
nmap<C-@>s:cs
find
s<C-R>=
expand
(
"<cword>"
)<CR><CR>
17
nmap<C-@>g:cs
find
g<C-R>=
expand
(
"<cword>"
)<CR><CR>
18
nmap<C-@>c:cs
find
c<C-R>=
expand
(
"<cword>"
)<CR><CR>
19
nmap<C-@>t:cs
find
t<C-R>=
expand
(
"<cword>"
)<CR><CR>
20
nmap<C-@>e:cs
find
e<C-R>=
expand
(
"<cword>"
)<CR><CR>
21
nmap<C-@>f:cs
find
f<C-R>=
expand
(
"<cfile>"
)<CR><CR>
22
nmap<C-@>i:cs
find
i^<C-R>=
expand
(
"<cfile>"
)<CR>$<CR>
23
nmap<C-@>d:cs
find
d<C-R>=
expand
(
"<cword>"
)<CR><CR>
其中<C-@>s表示[Ctrl+空格]后再按s键。

(3)遇到的问题

我的安装使用没有上面说的那么顺。使用的时候,我执行

:csaddcscope.out

显示:

E319:Sorry,thecommandisnotavailableinthisversion.

最后出的原因是编译的时候没有加入cscope模块。

执行vim命令查看:

1
$vim--version|
grep
cscope
2
...-cscope...
cscope前是减号,说明当前vim里没有加入这个模块。

找到vim的源码包,进入源码路译。

1
$./configure--help|
grep
cscope
2
--
enable
-cscopeIncludecscopeinterface
说明如果要在vim中使用cscope,就得在配置的时候加入--enable-cscope参数。如下:

1
$./configure--
enable
-cscope&&
make
编译完了之后,先别急着安装,检查一下新编译的vim可执行文件是否具有cscope功能。

1
$.src/vim--version|
grep
cscope
2
...+cscope...
如果看到cscope前面是个加号,就表示有cscope功能。

然后才是安装:

1
$
sudo
make
install
安装完了之后,还要检查一下vi有没有更新。经常有网友问为什么加了--enable-cscope编译安装还是不行呢?原因是,你安装的是vim,而vi在某些系统里是另一个独立的程序,vi不会自动更新。

将原来的vi链接为新安装的vim

1
$vi_path=`
which
vi
`
2
$
sudo
rm
$vi_path
3
$
sudo
ln
-s`
which
vim`$vi_path
OK,我们再来检验一下vi是否还有cscope功能。

1
$
vi
--version|
grep
cscope
2
...+cscope...
如上就对了!

1.3taglist

上面讲了ctags与cscope,如果你把上面两样用熟了,vim是很强大的。

taglist是一个插件,它可又显示光标所在文件的文件结构,包括函数、类、宏定义等等。不多说,这个插件在网上有下载:http://www.vim.org/scripts/script.php?script_id=273

下载后,解压到~/.vim目录下。其实里面就只有两个件:

plugin/taglist.vim-maintaglistpluginfile
doc/taglist.txt-documentation(help)file

具体怎么做,上面那个网页写的很清楚了。

1.4bufexplorer

bufexplor也士一样,需要从网上下载,github上有,下载后,解压到~/.vim目录下。

使用在vim界面,使用\be弹出buffer界面,然后可以选在文件,或者使用下面ctl+j;ctl+k方式切换。

:cw可以和主编辑区显示在一个界面上

1.5lookupfile查找文件

在vim.org上下载lookupfile.zip和genutils,zip包,然后放到.vim目录下,

在vim中输入:LookupFile打开搜索窗口,然后输入想要查找的字符串即可,按ctrl+p/N进行上下切,然后进入指定的文件。

2.关于~/.vimrc文件

2.1简介

其实我在系统上一安装好vim后,就会立即到网上去下载一个.vimrc启动配置文件。以下是我之前收藏共享的通过模板(不是我写的,我只根据我的习惯改):http://www.oschina.net/code/snippet_243525_20881

2.2使用

大家可又去下载,覆盖~/.vimrc即可。

在我共享的这个~/.vimrc中,已经包括了基本的缩进、颜色、Tab宽以及对ctags,cscope,taglist等组件的配置。这里我例举几个里面已提供的功能。

(1)缓冲切换

Ctrl+J下一个文件
Ctrl+K上一个文件
Ctrl+H第一个文件

(2)Ctags与Cscope更新

F12更新当前目录下的ctags与cscope

(3)Cscope查询

Ctrl+<空格>+g查找标识符的定义
Ctrl+<空格>+s查找标识符出现的地方
Ctrl+<空格>+d查找标识符调用的函数
...

(4)taglist

\t显示taglist
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐