vim+cscope+ctags

07-19 1252阅读

一、简单安装

1.安装cscope

# apt install cscope

2.安装ctags

# apt install ctags

3.taglist安装

下载Vim source code browser plugin - Browse /vim-taglist at SourceForge.net,解压和复制文件

vim+cscope+ctags
(图片来源网络,侵删)
# 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: 查找包含本文件的文件
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]