FC10后vim中ctags+taglist+cscope的安装以及常用快捷键。

先将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帮助文件注: windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。 

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

: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窗口

这样配置后,当你输入”: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都被折叠起来。

 

-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常用快捷键:

          跳到光标下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: 查找指定的文本字符串需要上面的快捷键的话,还需要修改/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窗口

 

你可能感兴趣的:(Fedora)