1. taglist
vim 官方网页上有下载和安装指导。
用法:
在vim内部,输入 :TlistToggle, 打开taglist窗口(TlistGoogle相当于 TlistOpen和 TlistClose的组合),按ctrl +ww在 taglist窗口和代码窗口之间切换光标; 在 taglist窗口中,光标到一个tag上,按 enter,会到相应的定义处。
在 taglist窗口中,还可以使用快捷键:
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
q 关闭taglist窗口
2. ctags
用法:
进入代码目录,执行
ctags -R *
解析所有的代码
ctags支持的tag有:
用#define定义的宏
枚举型变量的值
函数的定义、原型和声明
名字空间(namespace)
类型定义(typedefs)
变量(包括定义和声明)
类(class)、结构(struct)、枚举类型(enum)和联合(union)
类、结构和联合中成员变量或函数
tag的定位方法:
1) 在命令行:
vim -t tagToBeFind
如果这个变量或函数有多处定义,在VI命令行模式
“:ts”命令就能列出一个列表供用户选择。 当时用":ts"列出所有查找项时,可使用“q",让有选择你要查看的那一项的编号即可跳入查看。
“:tp”为上一个tag标记文件,
“:tn”为下一个tag标记文件。
":tl " 最后一个tag标记文件
当然,若当前tags文件中用户所查找的变量或函数名只有一个,“:tp,:tn”命令不可用。
2) 在vim编辑器内用":ta"命令,例如:
:ta foo_bar
3)光标移到变量名或函数名上,然后按下"Ctrl-]"。用"Ctrl-o"退回原来的地方
在函数中移动光标
[{ 转到上一个位于第一列的"{"
}] 转到下一个位于第一列的"{"
{ 转到上一个空行
} 转到下一个空行
gd 转到当前光标所指的局部变量的定义
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方
3. scope
在代码目录下运行
cscope -Rbq
如果不是c代码,使用:
$ find ./ -name "*.c" -or -name "*.h" -or -name "*.cpp" -or -name "*.S" | cscope -Rbq
在vim 中执行:
:cs add cscope.out
会把索引信息加载进来
查看是否已经加载索引信息:
:cs s
查找命令:
cs f option symbol
option 可以为:
s ---> 查找 函数名、宏、枚举值等符号出现的地方
g------>查找函数、宏、枚举等定义的位置
c------> 查找调用本函数的函数
t----> 查找指定的字符串
f ---> 查找并打开文件
自动那个加载 cscope,out文件:
修改 .vimrc, 加入:
set nu
set tabstop=4
set noexpandtab
%retab!
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
" add any cscope database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add the database pointed to by environment variable
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif