vim+cscope+ctags
一、简单安装
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 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("") """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 其中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 :TlistToggle "为打开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列表 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样 o 在一个新打开的窗口中显示光标下tag 显示光标下tag的原型定义 u 更新taglist窗口中的tag s 更改排序方式,在按名字排序和按出现顺序排序间切换 x taglist窗口放大和缩小,方便查看较长的tag + 打开一个折叠,同zo - 将tag折叠起来,同zc * 打开所有的折叠,同zR = 将所有tag折叠起来,同zM [[ 跳到前一个文件 ]] 跳到后一个文件 q 关闭taglist窗口 显示帮助
建议使用F1打开taglist仔细阅读详细用法。
3.cscope快捷键
:cs help (vim command下查询) s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方 g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能 d: 查找本函数调用的函数 c: 查找调用本函数的函数 t: 查找指定的字符串 e: 查找egrep模式,相当于egrep功能,但查找速度快多了 f: 查找并打开文件,类似vim的find功能 i: 查找包含本文件的文件
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。