vim+cscope+ctags

avatar
作者
筋斗云
阅读量:0

一、简单安装

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: 查找包含本文件的文件

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!