免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2450 | 回复: 0
打印 上一主题 下一主题

[转载]FC10后vim中ctags+taglist+cscope的安装以及常用快捷键 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:57:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-13 15:51 |只看该作者 |倒序浏览

                               
                                       
                                       
                                       
先将ctags更新到最新版本:
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里:
plugin/taglist.vim – taglist插件    doc/taglist.txt    - taglist帮助文件  plugin/taglist.vim – taglist插件
doc/taglist.txt    - taglist帮助文件
注: windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。
使用下面的命令生成帮助标签(下面的操作在vim中进行):
:helptags ~/.vim/doc  // 生成帮助标签后  :help taglist.txt // 查看taglist的帮助  :helptags ~/.vim/doc  // 生成帮助标签后
:help taglist.txt // 查看taglist的帮助
Taglist提供了相当多的功能,可以在/etc/vimrc中这样配置:
""""""""""""""""""""""""""""""  " 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窗口   """"""""""""""""""""""""""""""
" 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的索引文件:
#!/bin/sh  find  . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files  cscope  -bkq -i cscope.files  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
?
          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样    o             在一个新打开的窗口中显示光标下tag           显示光标下tag的原型定义    u             更新taglist窗口中的tag    s             更改排序方式,在按名字排序和按出现顺序排序间切换    x             taglist窗口放大和缩小,方便查看较长的tag    +             打开一个折叠,同zoctags常用快捷键ctags常用快捷键    -             将tag折叠起来,同zc    *             打开所有的折叠,同zR    =             将所有tag折叠起来,同zM    [[            跳到前一个文件    ]]            跳到后一个文件    q             关闭taglist窗口            跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zoctags常用快捷键ctags常用快捷键
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
cscope常用快捷键:
先按 ctrl+\ 然后  c: 查找该函数被调用的位置  d: 查找该函数调用了哪些函数  e: 查找指定的正规表达式 f: 查找指定的文件  g: 查找指定标识符的定义位置  i: 查找该文件在哪些地方被包含  s: 查找指定标识符的使用位置  t: 查找指定的文本字符串  先按 ctrl+\ 然后
c: 查找该函数被调用的位置
d: 查找该函数调用了哪些函数
e: 查找指定的正规表达式 f: 查找指定的文件
g: 查找指定标识符的定义位置
i: 查找该文件在哪些地方被包含
s: 查找指定标识符的使用位置
t: 查找指定的文本字符串
需要上面的快捷键的话,还需要修改/etc/vimrc
"if has("cscope") && filereadable("/usr/bin/cscope")  " set csprg=/usr/bin/cscope  " set csto=0  " set cst  " set nocsverb  " " add any database in current directory  " if filereadable("cscope.out")  " cs add cscope.out  " " else add database pointed to by environment  " elseif $CSCOPE_DB != ""  " cs add $CSCOPE_DB  " endif  " set csverb  "endif  nmap s :cs find s =expand("")  nmap g :cs find g =expand("")  nmap c :cs find c =expand("")  nmap t :cs find t =expand("")  nmap e :cs find e =expand("")  nmap f :cs find f =expand("")  nmap i :cs find i ^=expand("")$  nmap d :cs find d =expand("")  let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的  let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim  let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口   
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/100698/showart_2051343.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP