web-dev-qa-db-fra.com

Quelles sont les efficacités offertes par Emacs ou Vim vs Eclipse?

J'ai commencé à coder il y a environ 5 ans. J'ai été présenté par le biais de Java et Eclipse qui ont tous deux un stigmate important attaché à la communauté de programmation. Un certain nombre de personnes dans l'entreprise que je suis actuellement stagiaire préfèrent emacs ou vim. Je ne vois pas comment un L'éditeur de texte de base est plus rapide ou plus facile qu'un IDE en général, bien que j'apprécie que certaines choses comme la construction tendent à être plus rapides à partir de la ligne de commande.

S'agit-il d'un club de "vieux garçons" ou peut-il être plus efficace de programmer un projet de cette manière?

Pouvez-vous fournir des cas d'utilisation à démontrer? Si je préconisais Eclipse, je dirais que le refactoring et l'auto-complétion sont des outils assez pratiques.

Gav

74
gav

J'ai commencé dans des IDE comme Eclipse, mais je suis passé à Vim il y a environ 2 ans.

Raisons pour lesquelles vous voudrez peut-être utiliser un éditeur en mode texte:

  • Il peut être utilisé comme un IDE pour à peu près n'importe quelle langue (vous l'apprenez une fois et l'utilisez pour tout)
  • Il peut faire toutes ces choses sophistiquées comme l'auto-complétion, la refactorisation et bien d'autres opérations complexes, que vous pouvez étendre en ajoutant des macros ou des plug-ins
  • Il fonctionne à peu près partout (et peut être utilisé via un shell SSH)
  • Vous n'avez pas besoin d'un Go de RAM pour le faire fonctionner

Si vous persévérez vraiment, vous constaterez que travailler dans un éditeur comme celui-ci sera finalement plus rapide, et deviendra en fait une sorte de "mémoire musculaire". Cela signifie que vous pouvez coder sans ralentir pour réfléchir au processus.

47
Aram Verstegen

Vim/Emacs

  • Écriture de code très rapide/efficace
  • Faible encombrement mémoire
  • Accès rapide à la ligne de commande
  • Des possibilités infinies grâce aux scripts/plugins
  • Ne jamais quitter le clavier

Eclipse

  • Fonctionnalité complète IDE pour plusieurs langues
  • Excellent support de refactoring

Tous

  • Multiplateforme
  • Riche en fonctionnalités
  • Extensible via des plugins

Je me retrouve généralement à écrire des volumes de code via vim et à effectuer des tâches de débogage via mon IDE. La connaissance de la base de code est certainement un facteur, car un IDE est un excellent outil pour sauter et apprendre du code source inconnu.

56
Corey D

L'argument "Eclipse pour Java" est un argument différent de "Eclipse pour [quelque chose qui n'est pas Java]". Eclipse fait du rock pour Java.

Je veux dire, vi est comme un tournevis, ou peut-être un couteau suisse, et Eclipse est comme un gros broyeur combo CNC et un épandeur d'asphalte. Vous ne les comparez pas exactement, vous utilisez simplement les deux.

De plus, travaillez-vous à l'intérieur de quelque chose de géant, que vous connaissez peu, mais qu'Eclipse comprend? Un exemple serait de travailler sur Eclipse lui-même. Ici, Eclipse a une visibilité parfaite, une prise en charge totale des langues et vous avez besoin des invites de toast et des liens de documentation.

Mais si vous tapez un programme Ruby pour convertir une base de données SQL de 100 lignes, Eclipse n'ajoute pas beaucoup de valeur, surtout compte tenu de ses bagages.

Il est également essentiel de configurer vi correctement, sinon vous ne refuserez pas l'appel. Autoindent, showmatch, gestion des onglets et diverses autres options doivent être définis. Vous devriez avoir un moyen simple de générer un fichier de balises. Google peut trouver des générateurs de balises, ou tout simplement en écrire un à partir de zéro, avec quelques lignes de shellcode et sed (1).

Je ne considère pas le refactoring comme un critère. Ce n'est pas quelque chose que vous faites une fois par heure ou même une fois par jour. Bien sûr, lancez le grand IDE lorsque vous avez besoin de refactoriser. Oh, et ne vous attendez pas à une refactorisation automatisée de tout sauf Java.

Enfin, vi peut réellement faire beaucoup de choses que le IDE ne peut pas commencer à faire. La substitution globale d'expression régulière groupée est une sorte de moteur de refactorisation généralisé. Pour apprécier la gestalt de vi vous devez apprendre le mode ligne (":"). Bref, c'est comme avoir sed (1) dans votre éditeur.

28
DigitalRoss

Tout dépend de ce que vous voulez/attendez et de votre modèle d'utilisation.

Si vous cherchez un Java IDE, Eclipse est difficile à battre. Il est écrit en Java, pour Java, par Java les gens.

Si vous cherchez un outil pour modifier rapidement des fichiers à partir de la ligne de commande, Emacs ou vi conviennent tous les deux.

Si vous cherchez un outil à partir duquel vous ne devez jamais quitter car il peut faire tout ce que vous voulez (envoyer/lire du courrier, gérer des projets, des listes de tâches, compiler, déboguer, etc. etc. etc.), alors Emacs est plus "efficace".

Si vous cherchez des raisons de changer d'éditeur, déterminez ce que vous voulez. Si vous voulez une meilleure Eclipse, vi et Emacs ne vous donneront pas cela, restez sur Eclipse.

Si vous cherchez un petit éditeur agile, vi fera l'affaire.

Si vous cherchez l'éditeur finalement extensible, Emacs est la solution.

Quel que soit l'outil que vous décidez d'utiliser, plongez-vous. Apprenez tous les tenants et aboutissants, étendez-le pour répondre à vos besoins. Utilisez-le à ses limites et devenez efficace dans son utilisation.

23
Trey Jackson

Emacs peut être un puissant IDE, mais étant passé d'Emacs à Eclipse, je dois dire que je n'y retournerai jamais. Eclipse offre juste tellement de fonctionnalités que vous ne pouvez pas accéder à Emacs.

Mylyn et les vues étendues des données et des fichiers que j'utilise, l'interface utilisateur de débogage, l'interface utilisateur CVS, sont toutes intégrées et faciles à obtenir et à utiliser. Je vais utiliser un peu la souris pour les obtenir.

15
RC.

Tout d'abord. VIM est plus productif pour la programmation qu'Eclipse. Votre productivité personnelle dans VIM peut être abyssale, mais le plafond potentiel de VIM = est beaucoup plus élevé. C'est un fait.

VIM est un art martial. Cela ne semble pas naturel lorsque vous l'utilisez pour la première fois. Et vous ne pouvez même pas le faire fonctionner. Il faut des années de pratique pour devenir progressivement productif. Vous vous concentrez sur la maîtrise d'un petit détail au début. Lentement, tous ces bits que vous maîtrisez s'additionnent jusqu'à ce que le texte s'écoule sans effort du bout de vos doigts sur l'écran. Des modifications compliquées qui feraient soupirer votre collègue sauteront de vos mains avant qu'il ne puisse terminer son expiration. Peu de personnes peuvent utiliser VIM. Moins qui peut l'utiliser productivement. Et vous ne rencontrerez peut-être jamais un maître au cours de votre vie. Mais on dit qu'ils existent.

VIM est conçu pour garder les mains à la maison. Déplacer votre main du clavier à la souris est démoralisant. C'est un mouvement moteur grossier. Déplacer votre bras a un effet phsycologique qui nuit à votre motivation. En utilisant VIM, quelqu'un pourrait verrouiller vos poignets sur le clavier et vous pourriez toujours facilement ouvrir des fichiers, diviser des fenêtres, ouvrir des onglets, créer le projet, rechercher/remplacer, changer de police, changer de couleur, etc. Et tout cela à une vitesse fulgurante.

VIM est modal. Cela signifie que vous n'avez pas à faire de combinaisons de touches complexes lorsque vous maintenez enfoncée la touche Ctrl + Maj + Clé. Cela vous fait mal aux mains à long terme. Au lieu de cela, vous exécutez des commandes. Il n'y a pas besoin de combos clés en raison de la nature modale.

Nous stockons les données dans notre mémoire comme le font les ordinateurs. Notre mémoire ne peut contenir que quelques valeurs à la fois. Voyez combien d'entiers distincts vous pouvez tenir dans votre tête avant qu'ils ne commencent à s'échapper. Nous surmontons cette limitation humaine en écrivant des trucs. Si des données tombent de notre mémoire, nous pouvons facilement regarder ce que nous avons noté pour les récupérer. Si votre temps est consacré à la motricité globale, vous perdez du temps sur des choses physiques qui auraient pu être consacrées au traitement de données dans votre cerveau. Vous voulez que votre esprit coule sur l'écran sans aucun effort. Cela peut ne pas sembler beaucoup, mais la capacité de VIM à transférer sans effort ce qui est dans votre esprit à l'écran est un gros boost de productivité. Il est difficile de mettre des mots sur ce que j'essaie de dire.

VIM prend en charge la complétion de code. À la fois textuel et basé sur la recherche. Il peut extraire du texte de plusieurs fichiers. Tout ce que vous désirez peut être obtenu dans VIM. Faites-le vous-même ou utilisez quelque chose que quelqu'un d'autre a préparé.

VIM prend en charge les définitions de goign avec ctags. Vous pouvez également trouver toutes les références d'un article. Encore une fois, tout ce que vous désirez peut être obtenu dans VIM.

Le script de VIM est énorme. Vous pouvez télécharger ou créer des milliers de schémas de couleurs et changer les couleurs en un instant. Essayez de changer les polices ou les couleurs dans Microsoft Visual Studio et il se bloque pendant 20 secondes pendant il charge les données. Il ne vous permet pas de stocker des schémas de couleurs et vous devez passer 30 minutes à peaufiner vos couleurs et polices à chaque fois que vous souhaitez changer de décor. Dans VIM vous pouvez définir l'espacement des lignes sur zéro pour adapter plus de lignes de code à l'écran. J'obtiens plus de 80 lignes. Visual studio utilise 2 pixels d'espacement pour chaque ligne et vous ne pouvez pas l'ajuster !!! Moins de lignes = plus de défilement = moins de productivité = forcé d'utiliser de petites polices pour plus de lignes = fatigue oculaire.

Les fenêtres fractionnées sont ouvertes dans un instnat dans VIM. C'est utile lorsque vous avez besoin de regarder des données dans une section du code qui est loin de l'endroit où vous tapez (ou dans un fichier différent). Vous n'avez pas besoin de passer du temps à redimensionner les fenêtres, ni à vous soucier des fenêtres GUI qui se chevauchent et se perdent l'une derrière l'autre. Les fenêtres de code non liées peuvent être ouvertes dans des onglets pour ne pas occuper d'espace à l'écran, mais permettent une commutation rapide.

VIM en tant qu'IDE: http://www.youtube.com/watch?v=MQy2rVOf-z0&feature=fvwrel VIM la vengeance: http: //www.youtube.com/watch?v=lQNFfhC4QI8

10
mike

J'ai utilisé vi pendant des années pour éditer du code dans une variété de langues, et j'adore ça. Mais j'ai trouvé que les IDE comme Eclipse étaient encore plus agréables pour Java développement, et maintenant j'ai tendance à travailler dans Eclipse presque entièrement. Je laisse tomber l'utilisation de vi de temps en temps pour quelques spécialistes des activités telles que l'insertion en masse de mentions de copyright, principalement celles traitant de certains types de modifications par cœur qui ne sont pas bien automatisées dans Eclipse. J'ai également mon type de fichier Windows .Java mappé sur vi pour quand je veux simplement regarder un fichier source en attendant qu'Eclipse s'ouvre.

Certaines des fonctionnalités attrayantes d'Eclipse sont:

  • achèvement du nom de la méthode
  • erreur de mise en évidence
  • commentaires javadoc pop-up
  • refactoring

Je le trouve beaucoup plus efficace que vi en général, vous devriez donc l'essayer et voir si cela est vrai pour vous aussi.

8
Jim Ferrans

Je me souviens d'avoir lu quelque part à propos d'une étude qui montrait que les gens percevaient les raccourcis clavier comme plus efficaces que la souris, alors qu'en fait ce n'était pas toujours le cas.

Un autre effet psychologique est que nous attachons de la valeur à des choses qui sont chères, c'est-à-dire qu'Emacs est plus difficile à apprendre doit être meilleur d'une manière ou d'une autre.

Je pense que ces effets pourraient expliquer en grande partie l'extrême affection de certaines personnes pour Emacs/Vi.

Cependant, dans le cas d'Eclipse, je trouve que cela peut être très lent et même planter occasionnellement, mais ce n'est pas un cas contre les IDE en général.

J'utilise régulièrement Eclipse, VS et Emacs. J'utiliserais aussi TextMate, mais je n'ai plus de mac. Cela dépend de ce que je fais, plus précisément du système qui prend le mieux en charge mon langage et mes outils.

Je connais des gens qui passent beaucoup plus de temps à programmer leur éditeur qu’à faire quelque chose d’utile. Certains d'entre eux admettent même qu'ils ne le font que pour le défi. D'autres personnes prétendent souvent qu'Emacs/Vi peut faire bien plus que les IDE, car ils sont scriptables. Eh bien, la plupart des IDE (y compris Eclipse) peuvent également être scriptés. En ce sens, presque tous les éditeurs sont équivalents (bien que, je l'avoue, certains éditeurs soient plus facilement scénarisés que d'autres).

Si vous aimez les IDE, mon conseil est de continuer à en utiliser un. Il n'y a pas Un seul vrai éditeur .

ÉDITER:

This semble être l'article auquel Nick Bastin fait référence. Je suis d'accord que c'est loin d'être une source définitive. Cependant, je pense toujours que mon argument selon lequel la productivité perçue et réelle n'est pas la même chose tient toujours.

6
Jørgen Fogh

Cela dépend des langues.

Pour Java ou .Net Utilisez un IDE (Eclipse, Netbeans, Visual Studio ...).

Pour presque tous les autres langages (C, C++, Ruby, python, haskell, LISP ...) vi et emacs sont mieux à mon avis.

4
hiena

L'efficacité fournie par vim/emacs est principalement due à leur utilisation intensive du clavier. Dans ces programmes, vous pouvez presque tout faire directement à partir du clavier, plutôt que d'avoir à vous arrêter et à utiliser la souris.

3
Jon W

Je dirais que les éditeurs vim/emacs réels sont bien supérieurs à l'éditeur de texte Eclipse en termes de raccourcis qu'ils offrent. Cependant, je suis entièrement d'accord avec vous sur la refactorisation.

La plupart des gens doivent écrire des scripts pour faire le genre de niveau de refactorisation dont Eclipse est capable. Je pense qu'une partie de cela se vante des droits ou des gens qui le font de la même manière qu'ils l'ont toujours fait.

2
Mike McQuaid

J'irais à tout moment pour emacs plutôt que pour Eclipse. Je dois aussi dire que les emacs d'os nus, ce n'est pas terrible, mais après quelques ajustements, vous ne voudrez plus jamais le laisser partir. En particulier, je vais vous dire à quel point emacs a été utile lors de la rédaction de ma thèse de maîtrise, cela devrait expliquer pourquoi Eclipse est inférieur, simplement parce qu'il est moins polyvalent.

J'ai ma thèse de master que j'ai écrite dans les langages de programmation suivants: C++, Python et R. Complémentaire, j'ai dû écrire la thèse, pour laquelle j'ai utilisé LaTeX. De plus, j'ai dû écrire un tas des scripts Shell et des scripts cmake. Devinez quoi? Emacs a un grand support pour tout cela. Surtout, ce fut un plaisir de travailler avec AuCTeX pour produire des documents LaTeX. Ensuite, Emacs fournit le grand mode ESS pour travailler avec R. De même, il fournit des installations pour python. Une fois que j'avais mes scripts cmake pour construire le code C++, je n'avais qu'à appeler la compilation à partir de emacs et j'avais terminé. Eclipse ne peut pas faire tout cela, donc vous devrez apprendre à utiliser de nombreux programmes différents. Il y a un mode org pour ça, et c'est super!

Et puis, mon programme avait besoin d'un ordinateur très puissant (pas comme n'importe quel ordinateur portable). Donc, je pouvais tout faire à distance depuis emacs !!!! En utilisant Tramp, je me suis retrouvé à faire une évaluation interactive à distance du code R, à compiler à distance, à exécuter et à déboguer du code C++, et tout dans la même bonne fenêtre emacs locale que j'utilisais. En revanche, mes amis qui utilisaient un outil séparé pour tout étaient beaucoup plus lents à développer des logiciels destinés à fonctionner sur un autre ordinateur.

Comme ça, j'ai d'autres histoires, mais je pense que cela vous donnera une bonne idée des choses que vous pouvez faire avec Emacs. Dans l'ensemble, je pense que le choix d'utiliser emacs (malgré la courbe d'apprentissage) a été la décision la plus productive que j'ai jamais prise.

J'espère que cela aide.

Le seul endroit où je préfère un IDE est pour le débogage. J'ai configuré mon environnement vim pour le débogage mais il était si pénible à utiliser, si maladroit, que je viens maintenant de passer à mon IDE (Netbeans) lorsque j'ai besoin de déboguer. Vim est idéal pour l'édition de texte, le IDE est idéal pour les choses plus complexes (comme le débogage et certaines tâches liées à la gestion de projet)) .

1
rg88

Nous avons eu cet argument au travail récemment. Mon opinion était qu'une seule fonctionnalité dont je ne pouvais pas me passer était la saisie semi-automatique d'Emacs. La saisie semi-automatique d'Eclipse est basée sur une analyse syntaxique - le code est analysé, et au fur et à mesure que vous tapez du code, vous avez le choix de compléter. La saisie semi-automatique d'Emacs est basée sur une analyse textuelle simple. Cela signifie que cela fonctionne en texte brut, dans les commentaires, dans la documentation - partout. Je continue de dire que la saisie semi-automatique d'Emacs est ce que IntelliSense veut être quand il grandira.

Mise à jour:

Eclipse propose Alt-/qui est censé être similaire à Emacs. Je ne sais pas si cela fonctionne bien.

1
Arkadiy

Comme certains des articles ci-dessus, j'ai commencé avec un IDE (Eclipse). De là, je suis passé à Emacs, puis je suis revenu à un éditeur de texte riche (TextMate).

Pour moi, l'efficacité était la possibilité d'avoir un éditeur au niveau de l'interface. Me permettant d'intégrer un autre service que j'ai construit (ou d'autres) dans mon environnement pseudo-IDE.

0
Rev316