Vim/Cscope 教程


Cscope是一个非常方便的工具, 它会为你的编辑器(即Vim)带来很好的舒适性. 幸运的是, Cscope 已经被 Vim 在内部集成.

这个教程向你介绍了 Vim 内建的 Cscope 支持,以及一套让搜索更方便的方法.

假设你知道使用 vi 风格编辑器的基本知识, 但是不需要任何关于Vim的特定知识 (会简单介绍一些用得到的 Vim 特有功能——如多窗口). 你也无需知道任何关于Cscope的知识: 我们会逐步介绍一些基本的东西.

简而言之,Vim 的 Cscope 支持很像你用过的 Vim 的 ctags 功能。但是因为 Cscope 的搜索类型比 ctags 更多,所以会有些不同。

这是一个实践教程, 所以要启动一个 shell , 然后跟着下面的步骤做:

1. 如果你的电脑还没有Cscope,先下载并安装。理想状态下, 你的 Vim 应该是 6.x 版本, 但是用 Vim 5 以上的版本都可以获得大部分功能 (无法使用垂直分割, 但是通过修改相关文件可以使用水平分割).

注意: 如果你的 Vim 版本在编译时没有指定 '--enable-cscope' 选项, 你需要重新编译和配置 Vim 。 大部分随 Linux 发行版安装的 Vim 二进制文件都使能了 Cscope 插件。

2. 下载 cscope_maps.vim 文件, 让 Vim 在启动时读取它. 如果你用的是 Vim 6.x, 把它复制到 $HOME/.vim/plugin 目录下即可 (或者其他插件子目录). 如果你用的是 Vim 5.x, 只能把 cscope_maps 文件的内容复制到 $HOME/.vimrc 文件中, 或者黏贴 "source cscope_maps.vim" 一行到 .vimrc 文件.

3. 进入一个有C代码文件的目录, 执行 'cscope -R' ( '-R' 会让 Cscope 遍历所有子目录, 否则只会检测当前目录). 由于没有使用 '-b' 选项 (它告诉 Cscope 只建立数据库后就退出), Cscope 会打开一个基于 curses 的 GUI 界面. 在这里尝试一些搜索 (提示: 使用方向键可以在搜索类型之间移动, 用 'tab' 键来在搜索类型和搜索结果之间做出选择). 在搜索结果的左边敲入数字, Cscope 就会在 Vim 中打开它的位置. www.bkjia.com (除非你把 EDITOR 环境变量设为了 Vim 之外的东西). 关闭 Vim, 就会返回到离开 Cscope GUI 时的位置. 有趣。

Cscope 接口有个大问题; 每次要执行新的搜索时都要关闭 Vim. 这就是 Vim 插件. 用 CTRL-D 关闭 Cscope.

4. 启动 Vim. 如果你愿意, 可以在启动时带一个C语言的标识符 (入: 'vim -t main'), 然后就会跳到代码中该标识符定义的地方.

5. 把光标移到一个在程序中多次使用的标识符上. 键入 "CTRL-\ s" (先敲CTRL-\, 然后敲 's') , 应该会在 Vim 窗口的底部看到一个菜单,显示了程序中所有用到这个标识符的地方. 选择其中的一个然后点回车, 就会跳到那里. 类似 ctags, 可以点击 "CTRL-t" 调回搜索之前的位置 (也可以多搜索几个,然后用 CTRL-t 依次释放).

助记符: '\'键在']'键的右边, 用于 ctags 搜索.

6. 尝试同样的搜索, 但是这次用 "CTRL-spacebar s" 组合键. 这一次,Vim 窗口会水平分割为两个, Cscope 的搜索结果将在新的窗口上显示.[如果你从来没用过 Vim 的多窗口: 用 'CTRL-W w' (或 CTRL-W 和方向键, 或 CTRL-W 和 h/j/k/l )在窗口之间移动, 用 'CTRL-W c' (或 ':q')关闭一个窗口, 用 'CTRL-W o'只显示当前窗口, 用 'CTRL-W s' (或 'CTRL-W v' 垂直分割)将窗口分割为两个, 用 ':spl[it] filename]' 在分割的新窗口打开文件。

Mnemonic: 在两个分割的窗口之间会有一条空白的间隔.

7. 现在用 "CTRL-spacebar CTRL-spacebar s"(只需按住CTRL连按两次空格)进行同样的搜索. 如果你无法快速的按键, 就打开 cscope_maps.vim 脚本,将 Vim 的超时设置改为注释 [事实上,我通常关闭 Vim 的超时]. 这一次 Vim 的窗口会被垂直分割 (注意: 在 Vim 5.x 上是无法实现的).

  • 1
  • 2
  • 下一页

相关内容