using ctags and cscope in vim
来源:互联网 发布:好牧人12网络牧养中心 编辑:程序博客网 时间:2024/05/19 17:59
ctags
1.安装ctags
sudo apt-get install ctags
也可以源码安装或直接下载可执行的bin文件。
2.生成tags数据文件
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
也可以先生成一个文件列表,再根据文件列表生成tags数据文件。这样可以排除不想要的一些源码文件。 ctags --c++-kinds=+p --fields=+iaS --extra=+q
对于linux kernerl源码,有个更简单的方法。 make tags ARCH=arm64
3.加载tags文件
如果tags文件在当前目录下,当打开vim的时候可自动加载。
如果不在当前目录下,可在vim中用如下方法加载tags文件。 :set tags=~/xxx/tags
使用tags
ctrl-]
跳转到光标所在标识符定义处。 ctrl-w ]
分割窗口并跳转到光标所在标识符定义处。 ctrl-t
跳回去。
:tag xxx
跳转到xxx定义处。 :stag xxx
分割窗口并跳转到xxx定义处。 :tags
显示跳转历史。 :tag
跳转到跳转历史的最后一条。 :[n]tnext
下一个。 :[n]tprev
上一个。 :tfirst
第一个tag。 :tlast
最后一个tag。 :tag xxx_<Tab>
自动补全。 :tag /xxxx
搜索而不是完全匹配。
其它用法: :help tag
cscope
vim默认支持cscope
http://cscope.sourceforge.net
1.安装cscope
sudo apt-get install cscope
2.生成cscope数据库文件
cscope -Rbq -f xxx.out
也可根据文件列表生成cscope数据库文件。这样可以排除源码目录中某些不想要的源码文件。 cscope -bqk -i cs.files
对于linux kernel,应该指定“k”选项: cscope -Rbqk -f xxx.out
另外,对于linux kernel,有更简单的方法: make cscope ARCH=arm64
在vim中使用cscope
加载cscope数据库文件: :cs add ~/xxx/cscope.out
如果cscope数据库文件在当前目录,是可以自动加载的。
:cs help
:cs find c/d/e/f/g/i/s/t
:help cs
cscope的快捷键
有一个插件,将cs命令映射成快捷键。
http://cscope.sourceforge.net/cscope_maps.vim
下载这个插件,放到~/.vim/plugin/目录下,可以使用快捷键。 ctrl-\ c
ctrl-\ d
......
附A:生成文件列表的一种方法
find . \-path "./arch/*" ! -path "./arch/arm64/*" -prune -o \-path "./Documentation*" -prune -o \-path "./scripts*" -prune -o \-name "*.[chxsS]" -print > cs.files
附B:vim之于程序的其他常用方法
[I
查找全局标识符定义。这个命令不依赖ctags,而是在当前文件和include的文件中搜索。 [<Tab>
查找全局标识符定义并直接跳转到第一个匹配的。 3[<Tab>
跳转到第3个匹配的。 [i
只列出第一个匹配的。 ]I
只列出当前光标之后的匹配项。 ]i
只列出当前光标之后的第一个匹配项。
[D
只查找以”#define”定义的宏。 [d
只列出第一个匹配。 ]D
只列出当前光标之后的匹配。 ]d
只列出当前光标之后的第一个匹配。
gD
与[I
类似,但只搜索当前文件,不搜索include的文件。 gd
只在当前函数中查找。
[#
跳转到#if或#ifdef。 ]#
跳转到#else或#endif。
[[
跳转到代码块开头。 ][
跳转到代码块结尾。
[{
跳转到代码块开头,但越过平级的代码块。 ]}
跳转到代码快几位,但越过平级的代码块。
[]
上一个函数的结尾。 ]]
下一个函数的开始。
[m
上一个成员函数的开头。 ]m
下一个成员函数的开头。
[/
注释的开头。 ]/
注释的结尾。
- using ctags and cscope in vim
- 使用Vim + Cscope/Ctags|Vim,Cscope,Ctags
- Vim + Cscope/Ctags
- VIM + CTags/CScope
- Vim + Cscope/Ctags
- vim+ctags+taglist+cscope
- VIM+ctags+cscope用法
- cscope+vim+ctags
- vim + ctags + cscope+taglist
- vi/Vim + Cscope/Ctags
- vim + ctags + cscope
- Vim+Ctags+Cscope配置
- 使用 VIM+Ctags+Cscope
- vi/Vim + Cscope/Ctags
- VIM+ctags+cscope用法
- vim + ctags + cscope
- vim+ctags+cscope+taglist
- Vim cscope ctags tags
- 简单工厂模式
- java 中的值传递,与引用传递
- 03.20 Linux文件属性
- 大数问题-打印1到最大的n位数
- Java多线程系列--“基础篇”07之 线程休眠
- using ctags and cscope in vim
- 应用scikit-learn做文本分类
- tensorflow机器学习之利用CNN卷积神经网络进行面部表情识别的实例代码
- Python所用的公司
- 根据十进制或者十六进制MAC范围抓取全部运营商
- 模仿高德地图搜索控件
- 一种自动关闭对话框的简单方法
- CSS基础概念
- leetcode[Valid Anagram]