vim+cscope

目前就只能用这个鸟东西了,kscope搞不出来。。。。。

首先在目录下建立cscope索引文件

find -name '*.c' > cscope.file

cscope -Rbkq

这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符号索引,后两个文件是使用"-q"选项生成的,可以加快cscope的索引速度。
上面所用到的命令参数,含义如下:

-R:在生成索引文件时,搜索子目录树中的代码
-b:只生成索引文件,不进入cscope的界面
-k:在生成索引文件时,不搜索
/ usr / include目录
-q:生成cscope
. in . out和cscope . po . out文件,加快cscope的索引速度

接下来,就可以在vim里读代码了。
不过在使用过程中,发现无法找到C++的类、函数定义、调用关系。仔细阅读了cscope的手册后发现,原来cscope在产生索引文件时,只搜索类型为C, lex和yacc的文件(后缀名为.c, .h, .l, .y),C++的文件根本没有生成索引。不过按照手册上的说明,cscope支持c++和Java语言的文件。
于是按照cscope手册上提供的方法,先产生一个文件列表,然后让cscope为这个列表中的每个文件都生成索引。
为了方便使用,编写了下面的脚本来更新cscope和ctags的索引文件:

#!/bin/sh

find.-name"*.h"-o-name"*.c"-o-name"*.cc">cscope.files
cscope-bkq-icscope.files
ctags-R


这个脚本,首先使用find命令,查找当前目录及子目录中所有后缀名为".h", ".c"和".cc"的文件,并把查找结果重定向到文件cscope.files中。
然后cscope根据cscope.files中的所有文件,生成符号索引文件。
最后一条命令使用ctags命令,生成一个tags文件,在vim中执行":help tags"命令查询它的用法。它可以和cscope一起使用。

cs help

find 的选项

0或则S:查找本符号

1或则G:查找本定义

2或则D:查找本函数调用的函数

3或则C:查找调用本函数的函数

4或则T:查找本字符串

6或则E:查找本EGREP模式

7或则F:查找本文件

8或则I:查找包含本文件的文件

热后就可以在vim中使用cscope了,具体使用方法参考

http://vimcdoc.sourceforge.net/doc/if_cscop.html#cscope-intro

### 配置 Vim 结合 Ctags 和 Cscope 用于代码导航 Vim 是一款功能强大的文本编辑器,广泛用于代码开发和导航。通过结合 Ctags 和 Cscope 工具,可以显著提升代码阅读和导航的效率。以下是详细的配置步骤: #### 1. 安装 Ctags 和 Cscope 在 Linux 系统上,可以通过以下命令安装 Ctags 和 Cscope: ```bash sudo apt install exuberant-ctags -y sudo apt install cscope -y ``` 这些工具将帮助生成代码标签文件和索引文件,用于代码导航[^4]。 #### 2. 生成 Tags 文件 Ctags 用于生成代码标签文件,允许快速跳转到函数、变量等定义处。可以通过以下命令生成标签文件: ```bash ctags -R . ``` 此命令会在当前目录递归生成 `tags` 文件,包含所有源代码文件的标签信息。 #### 3. 配置 `.vimrc` 文件 在 `.vimrc` 文件中添加以下配置,以启用 Ctags 和 Cscope 的自动加载: ```vim " 设置 Ctags 自动加载 set tags=./tags,tags " 设置 Cscope 自动加载 cs add ./cscope.out ``` 这些配置确保在 Vim 启动时自动加载 `tags` 和 `cscope.out` 文件。 #### 4. 配置快捷键 为了提高效率,可以配置快捷键来快速生成标签文件和 Cscope 索引文件: ```vim " 快捷键生成 tags 文件 nmap <F5> :!ctags -R .<CR> " 快捷键生成 cscope.out 文件 nmap <F6> :!cscope -R -b<CR> ``` 通过按 `F5` 和 `F6` 键,可以快速生成 `tags` 和 `cscope.out` 文件[^3]。 #### 5. 使用 Ctags 和 CscopeVim 中,使用以下命令进行代码导航: - **Ctags**:将光标放在函数或变量上,按 `Ctrl + ]` 跳转到定义处;按 `Ctrl + t` 返回上一次的位置。 - **Cscope**:使用 `:cs find s <symbol>` 查找符号;使用 `:cs find g <symbol>` 查找全局定义。 #### 6. 其他插件配置 可以结合其他插件如 Taglist 和 NerdTree 提升代码导航体验: - **Taglist**:显示当前文件的标签列表。 - **NerdTree**:提供文件树视图,方便文件导航。 #### 7. 附录 - **查看帮助**:在 Vim 中使用 `:help ctags` 和 `:help cscope` 查看详细功能和用法。 - **自定义配置**:根据个人需求调整 `.vimrc` 文件,优化工作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值