vim - vim 和 emacs 中的代码导航

标签 vim emacs tags cscope

在 emacs 和 vim 中我最怀念的 IDE 功能是代码导航和查找用法。这两个编辑器都具有以下相似的功能:

  • 标签 - 来自指定文件的标识符被编入索引,当您在作为标识符的单词上按下快捷方式时,您将被导航到那里
  • CScope - 它允许您导航到标识符的“用法”

  • 据我了解,这两个系统都非常不精确。如果我们有同名的相似标识符,则标签和作用域可能会将它们混淆。有没有更好的替代方案,它们到底有多精确?

    最佳答案

    我在 Emacs 中使用 cscope 和语义。对我来说就足够了。

    在 cscope 中,我经常使用的两个函数是 cscope-find-global-definition 和 cscope-find-this-symbol。前面的函数是相当精确的。

    C-c s s         Find symbol. 
    C-c s d         Find global definition.
    

    至于语义(动态索引,不需要生成TAGS)。
    (global-set-key [f8] 'semantic-ia-fast-jump) ;; jump to definition.
    (global-set-key [S-f8]                       ;; jump back
                    (lambda ()
                      (interactive)
                      (if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
                         (error "Semantic Bookmark ring is currently empty"))
                      (let* ((ring (oref semantic-mru-bookmark-ring ring))
                             (alist (semantic-mrub-ring-to-assoc-list ring))
                             (first (cdr (car alist))))
                        (if (semantic-equivalent-tag-p (oref first tag)
                                                       (semantic-current-tag))
                            (setq first (cdr (car (cdr alist)))))
                        (semantic-mrub-switch-tags first))))
    

    关于vim - vim 和 emacs 中的代码导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13440613/

    相关文章:

    vim - VIM:查找和替换单词的前N个出现

    vim - 将 vim 中的 grep 搜索限制为与当前文件具有相同扩展名的文件

    python - 如何禁用在标签栏中显示特定文件类型的可见性符号?

    vim - 在你完成我改变颜色设置

    java - JSP 调用片段与标记文件中的打印变量

    string - elisp 中的转义字符串

    javascript - 在 emacs 中 Rails 的 *.js.erb 是否有任何模式,或者我必须使用 TextMate?

    datetime - 如何使用Emacs Lisp在Emacs中添加日期?

    javascript - WP API 获取帖子标签

    swift - 通过标签值引用 UIButton