Vim ou Emacs sont-ils pratiques pour des langages comme .Net ou Java? [fermé]


18

Donc, je suis principalement un développeur .Net qui fait des choses en Java, Python et quelques autres de temps en temps. J'ai entendu beaucoup de gens féliciter Vim et Emacs pour augmenter considérablement leur efficacité une fois les bases définies. Je peux certainement voir combien de fonctionnalités pourraient être très utiles avec une pratique suffisante, et même croire que la courbe d'apprentissage en vaut probablement la peine. Cependant ... il semble que vous deviez vraiment être une sorte d'assistant de macros et de raccourcis clavier pour être aussi efficace dans Vim ou Emacs que le développeur moyen l'est dans Visual Studio, Netbeans, Eclipse ou d'autres plateformes. J'ai commencé à apprendre à utiliser Vim et je pense que certaines de ses fonctionnalités sont impressionnantes (édition de colonnes par exemple), mais il semble que la plupart des outils fournis par les IDE lourds ne puissent tout simplement pas être remplacés, achetez même le texte le plus enrichi éditeur.

  • génération de fichiers dbml pour Linq-to-SQL
  • Test automatisé
  • conception d'interfaces utilisateur
  • Création / organisation de projets et solutions

Je sais que Vim et Emacs peuvent faire beaucoup des mêmes choses très puissamment que VS (comme intellisense, refactoring, etc.) et il peut être en mesure de faire certains ou tous les exemples que j'ai fournis, mais est-il réaliste de dire qu'une personne travaillant sur ces plateformes bénéficierait réellement de Vim ou d'Emacs?


2
Nous travaillons dans Eclipse dans ma boutique, mais il y a un gars ici qui utilise Vim comme éditeur pimary et Eclipse juste pour la compilation et les tâches de type gestion de code.
Michael K

Réponses:


14

Vous avez un mélange de concepts en cours, ce qui n'est peut-être pas surprenant puisque VS combine beaucoup de fonctionnalités plutôt disparates. Une citation (de ce site) suggère qu'Emacs n'est pas un bon IDE, Unix est un bon IDE. L'idée étant que dans le monde Linux / Unix, vous comptez sur plusieurs outils spécialisés qui fonctionnent bien ensemble plutôt qu'un seul outil monolithique qui fait tout.

Maintenant, je programme principalement en C #, et j'utilise VS pour cela. J'aime aussi beaucoup Emacs et je l'utilise pour pratiquement tout le reste. Maintenant, comme vous le dites, ce que vous pouvez faire dans Emacs et ce qu'il vaut mieux faire dans Emacs sont distincts. Mais dans de nombreux cas, il ne s'agit pas d'un mappage 1 à 1 et il existe différentes façons d'atteindre les mêmes objectifs à l'aide d'un éditeur de texte et / ou d'autres outils.

À l'origine, j'allais aborder chacun de vos points, mais la réponse se résumait toujours à «oui, vous pourriez» sous une forme ou une autre. En règle générale, vous devez compter sur: 1) un outil extérieur (comme un concepteur d'interface utilisateur) pour générer du code pour vous, l'importer; 2) prise en charge de l'automatisation depuis l'intérieur de l'éditeur (comme le code Elisp dans Emacs) pour automatiser les tâches répétitives; ou 3) vous vous habitueriez à utiliser des outils textuels au lieu de visuels (comme utiliser MSBuild et écrire vos propres fichiers de projet au lieu de vous fier à la configuration de VS).

Dans le monde Emacs, vous n'avez pas d'outil qui fait tout, vous avez beaucoup d'outils et la capacité de développer plus d'outils selon vos besoins. Je ne le connais pas encore assez bien pour faire tout ça, donc j'utilise VS et je suis content des outils qu'il me donne. VS est un IDE vraiment puissant et vraiment bon. Maintenant, si je faisais Java, je devrais débattre de l'outil que j'utiliserais parce que je ne connais pas très bien Eclipse ou IntelliJ. Pour n'importe quelle autre langue, Emacs gagne à peu près parce que cela va faire beaucoup plus pour moi que n'importe quel autre éditeur de texte ou IDE à moitié fait que ces langues pourraient utiliser. (Sauf peut-être Smalltalk, mais c'est un cas unique.)


6

mais est-il réaliste de dire que quelqu'un travaillant sur ces plates-formes bénéficierait réellement de Vim ou Emacs?

Permettez-moi de vous donner mon exemple: je travaille sur un système qui est largement (mais pas à 100%) codé en C #. Le système ne peut pas être construit à partir de Visual Studio - il est beaucoup trop complexe. Par conséquent, je n'ai pas de fichier sln (certaines personnes ont essayé de le conserver même si nous ne construisons pas le produit avec, mais cela s'est avéré être une tâche impossible) et je n'ai pas les avantages d'intellisense, de la navigation dans le code, diagrammes de classes, etc. L'outil qui fonctionne pour moi est vim + ctags. Même ce n'est pas parfait (les ctags sont faciles à confondre), mais bien mieux que d'utiliser un éditeur de code inférieur sans prise en charge de la navigation dans le code.

Maintenant, je comprends que la plupart des développeurs .NET ou Java ne sont pas dans la même position que moi et ils sont probablement mieux lotis d'utiliser un IDE s'il a un bon éditeur de code ou au moins un complément qui améliore celui par défaut. Pour Visual Studio, il existe des modules complémentaires comme VsVim qui peuvent rendre l'expérience de codage plus agréable. Idem pour Eclipse AFAIK.


3

Je doute qu'il y en ait beaucoup qui utilisent exclusivement VIM ou Emacs. Mais je n'ai pas encore trouvé de développeur qui n'utilise pas d'éditeur de texte (que ce soit un de ceux-là ou autre chose) en raison d'un IDE complet pour certaines choses, souvent beaucoup de choses.

N'oubliez pas qu'il y a bien plus à faire que d'écrire du code Java, C # ou C ++. Il y a des scripts ANT, des makefiles, des fichiers XML, des fichiers de configuration de toutes sortes. Et pour de nombreuses petites tâches, le temps de démarrage de cet IDE peut simplement être trop long. Eclipse peut prendre quelques minutes pour démarrer, VS similaire. Pour changer rapidement quelque chose dans une seule source, ou simplement vérifier quelque chose dans un fichier connu, c'est trop long. Le chargement du fichier dans VIM ne prend que quelques secondes.


1
mais notepad ++ aussi.
Raffael

Je n'ai jamais utilisé celui-là, mais j'en ai vu d'autres en effet (je suis un VIM flunky :)).
jwenting

2

Je trouve que l'utilisation d'un IDE et de vim (mon éditeur préféré personnel) ne sont pas des concepts mutuellement exclusifs. Lors du développement .NET, j'ai généralement mis en place une combinaison de touches de raccourci qui ouvrira le fichier actuel sur lequel je travaille dans l'IDE dans vim et mettra le curseur au même endroit. De cette façon, si je veux faire le genre de chose que vim est génial, (comme utiliser des macros, l'édition verticale, la ré-indentation, la différence, etc.), alors je frappe le combo de touches et bang J'ai mon éditeur préféré, faites mes modifications, enregistrez le fichier et quittez, puis je suis de nouveau dans l'IDE (vous pouvez le configurer pour que le fichier se recharge automatiquement lorsqu'il est modifié en dehors de l'IDE dans VS). De cette façon, j'obtiens le meilleur des deux mondes.

J'avais l'habitude d'utiliser des langages de script pour manipuler des fichiers texte de manière compliquée. Une fois que j'ai découvert le pouvoir d'utiliser les macros de vim (et certaines autres fonctionnalités également), j'ai découvert que je pouvais faire ce genre de modifications / manipulations beaucoup plus rapidement et efficacement qu'avec un langage de script.

Il est très courant pour moi de générer un script shell pour faire des choses compliquées à l'aide de vim, d'exécuter le script shell que j'ai construit, puis de le jeter.

mes 2 cents :)


Ouais, j'ai joué avec quelques plugins pour VS pour me sauter dans emacs, utiliser emacs comme "fenêtre de l'éditeur de code", ou simplement utiliser les raccourcis clavier emacs. Je n'ai aimé aucun de ceux-là. Une macro pour ouvrir des emacs et sauter au même endroit du curseur semble cependant être une idée plutôt cool. Je devrais peut-être essayer ça. Je fais surtout du copier-coller entre les deux quand j'ai besoin de faire une lourde manipulation de texte.
CodexArcanum

0

Jetez un œil aux projets OpenIDE et Tests continus . Le premier se concentre sur l'ajout de la prise en charge du projet .NET à n'importe quel éditeur, y compris VIM et Emacs. L'autre est un lanceur de test continu similaire à AutoTest / pythons Sniffer / Autonose de ruby. Il peut fonctionner en tant que plugin VS ou autonome.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.