我知道可以使用Ctrl+]跳转到 Vim 中的定义,这可以与 ctags 或 Cscope 结合使用。在使用 PHP 时,我正在寻找一个更准确的替代 ctags 和 Cscope 的方法。有时有多种可能的结果可供选择或误报。我只想跳转到光标下任何内容的实际定义。理想情况下,这应该适用于变量、函数、常量和类。
我不明白为什么这不能通过分析文件来完成。通过学习和定制,我终于克服了我对 Vim 的所有其他烦恼/误解,所以如果我能解决这个问题,那就太棒了。
另外,其他人是否同意 Cscope 和 ctags 对 PHP 不够准确,还是我做错了什么?
更新
4 年后,我仍在使用 Vim 和 PHP,仍然遇到这个问题。我尝试过 eclim、ctags、exubarant-ctags、universal-ctags 和 cscope。我尝试将各种参数传递给这些程序,以使它们生成更好的标签。所有这些选项的体验都非常差。
但我现在更好地理解了这个问题。这些程序生成的标签可能没有任何问题。问题似乎在于,当您在 Vim 或 Neovim 中按Ctrl+]时,它只会查找具有该名称的标签。它不会查看您正在编辑的文件的上下文以查看它应该使用哪个名称的标签。它甚至不了解您正在编辑的语言,并从该语言的代码中查找标签。
有没有办法让vim根据上下文更智能地搜索标签文件,然后跳转到最有可能的位置?你知道,就像在一个好的 IDE 中会发生什么?