在 emacs 中使用 cscope

        阅读代码在学习编程或开发软件的过程中十分重要,几个月来阅读和改写代码的经历也让我意识到,拥有简洁好用的工具对更快更好地理解代码是多么关键。cscope 就是一个非常好的代码分析工具,当其与 emacs 双剑合璧时,甚至能带来酣畅淋漓的快感。

        还要感谢春哥,我至今 emacs 的大部分配置都来自于春哥。当我今年早些时候从配置文件中找到 cscope 的有关配置时,因为好奇而上网搜了一下,略作小试。而几个月后,当我自豪地给身边的人介绍起 cscope 的时候,我知道,恐怕我再也离不开它了。

  • 安装配置
  •         能在 emacs 中使用的 cscope 叫做 xcscope,安装很简单:

    # apt-get install xcscope-el
    

            安装完成后,只需要在 .emacs 文件中加入下面的配置:

    (require 'xcscope)
    
  • 生成代码数据库
  •         通常,一个项目的代码都在一个文件夹(包括其子文件夹)下,在搜索代码中的某个变量或函数时,我们希望搜索的范围是该项目的所有代码。为此,首先在项目的最高层目录下执行下面的命令生成代码数据库:

    $ cscope-indexer -r
    

    其中的 -r 选项代表递归扫面各个子目录。该命令执行完后会在当前目录下生成 cscope-files 和 cscope.out 两个文件,其中包含着项目中的文件名、变量函数名等信息,供检索时使用。

  • 使用方法——快捷键
  •         进行完上述步骤后,在浏览代码时就可以直接用快捷键进行查找等操作了。xcscope 的快捷键都是绑定到 C-c s 前缀上的,如果嫌麻烦,可以绑定到其他键上。但就我的使用感受来说,用默认快捷键并不麻烦。主要快捷键如下(英文也不难理解,还可以方便记忆):

    C-c s s         Find symbol.
    C-c s d         Find global definition.
    C-c s g         Find global definition (alternate binding).
    C-c s G         Find global definition without prompting.
    C-c s c         Find functions calling a function.
    C-c s C         Find called functions.
    C-c s t         Find text string.
    C-c s e         Find egrep pattern.
    C-c s f         Find a file.
    C-c s i         Find files #including a file.
    

            搜索出的结果会显示在一个叫做 cscope 的 buffer 中,包含文件名、行号和相应行的具体内容。当光标在某一条目上时回车可以直接跳转到相应位置。在列出的结果间可以通过 n 和 p 两个键跳转:

    n         下一个 symbol。
    p         上一个 symbol。
    N         下一个文件。
    P         上一个文件。
    

        基本的使用方法就如上所示。相信在它的帮助下,阅读代码会变得更轻松。

发表评论

电子邮件地址不会被公开。 必填项已用*标注