vim+ ctags + taglist + cscope +bufexploer + lookupfile总结
2013-09-02 17:29
323 查看
http://my.oschina.net/hevakelcj/blog/138950
最近VIM用得比较多,所以在学了不少。在这里对收获到的东西做一个总结。
看一下当前系统有有没有安装ctags,如果有就跳过本节。
我是在http://ctags.sourceforge.net/上下载的最近的源码,解压,配置,编译,安装。
然后再检查一下是否成功安装
通常是没问题的。
ctags就会遍历当前目录下的所有.c,.h,.cpp文件,提取所有的标识符并记录到tags文件中。
进入vim可又使用标签参数,使vim打开时跳到标签所在位置。如果我们要找WinMain,如下:
进行vim之后,常用的几个命令:
:tag{ident}"跳转到ident标签位置上
:tags"显示标签栈
:ts"显示找到的所有标签
:tp"显示上一个标签
:tn"显示下一个标签
快捷键:
Ctrl+t"返回原来的文件
Ctrl+]"跳至下一个标签
如果没有安装就从网上下载源码进行安装。下载地址:http://cscope.sourceforge.net/
同样步骤:解压,配置,编译,安装。与ctags一样。
cscope就会生成一个cscope.out文件。
然后在当前的目录下打开vim。在vim在执行命令将cscope.out加进来:
好了,现在cscope就可又用了。
常用的搜索命令格式:
其中{querytype}表示:
通常我们会在~/.vimrc文件中进行一下按键映射,使操作便简便:
其实的依此类推:
其中<C-@>s表示[Ctrl+空格]后再按s键。
:csaddcscope.out
显示:
E319:Sorry,thecommandisnotavailableinthisversion.
最后出的原因是编译的时候没有加入cscope模块。
执行vim命令查看:
cscope前是减号,说明当前vim里没有加入这个模块。
找到vim的源码包,进入源码路译。
说明如果要在vim中使用cscope,就得在配置的时候加入--enable-cscope参数。如下:
编译完了之后,先别急着安装,检查一下新编译的vim可执行文件是否具有cscope功能。
如果看到cscope前面是个加号,就表示有cscope功能。
然后才是安装:
安装完了之后,还要检查一下vi有没有更新。经常有网友问为什么加了--enable-cscope编译安装还是不行呢?原因是,你安装的是vim,而vi在某些系统里是另一个独立的程序,vi不会自动更新。
将原来的vi链接为新安装的vim
OK,我们再来检验一下vi是否还有cscope功能。
如上就对了!
taglist是一个插件,它可又显示光标所在文件的文件结构,包括函数、类、宏定义等等。不多说,这个插件在网上有下载:http://www.vim.org/scripts/script.php?script_id=273
下载后,解压到~/.vim目录下。其实里面就只有两个件:
plugin/taglist.vim-maintaglistpluginfile
doc/taglist.txt-documentation(help)file
具体怎么做,上面那个网页写的很清楚了。
使用在vim界面,使用\be弹出buffer界面,然后可以选在文件,或者使用下面ctl+j;ctl+k方式切换。
:cw可以和主编辑区显示在一个界面上
在vim中输入:LookupFile打开搜索窗口,然后输入想要查找的字符串即可,按ctrl+p/N进行上下切,然后进入指定的文件。
http://www.oschina.net/code/snippet_243525_20881
在我共享的这个~/.vimrc中,已经包括了基本的缩进、颜色、Tab宽以及对ctags,cscope,taglist等组件的配置。这里我例举几个里面已提供的功能。
Ctrl+K上一个文件
Ctrl+H第一个文件
Ctrl+<空格>+s查找标识符出现的地方
Ctrl+<空格>+d查找标识符调用的函数
...
最近VIM用得比较多,所以在学了不少。在这里对收获到的东西做一个总结。
1.编程四要素vim,ctags,cscope,taglist
vim配合这3件东西之后,极为强大。与SourceInsight有一拼。1.1ctags
ctags叫作“标签”,它记录源码中所有标识符定义所在的文件与行号。(1)安装
先在命令终端运行一下:1 | $ctags--version |
我是在
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. |
进入vim可又使用标签参数,使vim打开时跳到标签所在位置。如果我们要找WinMain,如下:
1 | $ vi -tWinMain |
:tag{ident}"跳转到ident标签位置上
:tags"显示标签栈
:ts"显示找到的所有标签
:tp"显示上一个标签
:tn"显示下一个标签
快捷键:
Ctrl+t"返回原来的文件
Ctrl+]"跳至下一个标签
1.2cscope
cscope比ctags更强大,它不仅记录标识符定义所在的位置,还记录了标识符(函数)之间的调用关系与文件的包含关系,功能更多。只不过没ctags使用简单。(1)安装
同样先检查一下cscope有没有安装。如果没有安装就从网上下载源码进行安装。下载地址:
同样步骤:解压,配置,编译,安装。与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 |
然后在当前的目录下打开vim。在vim在执行命令将cscope.out加进来:
1 | :csaddcscope.out |
常用的搜索命令格式:
1 | :cs find {querytype}{ident} |
2 | 或 |
3 | :csf{querytype}{ident} |
num | querytype | functiondescript |
0 | s | C符号出现过的地方 |
1 | g | 定义的地方 |
2 | d | 被这个函数调用的函数列表 |
3 | c | 调用这个函数的函数列表 |
4 | t | 搜字串 |
6 | e | egrep匹配 |
7 | f | 搜索文件 |
8 | i | 包含这个文件的文件列表 |
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> |
(3)遇到的问题
我的安装使用没有上面说的那么顺。使用的时候,我执行:csaddcscope.out
显示:
E319:Sorry,thecommandisnotavailableinthisversion.
最后出的原因是编译的时候没有加入cscope模块。
执行vim命令查看:
1 | $vim--version| grep cscope |
2 | ...-cscope... |
找到vim的源码包,进入源码路译。
1 | $./configure--help| grep cscope |
2 | -- enable -cscopeIncludecscopeinterface |
1 | $./configure-- enable -cscope&& make |
1 | $.src/vim--version| grep cscope |
2 | ...+cscope... |
然后才是安装:
1 | $ sudo make install |
将原来的vi链接为新安装的vim
1 | $vi_path=` which vi ` |
2 | $ sudo rm $vi_path |
3 | $ sudo ln -s` which vim`$vi_path |
1 | $ vi --version| grep cscope |
2 | ...+cscope... |
1.3taglist
上面讲了ctags与cscope,如果你把上面两样用熟了,vim是很强大的。taglist是一个插件,它可又显示光标所在文件的文件结构,包括函数、类、宏定义等等。不多说,这个插件在网上有下载:
下载后,解压到~/.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启动配置文件。以下是我之前收藏共享的通过模板(不是我写的,我只根据我的习惯改):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相关文章推荐
- vim ctags cscope lookupfile插件(包括如何自动生成索引tag、自动查找索引tag)
- inux下代码阅读 -- 配置vim+ctags+taglist+cscope
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- vim+linux+ctags+taglist+winmanager+grep+cscope+supertab+visualmark----taglist
- 用vim+ctags+taglist+cscope打造文本模式下的Kscope
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 使用 vim + ctags + cscope + taglist 阅读源码 - bo博的个人空间 - 开源中国社区
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- Linux 内核阅读工具vim+ctags+cscope+taglist
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 【vim】安装linux开发环境(vim + ctags + taglist + cscope + cppcomplete + global )
- vim+linux+ctags+taglist+winmanager+grep+cscope+supertab+visualmark--winmanager
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- 用vim+ctags+taglist+cscope打造文本模式下的Kscope
- vim+taglist+ctags+cscope+自动补齐
- vim + cscope/ctags/minibuf 查看分析代码
- vim + ctags + taglist + cscope, linux版本的sourceinsight
- vim+linux+ctags+taglist+winmanager+grep+cscope+supertab+visualmark--cscope