Более точная альтернатива / обходной путь к ctags / Cscope для PHP?

Я знаю, что можно использовать Ctrl + ] , чтобы перейти к определению в Vim, и это может работать вместе с ctags или Cscope. Я ищу более точную альтернативу как ctags, так и Cscope при работе с PHP. Иногда есть несколько возможных результатов на выбор или ложные срабатывания. Я хочу только перейти к фактическому определению того, что находится под курсором.В идеале это должно работать для переменных, функций, констант и классов.

Я не понимаю, почему этого нельзя сделать, анализируя файлы. Я, наконец, преодолел почти все остальные раздражения / недоразумения, возникающие у меня с Vim, изучив и настроив, так что, если бы я мог решить это, было бы здорово.

Кроме того, согласны ли другие с тем, что Cscope и ctags недостаточно точны для PHP или я что-то делаю не так?

UPDATE

Спустя 4 года я все еще использую Vim с PHP, и эта проблема все еще не устранена. Я пробовал eclim, ctags, exubarant-ctags, universal-ctags и cscope. Я пробовал передавать этим программам различные аргументы, чтобы заставить их создавать более качественные теги. Опыт работы со всеми этими вариантами оставляет желать лучшего.

Но теперь я гораздо лучше понимаю проблему. Возможно, в тегах, созданных этими программами, нет ничего плохого. Проблема, похоже, в том, что когда вы нажимаете Ctrl + ] в Vim или Neovim, он просто ищет тег с таким именем. Он не смотрит на контекст файла, который вы редактируете, чтобы увидеть, какой тег с таким именем он должен использовать. Он даже не понимает, на каком языке вы редактируете, и ищет теги в коде на этом языке.

Есть ли способ сделать так, чтобы vim выполнял более интеллектуальный поиск по файлу тегов в зависимости от контекста, а затем переходил к наиболее вероятному месту? Знаете, что могло бы случиться внутри хорошей IDE?

13
задан jww 18 September 2019 в 05:56
поделиться