web-dev-qa-db-fra.com

Il est temps de laisser tomber Emacs et vi?

Chaque fois que vous recherchez un éditeur de texte, quelle que soit la langue que vous utilisez, vi et Emacs sont des maîtres de la scène.

Cependant, ils sont anciens et nous avons de meilleures alternatives (du moins j'espère que nous le faisons).

Pourquoi les développeurs sont-ils bloqués sur ces deux éditeurs? Ne devrions-nous pas les laisser tomber et essayer d'inventer ou de chercher quelque chose de nouveau?

(J'ai plein respect pour les fans d'Emacs et vi).

40
Chiron

Les principales raisons pour lesquelles je préfère un éditeur basé sur un terminal à un IDE à part entière:

  • Accès à distance. Je peux ssh sur n'importe quel ordinateur sur lequel je dois être, lancer Vim et commencer à travailler. Au quotidien, l'utilisation de la session screen et de Vim permet un accès facile depuis n'importe quel emplacement.
  • frappes. Il y a tellement de touches enregistrées une fois que vous pouvez utiliser Emacs ou Vim dans une mesure décente. Déplacer ma main entre le clavier et la souris m'énerve ...

Les IDE sont agréables pour organiser des cours dans votre projet, mais pour moi, ma productivité est beaucoup plus élevée avec Vim.

82
J.K.

Les programmeurs sont connus pour utiliser les outils qui les aident à faire le travail de la manière la plus efficace possible. Ces éditeurs sont anciens mais toujours utilisés car ce sont de bons éditeurs solides, éprouvés par le temps. S'ils font le travail et le font enfin, pourquoi devrions-nous les laisser tomber en faveur d'autre chose?

66
Michelle Tilley

Vous supposez qu'ils n'évoluent pas. Emacs continue de croître à pas de géant; et, tandis que vi commençait à devenir une sorte de hoary, Vim l'a rajeuni et si quelque chose se développe (au moins en termes de fonctionnalités) plus rapidement qu'Emacs.

Mais en fin de compte, c'est ce avec quoi vous travaillez le mieux qui compte. Si vous êtes le plus productif dans Eclipse, plus de puissance pour vous. Même chose si vous préférez Vim.

57
geekosaur

Beaucoup (la plupart?) Des meilleurs programmeurs que je connais méprisent les IDE et s'appuient uniquement sur Emacs. Je ne suis pas tout à fait aussi inconditionnel et utilise à la fois Eclipse et Emacs, mais il y a quelques raisons pour lesquelles je préfère utiliser Emacs:

  • Expérience cohérente avec N'IMPORTE QUELLE langue - La prise en charge dans Eclipse de certaines des langues les plus récentes (Scala, Clojure, etc.) est au mieux incohérente, et au pire médiocre . Les auteurs du plugin travaillent dur pour améliorer l'expérience, mais je rencontre souvent de petites choses qui me paraissent saccadées. Bien sûr, vous pouvez toujours passer à un autre IDE qui prend mieux en charge ce langage particulier, mais maintenant vous jonglez avec les IDE. Je ne me suis jamais senti de cette façon lorsque je travaillais dans Emacs.

  • Je n'aime pas IDE "magic" - Les IDE ont tendance à faire beaucoup de choses automatiquement au nom de la commodité. est génial ... jusqu'à ce que quelque chose se brise. Ensuite, cela peut être un processus frustrant ou même exaspérant de remettre les choses sur la bonne voie.

J'ai joué avec l'idée de passer à éditeur Redcar . Il est extensible comme Emacs, mais au lieu de Emacs LISP vous utilisez JRuby . Il est léger et certainement pas un IDE à part entière. Si vous aimez TextMate , il est compatible avec les offres TextMate, mais il a l'avantage d'être gratuit et open source. Certainement un outil à découvrir, en particulier pour les développeurs Ruby.

40
dbyrne

ne devrions-nous pas les laisser tomber et essayer d'inventer ou de chercher quelque chose de nouveau?

tl; dr: Beaucoup de gens ne veulent pas apprendre un nouvel éditeur

La réponse complète:

Un assistant UNIX entend des cris de tourment dans la salle informatique de son apprenti où l'apprenti étudie et va enquêter.

Il trouve l'apprenti dans une détresse évidente, presque au bord des larmes. "Quel est le problème?" il demande. "Pourquoi as-tu crié?"

"C'est terrible d'utiliser ce système. Je dois utiliser quatre éditeurs chaque jour pour terminer mes études, car aucun d'entre eux ne fait tout."

Le sorcier hoche la tête sagement et demande: "Et que proposeriez-vous pour résoudre ce dilemme évident?"

L'élève réfléchit soigneusement pendant plusieurs minutes, puis son visage s'illumine de joie. Excité, il dit: "Eh bien, c'est évident. J'écrirai le meilleur éditeur de tous les temps. Il fera tout ce que font les quatre éditeurs existants, mais fera son travail mieux et plus rapidement. Et grâce à mon nouvel éditeur, le monde sera un meilleur endroit."

Le sorcier lève rapidement la main et frappe l'apprenti sur le côté de sa tête. Le sorcier est vieux et fragile, et l'apprenti n'est pas physiquement blessé, mais est choqué par ce qui s'est passé. Il tourne la tête pour faire face au sorcier. "Qu'est ce que j'ai mal fait?" il demande.

"Imbécile!" dit l'assistant. "Penses-tu que je veux apprendre un autre éditeur?"

Immédiatement, l'apprenti est éclairé. http://neugierig.org/content/unix/

27
Hery

Je pense que les IDE (Visual Studio, Eclipse, IntelliJ) sont aptes à résoudre une autre classe de problèmes que ceux que vous résolvez avec emacs/Vim.

Lorsque vous avez une grande plate-forme pour coder, avec beaucoup de bibliothèques et une intégration élevée entre tous les éléments (sonne comme Microsoft), un IDE prouvera sa valeur. Certains l'appelleront "coller des bibliothèques ensemble" et ne supposent pas que ce soit du "vrai code". Cela vous aidera grandement si vous détectez des erreurs tôt (d'une manière que même Emacs ne peut pas).

Lorsque vous développez des applications d'utilisateur final pour (disons) Android, vous pouvez le faites réellement sans Eclipse. Cependant, avec toutes sortes de fichiers qui doivent être ajoutés avant le déploiement, Eclipse vous aidera beaucoup en automatisant ces tâches pour vous.

Donc, si vous êtes un développeur d'applications travaillant sur une seule plate-forme avec de nombreuses bibliothèques (développement d'applications de classe entreprise dans Java EE, .NET, etc.), un IDE sera un " amélioration "de votre flux de travail. Cependant, dès que vous devez travailler régulièrement dans un environnement terminal (sur des serveurs Unix, par exemple) ou que vous utilisez beaucoup de langues différentes, aucun IDE ne peut mesurer par rapport aux qualités Vim/emacs.

Une dernière chose est que travailler avec Vim/emacs vous oblige à comprendre au moins un peu une plate-forme/langue avant de l'utiliser. De nombreux IDE vous permettent de fonctionner dans une langue sans savoir ce qui se passe; donc l'utilisation de Vim/emacs vous obligera à mieux comprendre ce que vous faites vraiment.

19
vstrien

Au cours d'une quarantaine d'années en informatique, en tant qu'étudiant et professionnel, j'ai utilisé au moins quinze (15) éditeurs et IDE différents. De tous, emacs était de loin le meilleur, hier et aujourd'hui.

Tout d'abord, je passe trop de temps à rebondir entre plusieurs fichiers et plusieurs endroits à l'intérieur de fichiers individuels pour avoir une bonne expérience avec n'importe quel éditeur qui refuse de me laisser voir plus d'un fichier à la fois, ou plus de deux à la fois. Emacs est le seul éditeur ou IDE que j'ai vu qui me permet de voir tout ce dont j'ai besoin à la fois. (Il y a quelques années, en explorant un système hérité, j'avais systématiquement huit (8) volets ouverts dans une fenêtre emacs. Aujourd'hui encore, j'ai généralement trois ou quatre volets ouverts, et parfois j'ai deux ou trois invocations d'emacs ouvertes, car j'ai besoin de plusieurs shells et je dois copier et coller les résultats entre eux.)

Deuxièmement, je ne suis encore qu'humain et je fais parfois des erreurs. Tous les autres éditeurs que j'ai jamais utilisés étaient parfaitement heureux de me laisser tirer du pied, SANS AVERTISSEMENT, sans capacité de récupération, me laissant vouloir commettre des actes d'une violence indescriptible et violente contre l'auteur dudit GDPOS. (Ceux qui m'ont eu n'étaient pas aussi mauvais que le crock qui a presque fait lyncher Charles Simonyi alors qu'il était au Xerox PARC, avant d'aller à Microsoft et d'infliger la notation hongroise au monde - un acte pour lequel le lynchage est tout à fait trop doux une punition.) Emacs ne m'a jamais fait ça; il n'a jamais irrévocablement détruit quoi que ce soit sans me donner un GRAND avertissement. À l'époque où j'étais encore nouveau sur emacs, j'allais parfois "Qu'est-ce qui vient de se passer?", Et j'ai toujours compris ce que j'avais fait en quelques secondes, et j'ai su le réparer aussi rapidement.

Un éditeur qui n'existe pas [~ # ~] améliore la productivité de [~ # ~] . Le mieux que vous puissiez obtenir est une dégradation minimale de la productivité. La métrique, pour moi, est "À quel point cette chose me ralentit-elle?" Comparé à emacs, sur le genre de choses que je fais normalement, tout le reste est bien pire.

Mon [~ # ~] seulement [~ # ~] reproche à emacs était qu'il n'était pas disponible pour Oberon, quand je jouais avec Oberon pas mal il y a quelques années.

16
John R. Strohm

Mis à part un peu de BASIC quand j'étais enfant, j'ai appris la programmation sur Unix. La philosophie Unix est d'avoir de nombreux petits outils qui interagissent, mais qui se concentrent chacun sur le fait de faire un travail et de bien le faire. Par conséquent, il me semble naturel d'avoir un logiciel distinct pour l'édition, la compilation, le contrôle des sources et le débogage. Fait intéressant, les IDE sont "intégrés", mais vous ne pouvez toujours pas intégrer toutes ces fonctionnalités dans une seule fenêtre à la fois, donc vous vous retrouvez avec des choses comme les perspectives, où vous changez essentiellement de mode entre ces différentes tâches de toute façon, bien qu'avec un certain chevauchement .

Je pourrais le retourner et demander pourquoi les gens tolèrent un montage non-vim lent et douloureux. La meilleure façon de décrire le sentiment de regarder quelqu'un éditer le code de cette façon, c'est que c'est comme quand vous êtes coincé derrière une voiture à 10 mph trop lent parce qu'il est au téléphone, ou comme regarder une dactylo de chasse et de picage relativement rapide . Ils vont assez vite pour faire le travail, mais en même temps assez lentement pour être exaspérant.

Beaucoup de gens disent qu'ils passent la plupart de leur temps à penser de toute façon, donc un montage un peu plus rapide ne fait pas beaucoup de différence. Dans ce cas, la frappe est une interruption, et quelques secondes supplémentaires d'édition peuvent faire la différence entre garder le cap sur la pensée ou devoir la reprendre. De plus, si vous êtes une dactylo tactile de longue date, vous savez que vos doigts tapent des mots courants sans même que vous réfléchissiez consciemment aux touches à frapper. Lorsque vous êtes un utilisateur de longue date de vim, ce type de fluidité vient pour des choses comme le déplacement des lignes et des mots. Dans le temps qu'il faut pour dire "supprimer" dans "supprimer ces 2 lignes" mes doigts l'ont déjà fait et ma concentration est totalement ininterrompue.

Vim est également extrêmement personnalisable, et vos plugins installés et vimrc évoluent à mesure que votre travail évolue. Lorsque quelque chose commence à vous gêner, vous cherchez une meilleure façon de le faire et l'incorporez à votre configuration ou aux commandes couramment utilisées. J'ai appris vi en 1993 et ​​je fais toujours des personnalisations lorsque mes besoins changent. Cette semaine seulement, j'ai changé l'achèvement du nom de fichier de mon onglet pour qu'il ressemble davantage à celui de bash, car mon flux de travail a changé pour en faire beaucoup plus récemment et le comportement par défaut me mettait en colère.

De plus, je ne suis pas d'accord pour dire que cela ne vaut pas le temps d'apprendre. Il m'a fallu plus de temps pour apprendre à toucher que pour me sentir productif dans vi, pour une augmentation similaire de la vitesse d'édition de code, mais vous ne voyez pas les programmeurs se plaindre du temps qu'il a fallu pour apprendre à toucher. Et vous pouvez apprendre à votre propre rythme et ajouter de nouvelles commandes à votre répertoire selon vos envies. Si vous commencez par set im dans votre vimrc (signifie insertmode, mais je l'appelle affectueusement idiotmode lorsqu'un collègue doit taper à mon bureau), vous pourriez même ne pas réaliser que vous utilisez vim du tout!

8
Karl Bielefeldt

Je suis un utilisateur de Vim.

Je dois utiliser des IDE en raison des projets sur lesquels je travaille, vous ne pouvez pas les contourner parfois. Je suis assez compétent pour utiliser Code :: Blocks et Eclipse , cependant, dans la mesure du possible, j'aime que l'interface utilisateur desdits IDE fonctionne comme celle de Vim.

J'ai mon propre jeu de couleurs pour Vim et je veux que les éditeurs de texte d'autres IDE fonctionnent exactement de la même manière.

Je souhaiterais un IDE, il manque l'éditeur de texte et où je peux brancher l'éditeur que je veux. Ne serait-ce pas agréable, si je pouvais brancher mon Vim standard dans Emacs ou Code :: Blocks, mais avec le reste de la IDE autour d'elle?

Il a en quelque sorte échappé à la portée des développeurs IDE, mais je le souhaite secrètement presque toujours, lorsque j'utilise uniquement Vim et Makefiles pour des projets plus importants, ou un IDE et son éditeur de texte encombrant.

8
polemon

Mon IDE de choix est Linux. Heck, il peut exécuter d'autres IDE, servir des sites Web, exécuter des programmes dans une variété de langues, et en combinant des trucs (le tuyau), il peut exécuter ensemble des programmes qui étaient écrit dans différentes langues comme s'ils ne faisaient qu'un. Cette chose est géniale. Oh, et il peut se connecter à Internet et faire toutes sortes de choses intéressantes avec lui, y compris la génération d'autres versions de lui-même. Coolio!

Ne vous contentez pas d'un IDE lorsque vous avez déjà Linux.

8
Christopher Mahan

J'utilise Emacs comme mon éditeur principal. Les seuls autres éditeurs que j'ai jamais considérés sérieusement étaient vim et TextMate. Les IDE (et j'en ai essayé quelques-uns, y compris Eclipse) n'ont pas eu les fonctionnalités dont j'avais besoin.

J'ai eu cette conversation avec un de mes collègues il n'y a pas longtemps. Il me disait combien mieux IDE sont quand il utilisait sa souris pour cliquer sur un tas de boutons et de menus. Cela m'a juste fait rire.

Je vais essayer n'importe quel éditeur avec les capacités suivantes (qui sont toutes essentielles à ma façon de développer).

  • toutes les commandes peuvent être exécutées par des raccourcis clavier personnalisables
  • permet l'édition à distance avec ssh (oui Emacs a l'édition à distance)
  • permet la création et la réutilisation de macros à la volée
  • langage de programmation étroitement intégré
  • coder et exécuter à l'aide du langage de programmation à la volée
  • intégration étroite avec GBD et la famille
  • coloration syntaxique multilingue dans le même tampon
  • saisie automatique des mots clés, variables, fonctions, etc.

J'ai également tendance à faire de la méta-programmation qui rend souvent inutiles les outils d'auto-refactor; le seul domaine dans lequel je pense que les IDE ont tendance à être bons.

6
dietbuddha

D'autres éditeurs avec un héritage (et une controverse) tout aussi riches ont été inventés, et ce n'est peut-être qu'une question de temps avant de passer des outils écrits pour la première fois dans les années 1970 (vi/Emacs) à ceux des années 1980 ( Sam ) ou même un des années 1990 ( Acme ).

"Sam est l'éditeur de texte préféré de nombreux éminents informaticiens; il a remplacé ed comme l'éditeur de texte préféré de Ken Thompson, et il l'utilise encore à ce jour. Sam est l'éditeur de texte utilisé par Bjarne Stroustrup et Brian Kernighan. D'autres, comme Dennis Ritchie, ont plutôt utilisé Acme. " Voici le article de Sam de Wikipedia.

Mais que sais-je, j'utilise toujours Vim.

5
jtg

Suis-je la seule personne à utiliser occasionnellement ed?

(Et pour ceux qui pensent que le ballonnement de code est pertinent ...

$ size /bin/ed 
   text    data     bss     dec     hex filename
  42160    2300       0   44460    adac /bin/ed
$ size /bin/vi
   text    data     bss     dec     hex filename
 692378   27796   13884  734058   b336a /bin/vi
$ size /usr/bin/emacs
   text    data     bss     dec     hex filename
2033257 4692020       0 6725277  669e9d /usr/bin/emacs

)


Un autre avantage de ed est que vous pouvez l'exécuter sur un télétype ... ou sur le terminal le plus stupide.

4
Stephen C

Je suppose que je suis un drôle de canard, mais j'utilise en fait différents éditeurs, selon la situation.

Vim:

Quand je suis connecté (ssh'd) sur un serveur distant (par exemple en regardant les journaux) et que je veux éditer rapidement un fichier et faire du Tweak. Beaucoup plus rapide que la navigation vers le même dossier (hébergé par SAN) à partir de mon bureau local.

Bloc-notes ++:

À propos de la même situation: pour une modification rapide, mais cette fois où je ne veux tout simplement pas attendre le chargement d'Eclipse (IDE d'entreprise).

Eclipse:

C'est l'entreprise IDE où je travaille. Nous avons quelques plugins internes pour pouvoir lancer la construction depuis Eclipse directement sur une machine distante ... et surtout un plugin pour localiser les bibliothèques produit par d'autres équipes et avec lequel nous travaillons (et reproduisons les en-têtes en local pour une indexation rapide). Puisque je parle de plusieurs milliers de bibliothèques ... c'est vraiment utile;)

OpenGrok/Doxygen:

Plus de navigation dans le code que l'édition proprement dite, mais toujours très utile! Mon navigateur est configuré pour naviguer, il est donc mis à profit ici.

En conclusion: j'ai tendance à utiliser tout éditeur qui me permet d'accomplir la tâche avec une relative facilité et une vitesse décente.

2
Matthieu M.

"Mieux" est un mot subjectif. Si je suis heureux et productif en utilisant un éditeur de texte, qui est X ou Y ou Z pour dire "déposez-le et utilisez autre chose"? Si c'est une politique d'entreprise ou autre qui en fait une situation incontournable, nous n'avons pas le choix.

2
Srisa

Je préfère manger mes propres mains plutôt que d'utiliser l'une ou l'autre. J'ai adoré Visual Studio lorsque je faisais du C++. Eclipse est meh. IntelliJ IDEA est excellent. J'aimais aussi JBuilder , mais je ne l'ai pas utilisé depuis des années.

1
Chuck Stephanski

Parfois, je vais travailler sur des systèmes essentiellement nus, où le seul éditeur installé est vi. Pour des cas comme ceux-ci, il est vraiment utile de connaître au moins les commandes vi de base.

vi et emacs sont également très extensibles, à tel point qu'ils peuvent en effet être des IDE pleinement opérationnels avec la bonne quantité de plugins. Pour moi, je peux éditer des fichiers beaucoup plus rapidement dans vi, car je n'ai pas à retirer mes mains du clavier pour déplacer une souris. Il possède également des fonctionnalités que je n'ai pas vues dans certains IDE (bien que j'avoue que je n'ai pas beaucoup regardé), comme la possibilité de modifier des colonnes de texte, de stocker plusieurs mots "coupés" dans plusieurs tampons pour les coller, etc.

Les éditeurs mettent un certain temps à apprendre, mais ils sont aussi vraiment puissants. Et oui, ils ne sont pas pour tout le monde.

Une lecture intéressante quelque peu liée est Pourquoi devrais-je utiliser un IDE?

0
Jeff

Je m'en tiens à vi car c'est le premier éditeur que j'ai appris à l'école et c'est celui avec lequel je suis le plus productif aujourd'hui. Je travaille avec beaucoup de variantes Unix et il est disponible sur chacune d'entre elles (et cela fonctionne de la même manière quel que soit l'environnement). Il fait ce dont j'ai besoin, alors pourquoi changer pour changer.

J'utilise un IDE pour mon Java (maintenant Intellij Idea), mais je passe beaucoup de temps à utiliser vi.

0
jmq

Existe-t-il y a-t-il de meilleures alternatives? L'autre jour, j'avais une liste de noms de schéma que je devais raccourcir (merci, Oracle!). Au moins la moitié d'entre eux se sont terminés par le mot "Test". J'ai décidé de supprimer le "Test" de la fin et de préfixer le nom avec "T". Dans vi, il s'agissait d'une simple recherche et remplacement d'expressions régulières, y a-t-il des éditeurs récents qui peuvent le faire?

0
TMN