L'auto-complétion de Vim
en bref, je cherche une fonction qui fonctionne autocompletion pour l'éditeur Vim. J'ai fait valoir avant que Vim remplace complètement un IDE sous Linux et bien que ce soit certainement vrai, il manque une caractéristique importante: autocompletion.
je sais à propos de Ctrl + N , Exuberant Ctags intégration , Taglist , cppcomplete et OmniCppComplete . Hélas, aucun de ceux-ci ne correspond à ma description de "l'autocomplétion de travail: "
- Ctrl + N" 1519150920 fonctionne bien (seulement) si vous avez oublié comment épeler
class
, ouwhile
. Oh bien. - Ctags vous donne les rudiments mais a beaucoup d'inconvénients.
- Taglist est juste un emballage Ctags et, en tant que tel, hérite de la plupart de ses inconvénients (bien qu'il fonctionne bien pour liste déclarations).
- cppcomplete ne fonctionne tout simplement pas comme promis, et je ne peux pas comprendre ce que j'ai fait de mal, ou si elle "fonctionne" correctement et les limites sont par conception.
- OmniCppComplete semble avoir les mêmes problèmes que cppcomplete, c'est à dire l'auto-complétion ne fonctionne pas correctement. De plus, le fichier
tags
doit de nouveau être mis à jour manuellement.
je suis conscient du fait que même les IDEs modernes et complets n'offrent pas de bonne fin de code C++. C'est pourquoi J'ai accepté le manque de Vim dans ce domaine jusqu'à maintenant. Mais je pense qu'un niveau fondamental d'achèvement de code n'est pas trop demander, et est en fait nécessaire pour une utilisation productive. Donc je suis chercher quelque chose qui peut accomplir au moins les choses suivantes.
-
syntaxe awareness . cppcomplete promesses (mais ne remet pas pour moi), la correction, la portée conscient de l'auto-complétion de ce qui suit:
variableName.abc variableName->abc typeName::abc
Et vraiment, tout le reste est complètement inutile.
-
configurabilité . J'ai besoin de spécifier (facilement) où sont les fichiers source, et donc 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 include requis. Eclipse peut interpréter les informations qui s'y trouvent, pourquoi pas un script Vim?
-
l'actualité . Dès que je change quelque chose dans mon fichier, je veux que l'auto-completion reflète ceci. Je ne pas veulent déclencher manuellement
ctags
(ou quelque chose de comparable). En outre, les changements devraient être incrémental , c.-à-d. quand je n'ai changé qu'un seul fichier, c'est complètement inacceptable pourctags
pour re-analyser l'arbre du répertoire entier (qui peut être énorme).
ai-je oublié quelque chose? Hésitez pas à mettre à jour.
je suis à l'aise avec pas mal de configuration et/ou bricolage mais je ne je veux programmer une solution à partir de zéro, et je ne suis pas bon pour déboguer les scripts Vim.
une dernière remarque, j'aimerais vraiment quelque chose de similaire pour Java et C# mais je suppose que c'est trop espérer pour: ctags
ne analyse que les fichiers de code et les deux Java et C# ont d'énormes cadres précompilés qui devraient être indexés. Malheureusement, developing. net without an IDE est encore plus un PITA que C++.
7 réponses
Try YouCompleteMe . Il utilise Clang à travers 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 des correspondances floues.
en plus de ce qui précède, YCM fournit également l'achèvement sémantique pour C#, Python, Go, TypeScript, etc. Il fournit également une complétion Non sémantique, basée sur des identificateurs pour les langues pour lesquelles il n'a pas de support sémantique.
il y a aussi clang_complete qui utilise le clang
compilateur pour fournir l'achèvement de code pour les projets c++. Il ya une autre question avec conseils de dépannage pour ce plugin.
le plugin semble fonctionner assez bien tant que le projet compile, mais est d'une lenteur prohibitive pour les grands projets (puisqu'il tente une compilation complète pour générer liste des balises).
comme demandé, voici le commentaire que j'ai donné plus tôt:
Regardez ceci:
- Vim intégration de MonoDevelop pour .net des trucs au moins..
- OmniCompletion
ce lien devrait vous aider si vous voulez utiliser monodevelop sur un MacOSX
bonne chance et codage heureux.
je viens de trouver le projet Eclim lié dans une autre question . Cela semble très prometteur, du moins pour L'intégration Java.
je suis un peu en retard à la fête mais autocomplpop pourrait être utile.
Quelqu'un a-t-il mentionné code_complete?
Mais vous n'avez pas aimé ctags, donc ce n'est probablement pas ce que vous cherchez...