cscope and gvim

本文介绍了cscope的下载、安装步骤及配置方法,并详细解释了如何为cscope建立符号数据库,以便在代码浏览和搜索中高效利用。此外还提供了在Windows环境下与gvim结合使用的具体操作。
下载
-----------------------------------
下载 cscope15.6-win32.zip

http://hi.baidu.com/zengzhaonong/item/69d9dc325170d4c01a969667

安装

-----------------------------------
安装很简单,只要将cscope的可执行文件放到PATH环境变量包含的目录中即可。
(1) 推荐Windows用户将上面下载到的cscope.exe与gvim.exe放在同一个目录下,如D:\Program Files\Vim\vim72下。
(2) "我的电脑" --> "属性" --> "高级" --> "环境变量" --> "系统变量"
    PATH: D:\Program Files\Vim\vim72 (给环境变量PATH添加cscope.exe所在目录)
    注销/重启后PATH即可生效。
(3) "开始" --> "运行" --> "cmd"
C:\Documents and Settings\Administrator> cscope -V
cscope: version 15.6.   Compiled by MSLK(mslk.sa@gmail.com)
如果能看到cscope的版本好则说明安装成功。

(4) 为了方便地使用cscope,我们还需要下载cscope的键盘映射设置,这样就可以在gvim中简单地通过快捷键来使用cscope,而不必敲复杂的命令了。键盘映射可以从这里下载:http://cscope.sourceforge.net/cscope_maps.vim。
将下载到的cscope_maps.vim放在gvim的插件目录里,如D:\Program Files\Vim\vimfiles\plugin中。Linux用户可以放在$HOME/.vim/plugin中。


建立符号数据库
-----------------------------------
(1) 我们假设我们要阅读的代码放在D:\src\myproject下。然后打开命令行,进入源代码所在的目录,为cscope建立搜索文件列表。在命令行中执行以下命令:
D:\soft\vxwork_src> dir /s /b *.c *.h > cscope.files
D:\soft\vxwork_src> cscope -b
执行结束后你可以在当前目录下发现cscope.out文件,这就是cscope建立的符号数据库。上面这个命令中,-b参数使得cscope不启动自带的用户界面,而仅仅建立符号数据库。

(2) 编辑D:\Program Files\Vim\_vimrc,添加如下内容。
cs a D:\soft\vxwork_src\cscope.out

如果你的源代码是C++,则可以将cpp等扩展名也加入到上面的命令中。
dir /s /b *.c *.h *cpp *.hpp > cscope.files

如果是Linux用户,则可以使用find命令实现同样的功能:
find $(pwd) -name "*.[ch]"

<think> 我们正在讨论在gVim中使用cscope进行SystemVerilog开发的方法。根据引用内容,我们知道需要安装ctags和cscope,并在vimrc中进行配置。引用[2]还提到了一些vim-cursorword插件的配置,以及关于Automatic-Verilog配置的提示(虽然具体配置未给出)。用户的需求是了解如何设置和使用cscope进行SystemVerilog开发。 步骤: 1. 确保安装了ctags和cscope。 2. 配置vimrc以支持cscope,并针对SystemVerilog文件进行设置。 3. 生成cscope数据库。 4. 在gVim中使用cscope进行代码搜索和跳转。 详细步骤: 第一步:安装ctags和cscopeWindows10上,我们可以下载ctags和cscopeWindows版本,并确保它们在系统的PATH环境变量中,这样gVim就可以调用它们。 第二步:配置vimrc 我们需要在vimrc中添加一些配置来启用cscope。以下是一个基本的配置示例: ```vim " 启用cscope if has("cscope") " 使用:cs add添加cscope数据库 set cscopetag " 使用cscope代替ctags set csto=0 " 先搜索cscope数据库,再搜索tags文件 set cscopeverbose " 添加数据库后显示信息 " 快捷键映射 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> endif ``` 另外,针对SystemVerilog,我们可能需要生成ctags和cscope数据库时使用特定的选项,因为默认可能不支持SystemVerilog。我们可以使用Universal Ctags(它支持SystemVerilog)代替Exuberant Ctags。 第三步:生成cscope数据库 在项目根目录下,使用以下命令生成cscope数据库: ```bash # 生成文件列表 find . -name "*.sv" -o -name "*.svh" -o -name "*.v" -o -name "*.vh" > cscope.files # 生成cscope数据库 cscope -b -q ``` 然后,在gVim中,使用命令添加数据库: ```vim :cs add /path/to/your/project/cscope.out ``` 第四步:使用cscope 在代码中,将光标放在要查找的符号上,然后使用快捷键进行查找,例如: - <C-\>g:查找符号的定义(global definition) - <C-\>s:查找所有引用该符号的地方(symbol) 注意:如果使用Universal Ctags,我们也可以生成tags文件,但cscope数据库已经可以用于跳转。 另外,引用[2]中提到的vim-cursorword插件配置,我们可以根据需要进行配置,它可以在光标停留在单词上时高亮显示,但不影响下划线(因为SystemVerilog中下划线常用)。配置已经给出,可以添加到vimrc中。 关于Automatic-Verilog配置,引用中并没有给出具体内容,但用户可能指的是自动生成实例化模块、自动例化等插件。如果需要,可以另外配置。 因此,总结在gVim中使用cscope进行SystemVerilog开发的方法: 1. 安装ctags(建议Universal Ctags)和cscope。 2. 配置vimrc,添加cscope设置和快捷键映射。 3. 在项目目录生成cscope数据库,并在gVim中加载。 4. 使用快捷键进行代码搜索和跳转。 注意:如果使用Windows,生成文件列表可以使用`dir /s/b *.sv *.svh *.v *.vh > cscope.files`代替`find`命令。 最后,我们可以生成相关问题。 </think>在gVim中使用cscope进行SystemVerilog开发,主要通过以下步骤实现: ### 1. **安装必要工具** - 安装[ctags](https://github.com/universal-ctags/ctags)(推荐Universal Ctags,支持SystemVerilog) - 安装[cscope](http://cscope.sourceforge.net/) - 在Windows中配置PATH环境变量确保命令行可调用 ### 2. **配置.vimrc文件** ```vim " 基础配置 set nocompatible filetype plugin indent on " cscope配置 if has("cscope") set cscopetag set csto=0 set cscopeverbose " 快捷键映射 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> endif ``` ### 3. **生成数据库** 在项目根目录执行: ```bash # 生成文件列表 find . -name "*.sv" -o -name "*.svh" -o -name "*.v" -o -name "*.vh" > cscope.files # 生成cscope数据库 cscope -b -q # 生成tags文件 ctags -R --languages=systemverilog,verilog . ``` ### 4. **在gVim中加载数据库** ```vim :cs add cscope.out :set tags=./tags ``` ### 5. **常用操作** | 快捷键 | 功能 | 示例场景 | |--------------|-----------------------|-----------------------------| | `Ctrl+\ g` | 跳转到定义 | 查看模块/类定义 | | `Ctrl+\ s` | 查找引用 | 追踪信号/函数调用 | | `Ctrl+\ c` | 查找调用该函数的位置 | 查看函数调用关系 | | `Ctrl+\ t` | 查找文本字符串 | 搜索特定标识符 | | `:cs show` | 查看已加载的数据库 | 确认数据库状态 | ### 6. **SystemVerilog专用优化** ```vim " 增强SystemVerilog支持 autocmd BufRead,BufNewFile *.sv set filetype=systemverilog let g:tagbar_type_systemverilog = { \ 'ctagstype': 'systemverilog', \ 'kinds': [ \ 'c:classes', \ 'm:modules', \ 't:tasks', \ 'f:functions', \ 'v:variables' \ ] \ } ``` ### 7. **注意事项** 1. 数据库需在代码更新后重新生成 2. 使用`:copen`查看搜索结果列表 3. Windows路径需使用正斜杠:`cs add C:/project/cscope.out` 4. 结合[vim-gutentags](https://github.com/ludovicchabant/vim-gutentags)可自动更新数据库 >[^1]: cscope支持函数/模块跳转和全局代码搜索 >[^2]: Vim配置需禁用光标下划线高亮避免影响SystemVerilog变量识别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值