L'omnicomplétion ne fonctionnera que si le fichier de balises contient les deux la définition de la classe, y la déclaration de la variable.
Une solution simple
En général, cela signifie que vous devrez sauvegarder et (re)générer les étiquettes fichier après el class Blog { ... }
y $blog = new Blog();
pièces, mais avant en essayant $blog->
<C-X><C-O>
. En effet, la fonction omni-complète de PHP recherchera la déclaration de classe de l'objet $blog
dans le fichier de balises.
(BTW si vous avez ouvert le fichier de balises dans un tampon, rechargez-le après l'avoir régénéré).
Alternative
La documentation de vim ( :help ft-php-omni
) définit également une méthode qui ne nécessite pas que la variable soit indexée dans le fichier de balises, mais utilise à la place un commentaire spécifique sur la ligne précédente :
/* @var $myVar myClass */
$myVar->
Cependant, la définition de la classe reste fait doivent être dans le fichier de balises, et le commentaire est nécessaire chaque fois que vous voulez utiliser omni-complete. Donc taper dans un nouveau fichier PHP ne vous donnera toujours pas l'omni-complétion :(
Juste une pensée
Peut-être est-il possible de générer à la volée un fichier temporaire de balises (comme le plugin taglist) contenant uniquement le tampon non sauvegardé, et de permettre à omni-complete de l'utiliser également ? Je ne suis pas un grand hacker de vim cependant...
3 votes
J'ai travaillé avec Eclimd qui semble être une bonne alternative pour ajouter l'autocomplétion php d'Eclipse à Vim. eclim.sourceforge.net/index.html
3 votes
Je frémis à l'idée d'introduire un tout autre logiciel et un démon en cours d'exécution juste pour faire fonctionner quelque chose qui est déjà disponible en natif comme un script de Vim.