FC10vim中 ctags+taglist+cscope的安装以及常用快捷键

先将ctags更新到最新版本:

  1. yum install ctags  

yum install ctags

现在我们到http://www.vim.org/scripts/script.php?script_id=273 下载最新版本的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常用快捷键:

 
    
view plain copy to clipboard print ?
  1. <CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样  
  2.   
  3. o             在一个新打开的窗口中显示光标下tag  
  4.   
  5. <Space>       显示光标下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窗口  
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 o 在一个新打开的窗口中显示光标下tag <Space> 显示光标下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 <C-@>s :cs find s <C-R>=expand("<cword>" )<CR><CR>  
  16. nmap <C-@>g :cs find g <C-R>=expand("<cword>" )<CR><CR>  
  17. nmap <C-@>c :cs find c <C-R>=expand("<cword>" )<CR><CR>  
  18. nmap <C-@>t :cs find t <C-R>=expand("<cword>" )<CR><CR>  
  19. nmap <C-@>e :cs find e <C-R>=expand("<cword>" )<CR><CR>  
  20. nmap <C-@>f :cs find f <C-R>=expand("<cfile>" )<CR><CR>  
  21. nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>" )<CR>$<CR>  
  22. nmap <C-@>d :cs find d <C-R>=expand("<cword>" )<CR><CR>  
  23. let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的  
  24. let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim  
  25. let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口  

你可能感兴趣的:(windows,linux,cmd,File,vim,yacc)