En résumé, je recherche une fonctionnalité de complétion automatique active pour l'éditeur Vim. J'ai argumenté auparavant que Vim remplace complètement un IDE sous Linux et bien que ce soit certainement vrai, il lui manque une caractéristique importante: l'auto-complétion.
Je sais à propos de Ctrl+N, Intégration des Ctags exubérants , Taglist , cppcomplete et OmniCppComplete . Hélas, rien de tout cela ne correspond à ma description de "l'auto-complétion fonctionnelle":
class
ou while
. Tant pis.tags
doit à nouveau être mis à jour manuellement.Je suis conscient du fait que même les IDE les plus modernes et les plus complets n'offrent pas une bonne complétion du code C++. C'est pourquoi j'ai accepté le manque de Vim dans ce domaine jusqu'à présent. Mais je pense qu'un niveau fondamental de complétion de code n'est pas trop demander, mais est en fait nécessaire pour une utilisation productive. Je cherche donc quelque chose qui puisse accomplir au moins les choses suivantes.
Sensibilisation à la syntaxe . cppcomplete promet (mais ne donne pas pour moi), l'auto-complétion correcte, conforme à la portée, de ce qui suit:
variableName.abc
variableName->abc
typeName::abc
Et vraiment, toute autre chose est complètement inutile.
Configurabilité . Je dois spécifier (facilement) où se trouvent les fichiers source, et donc où le script obtient ses informations d'auto-complétion. En fait, mon répertoire contient un Makefile qui spécifie les chemins d’inclusion requis. Eclipse peut interpréter les informations qu’il contient. Pourquoi pas un script Vim?
Actualité . Dès que je change quelque chose dans mon fichier, je veux que l'auto-complétion reflète cela. Je fais pas je veux déclencher manuellement ctags
(ou quelque chose de comparable). En outre, les modifications doivent être incrémental, c’est-à-dire que si je n’ai modifié qu’un seul fichier, c’est complètement inacceptable pour ctags
pour ré-analyser l’arborescence complète être énorme).
Ai-je oublié quelque chose? N'hésitez pas à mettre à jour.
Je suis à l'aise avec beaucoup de configuration et/ou de bricolage, mais je ne souhaite pas programmer une solution à partir de zéro, et je ne suis pas doué pour le débogage de scripts Vim.
Une dernière remarque, je voudrais vraiment quelque chose de similaire pour Java et C #, mais je suppose que c’est trop espérer: ctags
n’analyse que les fichiers de code et Java et C # possède d’énormes frameworks précompilés qui devraient être indexés. Malheureusement, développer .NET sans IDE est encore plus un PITA que C++.
Essayez YouCompleteMe . Il utilise Clang via l'interface libclang, offrant une complétude sémantique C/C++/Objective-C. C'est un peu comme clang_complete, mais nettement plus rapide et avec une correspondance floue.
En plus de ce qui précède, YCM fournit également une complétion sémantique pour C #, Python, Go, TypeScript, etc. Il fournit également une complétion non sémantique basée sur l'identifiant pour les langages pour lesquels il ne prend pas en charge la prise en charge sémantique.
Il existe également clang_complete qui utilise le compilateur clang
pour fournir la complétion de code aux projets C++. Il y a une autre question avec conseils de dépannage pour ce plugin.
Le plugin semble fonctionner assez bien tant que le projet est compilé, mais il est excessivement lent pour les grands projets (puisqu'il tente une compilation complète pour générer la liste de balises).
comme demandé, voici le commentaire que j'ai donné plus tôt:
regardez ceci:
ce lien devrait vous aider si vous voulez utiliser monodevelop sur un MacOSX
Bonne chance et bon codage.
Je viens de trouver le projet Eclim lié à autre question . Cela semble assez prometteur, du moins pour l’intégration Java.
Je suis un peu en retard à la fête mais autocomplpop pourrait être utile.
Est-ce que quelqu'un a mentionné code_complete?
Mais vous n'avez pas aimé les balises, alors ce n'est probablement pas ce que vous recherchez ...