Chinaunix首页 | 论坛 | 博客
  • 博客访问: 778758
  • 博文数量: 230
  • 博客积分: 6330
  • 博客等级: 准将
  • 技术积分: 2188
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-10 15:55
个人简介

脚踏实地

文章分类

全部博文(230)

文章存档

2017年(1)

2016年(7)

2015年(10)

2014年(32)

2013年(24)

2012年(33)

2011年(50)

2010年(30)

2009年(43)

分类: LINUX

2009-09-13 15:51:35

300) { text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href; clipboardData.setData("text", text); } }, 100); } } function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open(''+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}

先将ctags更新到最新版本:

  1. yum install ctags  
yum install ctags

现在我们到 下载最新版本的taglist plugin,目前版本是4.3。

在Fedora10和Ubuntu9.10里没找到这两个文件夹,而是在/usr/share/vim/vim72里:

	
  1. plugin/taglist.vim – taglist插件  
  2.   
  3. doc/taglist.txt    - taglist帮助文件  
plugin/taglist.vim – taglist插件 doc/taglist.txt - taglist帮助文件 注: windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。

使用下面的命令生成帮助标签(下面的操作在vim中进行):

  1. :helptags ~/.vim/doc  // 生成帮助标签后  
  2. :help taglist.txt // 查看taglist的帮助  
:helptags ~/.vim/doc // 生成帮助标签后 :help taglist.txt // 查看taglist的帮助

Taglist提供了相当多的功能,可以在/etc/vimrc中这样配置:

  1. """"""""""""""""""""""""""""""  
  2. " Tag list (ctags)  
  3. """"""""""""""""""""""""""""""  
  4. if MySys() == "windows"                "设定windows系统中ctags程序的位置  
  5. let Tlist_Ctags_Cmd = 'ctags'  
  6. elseif MySys() == "linux"              "设定linux系统中ctags程序的位置  
  7. let Tlist_Ctags_Cmd = '/usr/bin/ctags'  
  8. endif  
  9. let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的  
  10. let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim  
  11. let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口   
"""""""""""""""""""""""""""""" " Tag list (ctags) """""""""""""""""""""""""""""" if MySys() == "windows" "设定windows系统中ctags程序的位置 let Tlist_Ctags_Cmd = 'ctags' elseif MySys() == "linux" "设定linux系统中ctags程序的位置 let Tlist_Ctags_Cmd = '/usr/bin/ctags' endif let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口

这样配置后,当你输入”:Tlist “时,显示如下窗口:


仔细阅读了cscope的手册后发现,原来cscope在产生索引文件时,只搜索类型为 C, lex和yacc的文件(后缀名为.c, .h, .l, .y),C++的文件根本没有生成索引。不过按照手册上的说明,cscope支持c++和Java语言的文件。
于是按照cscope手册上提供的方法,先产生一个文件列表,然后让cscope为这个列表中的每个文件都生成索引。
为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

  1.  #!/bin/sh  
  2. find  . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files  
  3. cscope  -bkq -i cscope.files  
  4. ctags  -R // 使taglist只显示当前文件tag,其它文件的tag都被折叠起来。   
#!/bin/sh find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files cscope -bkq -i cscope.files ctags -R // 使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
-R : 在生成索引文件时,搜索子目录树中的代码
-b : 只生成索引文件,不进入cscope的界面
-k : 在生成索引文件时,不搜索
/ usr / include目录
-q : 生成cscope
. in . out和cscope . po . out文件,加快cscope的索引速度

将这个脚本保存到/usr/local/bin/cscopes.sh,以后就可以直接是使用这个命令生成索引拉!

taglist 另外再装上 从cscope,就 可以连着 ctags+taglist+ Cscope也一起用.

ctags 常用快捷键

{ 转到上一个空行
} 转到下一个空行
gd 转到当前光标所指的局部变量的定义
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方

ctrl+] 转到函数定义的地方

ctrl+t 回退到函数调用的地方

taglist常用快捷键:


	
  1.           跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样  
  2.   
  3. o             在一个新打开的窗口中显示光标下tag  
  4.   
  5.        显示光标下tag的原型定义  
  6.   
  7. u             更新taglist窗口中的tag  
  8.   
  9. s             更改排序方式,在按名字排序和按出现顺序排序间切换  
  10.   
  11. x             taglist窗口放大和缩小,方便查看较长的tag  
  12.   
  13. +             打开一个折叠,同zoctags常用快捷键ctags常用快捷键  
  14.   
  15. -             将tag折叠起来,同zc  
  16.   
  17. *             打开所有的折叠,同zR  
  18.   
  19. =             将所有tag折叠起来,同zM  
  20.   
  21. [[            跳到前一个文件  
  22.   
  23. ]]            跳到后一个文件  
  24.   
  25. q             关闭taglist窗口  
跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 o 在一个新打开的窗口中显示光标下tag 显示光标下tag的原型定义 u 更新taglist窗口中的tag s 更改排序方式,在按名字排序和按出现顺序排序间切换 x taglist窗口放大和缩小,方便查看较长的tag + 打开一个折叠,同zoctags常用快捷键ctags常用快捷键 - 将tag折叠起来,同zc * 打开所有的折叠,同zR = 将所有tag折叠起来,同zM [[ 跳到前一个文件 ]] 跳到后一个文件 q 关闭taglist窗口
cscope常用快捷键:
  1. 先按 ctrl+\ 然后  
  2. c: 查找该函数被调用的位置  
  3. d: 查找该函数调用了哪些函数  
  4. e: 查找指定的正规表达式 f: 查找指定的文件  
  5. g: 查找指定标识符的定义位置  
  6. i: 查找该文件在哪些地方被包含  
  7. s: 查找指定标识符的使用位置  
  8. t: 查找指定的文本字符串  
先按 ctrl+\ 然后 c: 查找该函数被调用的位置 d: 查找该函数调用了哪些函数 e: 查找指定的正规表达式 f: 查找指定的文件 g: 查找指定标识符的定义位置 i: 查找该文件在哪些地方被包含 s: 查找指定标识符的使用位置 t: 查找指定的文本字符串 需要上面的快捷键的话,还需要修改/etc/vimrc
	
  1. "if has("cscope") && filereadable("/usr/bin/cscope")  
  2. set csprg=/usr/bin/cscope  
  3. set csto=0  
  4. set cst  
  5. set nocsverb  
  6. " " add any database in current directory  
  7. " if filereadable("cscope.out")  
  8. " cs add cscope.out  
  9. " " else add database pointed to by environment  
  10. " elseif $CSCOPE_DB != ""  
  11. " cs add $CSCOPE_DB  
  12. " endif  
  13. set csverb  
  14. "endif  
  15. nmap s :cs find s =expand("")  
  16. nmap g :cs find g =expand("")  
  17. nmap c :cs find c =expand("")  
  18. nmap t :cs find t =expand("")  
  19. nmap e :cs find e =expand("")  
  20. nmap f :cs find f =expand("")  
  21. nmap i :cs find i ^=expand("")$  
  22. nmap d :cs find d =expand("")  
  23. let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的  
  24. let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim  
  25. let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口   


阅读(1273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~