Omnicompletion будет работать только в том случае, если файл тегов содержит и определение класса, и объявление переменной.
Простое решение
В целом это означает, что вам необходимо сохранить и (повторно) сгенерировать теги file после частей class Blog { ... }
и $blog = new Blog();
, но до пытается $blog->
<C-X><C-O>
.
Это связано с тем, что омни-полная функция PHP будет искать объявление класса переменной $blog
в файле тегов.
(Кстати, если вы открыли файл тегов в буфере, перезагрузите его после его регенерации.)
Альтернативные
Документация vim (:help ft-php-omni
) также определяет способ, который не требует индексации переменной в файле тегов, а вместо этого использует специальный комментарий в предыдущей строке:
/* @var $myVar myClass */
$myVar->
Однако определение класса по-прежнему действительно должно быть в файле тегов, и комментарий требуется каждый раз, когда вы хотите использовать omni-complete. Так что ввод нового PHP-файла все равно не даст вам хорошего омни-завершения: (
Просто мысль
Может быть, можно сгенерировать на лету временный файл тегов (например, плагин taglist) только для несохраненного буфера и разрешить omni-complete использовать его тоже ?? Хотя я не большой хакер Vim ...