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 <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: 查找包含本文件的文件
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写代码的小可爱&&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值