259 votes

Autocomplétion dans Vim

En un mot, je suis à la recherche d'un travail d'auto-complétion de la fonctionnalité de l'éditeur Vim. J'ai soutenu avant que Vim remplace complètement un IDE sous Linux et tout ce qui est certainement vrai, il manque un élément important: l'auto-complétion.

Je sais que sur Ctrl+N, Exuberant Ctags intégration, Taglist, cppcomplete et OmniCppComplete. Hélas, aucun de ces ajustements, ma description de "travail d'auto-complétion:"

  • Ctrl+N fonctionne très bien (seulement) si vous avez forgotton comment épeler classou while. Oh bien.
  • Ctags vous donne les rudiments, mais a beaucoup d'inconvénients.
  • Taglist est juste un Ctags wrapper et en tant que tel, hérite de la plupart de ses inconvénients (bien que cela fonctionne bien pour la liste des déclarations).
  • cppcomplete tout simplement ne fonctionne pas comme promis, et je ne peux pas comprendre ce que j'ai fait de mal, ou si c'est "travailler" correctement, et que les limitations sont de par leur conception.
  • OmniCppComplete semble avoir les mêmes problèmes que cppcomplete, c'est à dire l'auto-complétion ne fonctionne pas correctement. En outre, l' tags le fichier une fois de plus, doit être mis à jour manuellement.

Je suis conscient du fait que même pas moderne, complet IDEs offrir un bon de code C++ d'achèvement. C'est pourquoi j'ai accepté de Vim manque dans ce domaine jusqu'à présent. Mais je pense qu'un niveau fondamental de la complétion de code n'est pas trop demander, et il est en effet nécessaire pour une utilisation. Donc, je suis à la recherche de quelque chose qui peut accomplir au moins les choses suivantes.

  • La syntaxe de la conscience. cppcomplete promesses (mais ne remet pas pour moi), la correction, la portée conscient de l'auto-complétion des opérations suivantes:

    variableName.abc
    variableName->abc
    typeName::abc
    

    Et vraiment, tout le reste est complètement inutile.

  • Configurabilité. J'ai besoin de spécifier (facilement) où les fichiers source sont, et où, par conséquent, le script reçoit à son auto-complétion des informations. En fait, j'ai un Makefile dans mon répertoire, qui spécifie le chemins à inclure. Eclipse peut interpréter l'information qui s'y trouve, pourquoi pas un script Vim?

  • De l'actualité. Dès que je change quelque chose dans mon fichier, je veux l'auto-complétion pour en tenir compte. Je n'ai pas envie de déclencher manuellement ctags (ou quelque chose de comparable). Aussi, des modifications devraient être incrémentale, c'est à dire quand j'ai changé qu'un seul fichier, c'est complètement inacceptable pour ctags de l'analyser à nouveau l'ensemble de l'arborescence du répertoire (qui peut être énorme).

Ai-je oublié quelque chose? Hésitez pas à mettre à jour.

Je suis à l'aise avec beaucoup de configuration et/ou de bricolage, mais je ne veux pas de programme de une solution à partir de zéro, et je ne suis pas bon à débogage de 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 seulement traite les fichiers de code et Java et en C# énormes, précompilés cadres, qui doivent être indexés. Malheureusement, le développement .NET sans IDE est encore plus d'un pain PITA que C++.

174voto

Valloric Points 1380

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.

36voto

Konrad Rudolph Points 231505

Il y a aussi clang_complete qui utilise l' clang compilateur pour fournir la complétion de 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 compile, mais il est trop lent pour les grands projets (depuis, il tente une compilation complète pour générer la liste des balises).

6voto

Ric Tokyo Points 5465

conformément à l'a demandé, voici le commentaire que j'ai donné plus haut:

jetez un oeil à ceci:

ce lien devrait vous aider si vous souhaitez utiliser monodevelop sur MacOSX

Bonne chance et amusez-vous.

6voto

Konrad Rudolph Points 231505

Je viens de trouver le projet Eclim lié dans une autre question . Cela semble très prometteur, au moins pour l'intégration de Java.

3voto

romainl Points 55506

Je suis un peu en retard à la fête mais autocomplpop pourrait être utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X