En un mot, je recherche une fonctionnalité de saisie semi-automatique fonctionnelle pour l'éditeur Vim. J'ai déjà soutenu que Vim remplace complètement un IDE sous Linux et bien que cela soit certainement vrai, il manque une caractéristique importante: la saisie semi-automatique.
Je connais Ctrl+ N, l' intégration Exuberant Ctags , Taglist , cppcomplete et OmniCppComplete . Hélas, rien de tout cela ne correspond à ma description de "la saisie semi-automatique de travail:"
- Ctrl+N fonctionne bien (uniquement) si vous avez oublié comment épeler
class
, ouwhile
. Tant pis. - Ctags vous donne les rudiments mais a beaucoup d'inconvénients.
- Taglist est juste un wrapper Ctags et en tant que tel, hérite de la plupart de ses inconvénients (bien qu'il fonctionne bien pour lister les déclarations).
- cppcomplete ne fonctionne tout simplement pas comme promis, et je ne peux pas comprendre ce que j'ai fait de mal, ou s'il «fonctionne» correctement et que les limitations sont de par leur conception.
- OmniCppComplete semble avoir les mêmes problèmes que cppcomplete, c'est-à-dire que l'auto-complétion ne fonctionne pas correctement. De plus, le
tags
fichier doit à nouveau être mis à jour manuellement.
Je suis conscient du fait que même les IDE modernes ne proposent pas une bonne complétion de 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 et est en fait requis pour une utilisation productive. Je cherche donc quelque chose qui puisse accomplir au moins les choses suivantes.
Connaissance de la syntaxe . cppcomplete promesses (mais ne tient pas pour moi), auto-complétion correcte et consciente de la portée des éléments suivants:
variableName.abc variableName->abc typeName::abc
Et vraiment, tout le reste est complètement inutile.
Configurabilité . J'ai besoin de spécifier (facilement) où se trouvent les fichiers source, et donc d'où le script obtient ses informations d'auto-complétion. En fait, j'ai un Makefile dans mon répertoire qui spécifie les chemins d'inclusion requis. Eclipse peut interpréter les informations qui s'y trouvent, pourquoi pas un script Vim également?
Actualité . Dès que je change quelque chose dans mon fichier, je veux que l'auto-complétion reflète cela. Je ne pas envie de déclencher manuellement
ctags
(ou quelque chose de comparable). En outre, les changements devraient être supplémentaires , à savoir quand j'ai changé un seul fichier , il est tout à fait inacceptable pourctags
la re-analyser l'arborescence du répertoire entier (qui peut ê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 veux pas programmer une solution à partir de zéro, et je ne suis pas bon pour déboguer les scripts Vim.
Une dernière note, j'aimerais vraiment quelque chose de similaire pour Java et C #, mais je suppose que c'est trop à espérer: ctags
seuls les fichiers de code analysent et Java et C # ont d'énormes cadres précompilés qui devraient être indexés. Malheureusement, développer .NET sans IDE est encore plus un PITA que C ++.
la source
sh
(ce qui signifie que c'est dans ma bibliothèque) et sont suivis de l'abréviation de ma classe. Par exempleshP
pour laParser
classe. Ensuite, tout ce que vous devez faire est d'écrireshP
et d'appuyer sur CTRL + p (ou CTRL + n si vous voulez) et d'obtenir les membres de la classe de la dernière utilisation à la première (ou du premier à la dernière si CTRL + n)clang_complete
est techniquement le plus sonore mais excessivement lent en raison du manque de mise en cache des résultats et de la compilation partielle. Je dois admettre que je n'ai pas essayé toutes les réponses car certaines nécessitent une configuration compliquée et longue. Je retiendrai mon souffle pour un plugin utilisable maintenant que clang permet enfin aux développeurs de construire des AST à partir de sources C ++ (jusqu'à présent, il n'y avait pas de bons analyseurs gratuits pour C ++ disponibles).clang_complete
récemment? Il peut être utilisélibclang
avec la mise en cache maintenant et devrait donc être plus rapide.formatted like this
.)Réponses:
Essayez YouCompleteMe . Il utilise Clang via l'interface libclang, offrant une complétion sémantique C / C ++ / Objective-C. C'est un peu comme clang_complete, mais beaucoup 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.
la source
Il y a aussi clang_complete qui utilise le
clang
compilateur pour fournir l'achèvement du code pour les projets C ++. Il y a une autre question avec des conseils de dépannage pour ce plugin.Le plugin semble fonctionner assez bien tant que le projet se compile, mais il est excessivement lent pour les grands projets (car il tente une compilation complète pour générer la liste des balises).
la source
clang_complete
plugin fonctionne bien sur Cygwin et Windows. Je ne peux rien dire sur les grands projets car je n'en ai pas. :)comme demandé, voici le commentaire que j'ai fait plus tôt:
jetez un oeil à ceci:
ce lien devrait vous aider si vous souhaitez utiliser monodevelop sur un MacOSX
Bonne chance et bon codage.
la source
Je viens de trouver le projet Eclim lié dans une autre question . Cela semble assez prometteur, du moins pour l'intégration Java.
la source
Je suis un peu en retard à la fête, mais l' autocomplpop pourrait être utile.
la source
est ce que vous cherchez quelque chose comme intellisense?
insevim semble résoudre le problème.
lien vers les captures d'écran ici
la source
Quelqu'un a-t-il mentionné code_complete?
Mais vous n'avez pas aimé les ctags, donc ce n'est probablement pas ce que vous cherchez ...
la source