一、简单安装
1.安装cscope
# apt install cscope
2.安装ctags
# apt install ctags
3.taglist安装
下载Vim source code browser plugin - Browse /vim-taglist at SourceForge.net,解压和复制文件
# unzip taglist_46.zip
# cp doc/taglist.txt /usr/share/vim/vim80/doc/
# cp plugin/taglist.vim /usr/share/vim/vim80/plugin/
(vim80:我安装的vim是vim8.0版本,具体得去文件夹下看自己的目录叫什么名字)
二、简单配置
1.cscope配置
将以下内容添加到~/.vimrc中,vim会自动加载当前目录下的符号索引cscope.out,可以使用ctrl+t、ctrl+]等。
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope设置
if has("cscope")
set csprg=/usr/bin/cscope "指定用来执行 cscope 的命令
set csto=1 "先搜索tags标签文件,再搜索cscope数据库
set cst "使用|:cstag|(:cs find g),而不是缺省的:tag
set nocsverb "不显示添加数据库是否成功
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out "添加cscope数据库
endif
set csverb "显示添加成功与否
endif
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
其中<C-@>g是先同时按ctrl+@键,之后再按一个g。功能就是查看当前光标所在符号的定义。
2.ctags配置
将以下内容添加到~/.vimrc中
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ctags设置
set tags=./tags,./../tags,./*/tags;
" Tag list (ctags)
filetype on "文件类型自动检测
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
# let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口,看个人习惯,左边或者右边,右边设置为1,默认左边
let Tlist_Auto_Open=1 " 自动打开taglist窗口
set mouse=a " 设置鼠标点击,如果鼠标在Vim里面点击无效,请在~/.vimrc下加入
let Tlist_Use_SingleClick=1 " 单击tag就跳到tag定义的位置, 默认是双击
map <silent> <F8> :TlistToggle<cr> "为打开tags窗口映射一个快捷键,映射F8键打开tags窗口
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
3.其他配置项说明
1、Tlist_Ctags_Cmd
指定Exuberant ctags程序的位置,如果它没在PATH变量所定义的路径中,需要使用此选项设置一下。
2、Tlist_Show_One_File
设置为1,则不同时显示多个文件的 tag ,只显示当前文件的tag。缺省为显示多个文件中的tag。
3、Tlist_File_Fold_Auto_Close
设置为1,当同时显示多个文件中的tag时,可使taglist只显示当前文件tag,其它文件的tag都被折叠起来。
4、Tlist_Sort_Type
设置为”name”可以使taglist以tag名字进行排序。缺省是按tag在文件中出现的顺序进行排序。
5、Tlist_Exit_OnlyWindow
设置为1,在taglist窗口是最后一个窗口时退出VIM。
6、Tlist_Use_Right_Window
设置为1,taglist窗口出现在右侧。缺省显示在左侧。
7、Tlist_Use_SingleClick
如果你想设置为1,单击tag就跳转。缺省情况下,双击tag时跳转。
8、Tlist_Auto_Open
设置为1,在启动VIM后自动打开taglist窗口。
9、Tlist_Close_On_Select
设置为1,在选择了tag后自动关闭taglist窗口。
10、Tlist_GainFocus_On_ToggleOpen
设置为1,在使用:TlistToggle打开taglist窗口时,输入焦点移动到taglist窗口中。
11、Tlist_Process_File_Always
设置为1,则taglist始终解析文件中的tag,不管taglist窗口有没有打开。
12、Tlist_WinHeight
设置taglist窗口的高度。
13、Tlist_WinWidth
设置taglist窗口的宽度。
14、Tlist_Use_Horiz_Window
设置为1,taglist窗口横向显示。
三、简单使用
1.在源码顶层目录执行以下命令
# ctags -R *
# cscope -Rbkq
//这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
# vim main.c
2.ctags快捷键说明
ctrl+w 然后再按w 切换窗口
ctrl+w 然后 h/j/k/l 左、下、上、右切换窗口
s 排序方式切换,默认按照文本出现的顺序排序,可以切换成按照名字排序
o 打开一个新的窗口,显示光标下tag
ctrl+w 然后c 关闭一个窗口
u 更新taglist窗口中的tag
q 关闭taglist列表
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
<Space> 显示光标下tag的原型定义
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zo
- 将tag折叠起来,同zc
* 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口
<F1> 显示帮助
建议使用F1打开taglist仔细阅读详细用法。
3.cscope快捷键
:cs help (vim command下查询)
s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文件