VIM - 针对PHP的ctags/Cscope更准确的替代/解决方法?

sti*_*g_1 13 php vim ctags cscope

我知道可以使用Ctrl+ ]跳转到Vim中的定义,这可以与ctags或Cscope一起使用.在使用PHP时,我正在寻找更准确的替代ctags和Cscope.有时候有多种可能的结果可供选择或误报.我只是想跳到的任何光标下实际定义.理想情况下,这应该适用于变量,函数,常量和类.

我不明白为什么通过分析文件无法做到这一点.我终于通过学习和定制来克服我对Vim的所有其他烦恼/误解,所以如果我能指出这个,那就太棒了.

另外,其他人是否同意Cscope和ctags对PHP不够准确或者我做错了什么?

UPDATE

4年后,我仍在使用Vim和PHP,但仍然遇到这个问题.我尝试过eclim,ctags,exubarant-ctags,universal-ctags和cscope.我已经尝试将各种参数传递给这些程序,以使它们生成更好的标签.所有这些选择的经验都非常糟糕.

但我现在明白了这个问题.这些程序生成的标签可能没有任何问题.问题似乎是当你在Vim或Neovim中按Ctrl+ ]时,它只是按该名称查找标签.它不会查看您正在编辑的文件的上下文,以查看它应该使用的名称.它甚至不了解您正在编辑的语言,并从该语言的代码中查找标签.有没有办法根据上下文更智能地通过标签文件进行vim搜索,然后跳转到最可能的位置?你知道,好像在一个好的IDE里会发生什么?

sti*_*g_1 1

PHP 不是一种设计良好的语言,而且它不是静态类型的。因此,尚不具备制作任何可在现实世界项目中实际使用的良好工具的基础。IDE、语言服务器以及 Vim 和 Neovim 插件只能了解语言允许的尽可能多的代码。可以用尽可能多的类型在 PHP 中编写非常一致的代码,并且只使用该语言的有限子集,以便工具可以理解它。然而,如果您的团队有能力编写那么好的 PHP 代码,他们就足以用设计得更好的语言重写代码,这种语言可以支持更好的工具,比如 Kotlin,它也有很好的 IDE 支持。