ctags
功能
ctags是vim中的一款插件,它可以使用户在存在调用关系的函数间来回跳转,多用于查看源代码中的函数、变量或者宏。为源码的变量/对象、结构体/类、函数/接口、宏等产生索引文件,以便快速定位。目前支持41种语言。
【注】ctags不会为局部变量生成tags,但我们可以用gd命令去查看。
安装
1、从 http://ctags.sourceforge.net/ 处下载ctags压缩包;
2、将压缩包解压至用户目录的某文件夹下;
3、进入解压文件,进行三板斧操作:./configure、make、sudo make install。
配置
-----------------------------------------------------------------
生成tags文件
-----------------------------------------------------------------
在你想要查看的工程代码的目录下输入命令
ctags -R ( 递归的为当前目录及子目录下的所有代码文件生成tags文件) |
ctags filename.c filename1.c file.h 或 ctags *.c *.h (为某些源码生成tags文件) |
为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是: ctags -R --c++-kinds=+px --fields=+iaS --extra=+q 其中: 选项c++-kinds 用于指定C++语言的 tags记录类型, --c-kinds用于指定c语言的, 通用格式是 --{language}-kinds 选项 fileds 用于指定每条标记的扩展字段域 extra 选项用于增加额外的条目: f表示为每个文件增加一个条目, q为每个类增加一个条目 |
(这时该目录下会多了tags文件)
【注意】这个tags文件是相对于此父目录下所有工程的,如果有某个工程改名或者有新的工程引入,需将原tags删掉,然后按此法再重新生成一个tags文件。
-------------------------------------------------------------------
设置tags源
-------------------------------------------------------------------
① 可以在每次用vim打开文件时在命令行模式下设置tags源
:set tags=xxx/tags(tags所在目录) |
② 可以在用户目录下(~/)打开.vimrc文件,如果没有就自己创建一个,输入下面的设置
set tags=tags; |
set autochdir |
(第一行的意思是每次寻找tags时从当前目录找,找不到去父目录找….)
使用
①设置好了tags文件,在定位变量/函数的定义时,最常用的快捷键是:Ctrl + ] 或者在命令模式下 :ta name
②使用快捷组合键 Ctrl + o/t 返回到跳转前的位置。
③“:ts”命令就能列出一个列表供用户选择
④“:tp”为上一个tag标记文件。
⑤“:tn”为下一个tag标记文件。
⑥跳到指定的标签: tag [TagName]
⑦新创建一个窗口,显示标签的内容 CTRL + W + ]
⑧新建一个预览窗口,显示指定标签内容:ptag TagName
⑨关闭预览窗口: pclose
⑩在预览窗口编辑,头文件 pedit file.h
关于更详细的ctags用法,vim中使用
:help tags
taglist
功能
是一款基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件。
安装
1、 从http://www.vim.org/scripts/script.php?script_id=273下载最新版本的taglist plugin
2、 将下载的压缩包放在~/.vim目录中并解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件,分别为plugin/taglist.vim (taglist插件) doc/taglist.txt (taglist帮助文件)
3、 打开vim,执行:helptags ~/.vim/doc 或者 先进入~/.vim/doc ,打开vim,执行:helptags .
4、生成帮助标签后,就可以使用下面的命令查看taglist的帮助文档了
:help taglist.txt |
配置
要方便的使用taglist,需要进行一些配置放到~/.vimrc中
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_WinWidth=40
let Tlist_Auto_Highlight_Tag=1
let Tlist_Auto_Open=1
let Tlist_Auto_Update=1
let Tlist_Display_Tag_Scope=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Enable_Dold_Column=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
"let Tlist_Use_Right_Window=1
let Tlist_Use_SingleClick=1
nnoremap <silent> <F8> :TlistToggle<CR>
使用
可以用”:TlistOpen“打开taglist窗口,用”:TlistClose“关闭taglist窗口。或者使用”:TlistToggle“在打开和关闭间切换。
在taglist窗口中,可以使用下面的快捷键:
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 o 在一个新打开的窗口中显示光标下tag <Space> 显示光标下tag的原型定义 u 更新taglist窗口中的tag s 更改排序方式,在按名字排序和按出现顺序排序间切换 x taglist窗口放大和缩小,方便查看较长的tag + 打开一个折叠,同zo - 将tag折叠起来,同zc * 打开所有的折叠,同zR = 将所有tag折叠起来,同zM [[ 跳到前一个文件 ]] 跳到后一个文件 q 关闭taglist窗口 <F1> 显示帮助 |