Vaut-il la peine d’investir du temps pour apprendre à utiliser Emacs?

Juste avant: je ne veux pas commencer une guerre religieuse.

J’ai utilisé vi aussi longtemps que je m’en souvienne, et les quelques fois où j’ai essayé de prendre Emacs, j’ai été tellement perdu que j’ai rapidement abandonné. Beaucoup de gens trouvent cependant qu’Emacs est très puissant. Sa programmabilité est quelque peu légendaire. Je fais principalement du développement Solaris + Java et j’aimerais poser une question simple: ma productivité va-t-elle augmenter si je consacre du temps à me familiariser avec Emacs? Les fonctionnalités offertes sur Vim seront-elles remboursées en augmentations de productivité dans un délai raisonnable?

Répétez: je ne veux pas de réponse “mon éditeur est meilleur que le vôtre”. Je veux juste une réponse par oui ou par non pour savoir si cela vaut la peine d’investir le temps ou non. Est-ce que ma productivité va vraiment augmenter?

Je préfère emacs à vi, mais je suis à l’aise dans les deux.

Il y a certaines choses que vous pouvez faire dans emacs pour le rendre plus puissant que vi, mais toutes ne sont pas liées à la programmation. (Pouvez-vous envoyer des courriels ou lire des nouvelles de vi? Non, mais peu importe?) Si vous êtes à l’aise avec Lisp (je ne le suis pas), vous pourrez peut-être écrire des add-ons et des modes plus facile, mais c’est probablement la coloration de la syntaxe et l’appariement des accolades et des bonbons pour les yeux comme ça.

Je vais arrêter de marcher maintenant. Votre productivité augmentera-t-elle avec emacs? Non.

Mise à jour : Voir mon commentaire ci-dessous. Depuis que j’ai posté ceci, je suis tombé sur des façons d’utiliser emacs pour devenir plus productif que d’utiliser vi.

[Disclaimer: personnellement , je préfère Vim. Déni de responsabilité: lisez la suite.]

Vim excelle dans le petit: en faisant des concepts de mouvement et d’action distincts et en fournissant des facilités pour des répétitions complexes, vous pouvez effectuer des opérations d’édition incroyablement puissantes en une courte séquence de frappes. Vous pouvez facilement faire des choses dans Vim dans le cours normal de l’édition, ce qui vous obligerait à passer à la création de scripts dans Emacs. En outre, la plupart de la puissance que vous utilisez vient de la boîte, donc même si vous avez des personnalisations étendues .vimrc , il y a des chances que vous puissiez travailler de manière productive avec n’importe quelle installation Vim.

Emacs excelle dans le large: en mappant tous ses concepts d’interface utilisateur directement dans les concepts et bases de base d’Elisp, il devient très facile d’introduire globalement des fonctionnalités pour des types de fichiers ou de circonstances spécifiques, faisant d’Emacs un outil textuel beaucoup plus structuré forme programmable d’Excel. Cela suppose que vous allez passer beaucoup de temps à personnaliser votre environnement en fonction de vos besoins et préférences personnels. Bien sûr, Emacs fait de son mieux pour restr dans cet environnement unique pour tout et n’importe quoi.

En fin de compte, aucun n’est supérieur. Ils offrent des styles différents et, selon vos penchants, l’un ou l’autre répondra mieux à vos besoins personnels et à votre façon de penser. Il est toujours utile de connaître les deux (plus d’éditeurs), bien sûr. Mais vous n’allez pas être beaucoup plus productif de cette façon.

vi est un couteau de cuisine.

vim est un couteau de chef vraiment sympa, net et équilibré.

Emacs est un sabre laser.

La plupart du temps, mon travail exige que je coupe des légumes. De temps en temps, je dois prendre toute une armée de robots.

J’utilise Emacs depuis 20 ans. Je saisis Emacs tout de suite avec un widget appelé “It’s All Text” qui me permet d’aspirer du texte dans les zones de texte de Firefox. Je peux aller très vite à Emacs. Je suis nettement moins productif sans cela.

C’est très discutable, mais je pense aussi que l’apprentissage d’Emacs peut vous apprendre une quantité surprenante de programmation.

Selon votre code, vous pouvez voir une augmentation de la productivité. En arrière-plan, je suis également un utilisateur de longue date de vim, mais j’ai appris emacs il y a environ 2 ans et je les utilise maintenant de manière interchangeable.

Ce qui m’a conduit à apprendre réellement emacs, c’est sa capacité à ouvrir un grand nombre de fichiers en même temps et à basculer facilement entre eux. J’étais en train d’introduire une fonctionnalité qui ajoutait et touchait un grand nombre de classes. (C’était C ++, donc il y avait généralement deux fichiers par classe.) Comme je raffinais encore l’interface, je mettrais généralement un fichier à jour lorsque je me rendais compte que je devais en changer un autre.

Avec gvim, il était plus facile d’ouvrir une nouvelle fenêtre pour chaque fichier, ce qui commençait à devenir difficile. Avec Emacs, cependant, il était simple d’ouvrir un nouveau fichier dans la même fenêtre (Ctrl-x, Ctrl-f). Une fois qu’Emacs a un fichier ouvert, il est très facile de basculer entre les tampons ouverts (Ctrl-x, Ctrl-b).

En allant plus loin, une seule session emacs peut ouvrir de nombreuses fenêtres. En plus de diviser la fenêtre verticalement, je pourrais décider, sans interrompre le travail sur un fichier, d’en ouvrir une autre, ce qui me permettrait de travailler efficacement côté tout en gardant chaque fenêtre à la largeur par défaut de 80 caractères.

Il y a encore des choses que je trouve plus faciles dans vim (ex: mode de sélection de bloc, enregistrement de macro simple, mode diff) et des choses plus faciles dans Emacs (alignement de ligne, gestion de fichier / tampon, gestion de fenêtre / écran). Par conséquent, je me trouve alternant entre les deux (et parfois en utilisant les deux simultanément), en fonction de la tâche d’édition que j’anticipe.

Si vous n’êtes toujours pas sûr, je vous suggère de l’essayer. Parcourez le didacticiel d’Emacs, puis utilisez-le pour écrire du code pour un matin ou une journée, en vous appuyant fortement sur l’aide. Si vous n’aimez toujours pas ce que vous voyez, restz avec vim. Indépendamment de ce que l’éditeur apporte à la table, votre familiarité et votre connaissance de l’outil seront de loin le facteur le plus important de votre productivité.

Je ne veux pas de guerre sainte, mais répondez à une question très subjective avec une réponse oui / non.

Oui, vous pouvez voir une augmentation de productivité grâce à la fonctionnalité puissante.

Non, vous ne verrez pas une augmentation de la productivité car les modèles et métaphores utilisés dans emacs peuvent ne pas correspondre à votre cerveau.

La réponse courte à votre question est “OUI”. Plus de détails ci-dessous.

J’ai utilisé vi presque exclusivement entre 1980 et 1991. La seule fois où je n’ai pas utilisé vi, c’était quand je travaillais avec une installation minimale d’Unix trop petite pour inclure vi, donc j’ai dû revenir à ed qui est le sous-ensemble minimal de la fonctionnalité d’édition sur laquelle le vi d’origine était construit.

A partir de 1985 environ, d’autres programmeurs où je travaillais chantaient constamment les louanges d’Emacs. Mais chaque fois que j’essayais de l’apprendre, je n’irais pas très loin. Je passerais une heure à parcourir le site d’Emacs (Cht) et à la fin de tout ce que je saurais, c’est comment insérer et modifier du texte et bouger sur l’écran. Je pouvais faire beaucoup plus avec vi que ce que j’avais appris à cette heure avec emacs que je ne pouvais pas faire le changement. Trois mois plus tard, je trouvais le temps de passer une heure de plus et je finirais par parcourir le même matériel. Emacs a une courbe d’apprentissage avec un “L” majuscule. Ce n’est que lorsque j’ai passé un contrat où tout le monde a utilisé emacs que j’ai finalement décidé de consacrer plus d’une heure à l’apprendre. Après avoir passé un peu plus d’une journée à ne rien faire d’autre que travailler sur le didacticiel et la documentation fournie, j’ai finalement réussi à faire des choses avec emacs avec vi. A partir de là, je n’ai jamais voulu y retourner. Je peux toujours taper les commandes vi dans mon sumil, mais je peux faire beaucoup plus avec emacs.

Comprenez que je compare emacs et vi, pas vim. Je n’ai jamais appris les extensions que vim a ajoutées à vi, et il est probable que beaucoup d’entre elles sont des fonctionnalités copiées depuis emacs. Si c’est le cas, et si vous maîsortingsez déjà vim, emacs pourrait ne pas vous offrir autant d’avantages.

Parmi les choses dont je dépend tout le temps dans emacs sont:

  1. Lorsque vous utilisez emacs, tout est traité comme du texte. Cela signifie que vous pouvez manipuler toutes les données dans n’importe quel tampon avec à peu près les mêmes commandes. Et dans les cas où un tampon dans un mode où certaines commandes standard ne sont pas disponibles, vous pouvez copier du texte dans un autre tampon fonctionnant en mode fondamental et utiliser les commandes standard.

  2. Emacs fournit un environnement multi-fenêtre pouvant être affiché sur un terminal de type caractère. Dans les jours précédant les graphiques bitmap et les fenêtres réelles, emacs a été écrit pour simuler un comportement de type fenêtre en utilisant uniquement des caractères ascii et le positionnement du curseur. Vous pensez probablement: “C’est l’histoire ancienne. Pourquoi devrait-on s’en préoccuper aujourd’hui?” J’utilise toujours cette capacité tous les jours. J’utilise une entreprise d’hébergement Web qui me permet un access SSH. Je peux donc me connecter à un hôte Linux sur Internet et exécuter des commandes shell. Bien que ce soit assez puissant, il est beaucoup plus puissant de pouvoir diviser mon émulateur de terminal en “windows” en utilisant emacs, d’exécuter des shells dans plusieurs de ces “fenêtres”, d’éditer des fichiers dans d’autres fenêtres et d’afficher et de modifier d’autres répertoires ” les fenêtres”.

    En fait, lorsque j’ai dit “fenêtre” dans le paragraphe précédent, je voulais vraiment dire “tampon”. L’émulation des fenêtres de caractères par Emacs permet de diviser l’écran en immobilier. Un tampon emacs est associé au contenu (un fichier, un shell bash, un répertoire, un texte arbitraire non associé à un fichier, etc.) qui peut ou non être actuellement affiché. Pour voir ce qu’il y a dans un tampon, vous choisissez une fenêtre et lui indique quel tampon vous voulez voir. Vous pouvez donc travailler sur plus de choses que vous n’avez de place sur l’écran pour les afficher. C’est grosso modo analogue à ce que vous faites dans une interface graphique moderne utilisant des graphiques bitmap lorsque vous iconifiez / dé-iconifiez une fenêtre.

  3. J’ai déjà fait allusion au fait que vous pouvez exécuter un shell dans un tampon emacs. Vous pouvez avoir autant de tampons en cours d’exécution que vous le souhaitez. Vous pouvez copier et coller du texte entre un tampon shell et un fichier texte, ou comparer une partie du texte entre un tampon shell et un fichier texte en utilisant exactement les mêmes séquences de touches que vous utiliseriez pour copier du texte ou comparer du texte entre deux fichiers différents. fichiers texte. En fait, cela est vrai pour la plupart des types de tampons, pas seulement les tampons et les tampons de shell associés aux fichiers.

  4. Lorsque vous utilisez la commande emacs pour ouvrir un fichier, mais que vous avez sélectionné un répertoire, le tampon s’exécute en mode dired (éditeur de répertoire). Dans ce mode, une seule touche s’ouvre quelle que soit la position actuelle du curseur, que ce soit un fichier ou un sous-répertoire. Un tampon en mode dirigé est un gestionnaire de fichiers – un terminal analogique orienté cellule de caractères vers le Finder sur Mac ou Windows Explorer.

  5. Une des fonctions emacs que j’utilise presque constamment est “compare-windows”. Je préfère grandement cela aux outils de comparaison de ligne de commande “diff” ou à interface graphique, comme ce qui est intégré à Eclipse. Diff ou Eclipse comparent des fichiers entiers et vous indiquent quelles lignes sont différentes. Mais que se passe-t-il lorsque vous avez deux lignes différentes qui ressemblent beaucoup? Considérer ce qui suit:

    Quelle est la différence entre cette ligne et l’autre?

    Quelle est la différence entre cette ligne et l’autre?

    Combien de temps cela vous prendrait-il la différence? (Indice: les apostrophe ASCII et Unicode se ressemblent beaucoup.)

    Contrairement à diff et Eclipse, qui montrent simplement les lignes qui diffèrent, la fonction “compare-windows” d’emacs est interactive. Vous placez le curseur dans chacune des deux fenêtres côte à côte à un endroit où le contenu de la fenêtre est identique. Exécutez “compare-windows”, et le curseur dans chaque fenêtre se déplacera vers le premier caractère différent. Repositionnez le curseur dans l’une des fenêtres au même endroit que l’autre fenêtre et réexécutez «compare-windows» pour trouver la différence suivante. Cela facilite la comparaison des sous-parties de fichiers.

    Une autre chose que j’utilise régulièrement est de comparer les sums de contrôle. De nombreux projets logiciels dissortingbuent une archive de l’application sur une page qui inclut également un hachage MD5 de l’archive. Alors, comment comparer le hachage MD5 sur la page de dissortingbution avec le hachage MD5 calculé à partir du fichier téléchargé. Emacs rend cela sortingvial.

    Copiez d’abord le hash MD5 de la page Web dans un nouveau tampon emacs. Puis, après avoir téléchargé le fichier .tar.gz, lancez:

    md5sum downloadfile.tar.gz

    dans un tampon shell. Avec ces deux tampons affichés dans les fenêtres emacs côte à côte, positionnez le curseur dans chaque fenêtre au début de la sum de contrôle et exécutez “compare-windows”. Si elles sont identiques, le curseur dans chaque fenêtre sera positionné à la fin de chaque sum de contrôle.

  6. Dans le point précédent, j’ai donné l’exemple de l’exécution de “compare-windows” sur les lignes:

    Quelle est la différence entre cette ligne et l’autre?

    Quelle est la différence entre cette ligne et l’autre?

    “compare-windows” laissera le curseur positionné sur l’apostrophe dans chaque ligne. Donc, maintenant vous savez quels caractères diffèrent. Mais quels sont ces personnages? Tapez les deux commandes de raccourci clavier CTRL-x = et emacs affichera le caractère, sa valeur ascii en octal, décimal et hexadécimal, le décalage du caractère depuis le début du fichier et le décalage du caractère depuis le début de la ligne. Étant donné que ASCII est un codage à 7 bits, tous les caractères ASCII ont leur bit de poids fort désactivé. Une fois que vous voyez que la valeur de la première apostrophe est 0x27 et que la seconde est 0x92, il est évident que la première est dans le jeu de caractères ASCII et la seconde non.

  7. Emacs était l’un des premiers IDE, peut-être le tout premier. Il a des modes pour des langues spécifiques. Je les trouve pratiques pour imposer une indentation cohérente sur mon code pour le rendre plus lisible. Il existe également des fonctionnalités intégrées pour la compilation et le débogage du code. Je n’utilise pas beaucoup la fonctionnalité de compilation car lorsque j’écrivais pour un langage compilé comme C, j’étais habitué à le faire à l’invite du shell. La fonctionnalité de débogage était très intéressante pour C et C ++. Il a intégré gdb à l’éditeur de telle manière que vous disposiez à peu près des mêmes fonctionnalités que les fonctionnalités de débogage présentes dans Eclipse, mais que vous ne gaspilliez pas votre espace réel comme le font les IDE modernes basés sur l’interface graphique. Théoriquement, l’intégration du débogueur devrait être facile à faire appliquer à pratiquement n’importe quel autre langage, mais je n’ai pas vérifié pour voir quelles autres langues il utilise actuellement.

  8. Emacs vous permet de créer des macros en lui indiquant à quel moment commencer à mémoriser ce que vous tapez et quand vous arrêter. Ceci est extrêmement puissant pour les tâches que vous faites fréquemment.

  9. Emacs est infiniment extensible si vous connaissez Lisp. Mais même si je n’ai jamais appris Emacs Lisp, je trouve toujours que Emacs est l’un des outils les plus puissants que j’ai jamais utilisé.

  10. Emacs key-bindings. Je serai le premier à admettre que les raccourcis clavier d’Emacs sont nuls. Mais c’est tellement plus puissant que tout ce que j’ai utilisé, que je suis prêt à accepter avec les raccourcis clavier.

  11. Dans une veine humoristique, il ya des années, l’auteur d’Emacs, Richard Stallman (également à l’origine du GPL, fondateur du projet GNU et fondateur de la FSF), a embarrassé ceux qui considèrent vi et emacs comme une guerre sainte. Il a inventé le personnage “Saint IGNUcius” de l’église d’Emacs. Sous cette forme, Stallman a commenté: “Parfois, les gens me demandent si c’est un péché dans l’Eglise d’Emacs d’utiliser l’autre éditeur de texte vi. Eh bien, c’est vrai que vi vi vi est l’éditeur de la bête, mais une version gratuite de vi n’est pas un péché, c’est une pénitence. ” (Voir http://stallman.org/saint.html . Il y a aussi une photo mignonne de lui, mais comme je suis nouveau sur StackOverflow, il ne me laissera pas poster plus d’une URL. Allez donc sur le même domaine, mais récupère le fichier saintignucius.jpg)

J’ai utilisé Vim pendant 10 ans avant de plonger dans Emacs il y a 2 ans. Je me rappelle assez exactement comment ma courbe de productivité a évolué au fil du temps.

Mes points sont tous conditionnels, YMMV en fonction de vos forces et de votre expérience.

Si vous avez utilisé Unix et la ligne de commande suffisamment longtemps pour que vous soyez familiarisé avec Ca, Ce, Cn, Cp, Ck, Cy, etc. comme ils fonctionnent sur le shell, la transition vers par défaut) dans Emacs. J’ai récemment découvert que XCode utilise également ces liaisons.

Si vous êtes à l’aise avec un éditeur toujours actif, en gardant les tampons (comme vous le feriez avec les tabs du navigateur) et vivant ainsi dans l’application (comme avec les applications Web2.0 dans le navigateur), Emacs affichera probablement des améliorations de productivité immédiates.

Si vous travaillez généralement dans des projets de nombreux fichiers associés, cette persistance offre des avantages supplémentaires dans la gestion du contexte de ce tampon. Chaque tampon est contextualisé dans son fichier ouvert, ce qui permet d’utiliser facilement divers outils d’amélioration de la productivité pour votre projet (comme grep-find, eshell, run-python et slime). Ceci, associé à l’achèvement du texte, aux yasnippets, etc., commence à ressembler à un IDE bien qu’il soit ad hoc et fortement individualisé par votre configuration. Ceci est distinct des services plus civilisés comme IDE d’Emacs comme ECB.

Ma productivité a pris un coup au début alors que je tapais “jjjkkk” constamment Esc-Esc-Esc-Esc pour la première semaine environ. La semaine suivante, j’ai prudemment commencé à utiliser les bonnes touches de navigation. Ensuite, j’ai découvert le fichier de configuration … Honnêtement, si j’avais eu Emacs Starter Kit dès le départ, j’aurais dit que ma productivité revenait lentement à la parité entre la 3ème et la 4ème semaine, mais je suis descendu dans le fichier de configuration. Un de mes collègues vient de passer de vim à emacs et il vient de saisir le kit de démarrage et il est en route. La première semaine et il semble à l’aise et profite de tous les avantages de la surprise (cette sensation durera probablement une décennie).

Enfin, si vous faites des erreurs, vous gagnerez immédiatement en productivité (et en confiance) grâce à la mise à mort circulaire et à l’annulation de l’anneau. Je suis aussi personnellement un fan des défections spécifiques à la région.

Ma réponse courte est oui, cela vaut la peine de prendre 3 à 4 semaines de baisse de productivité pour apprendre Emacs. Même si vous préférez un utilitaire unix simplifié sur Emacs pour le développement, vous en tirerez un enseignement largement applicable au-delà de l’éditeur.

La documentation d’Emacs est une forêt. Je suis venu d’Emacs à Vim quand j’ai réalisé à quel point la documentation de Vim était organisée et à quel point la plupart des fonctionnalités étaient abordables. Je ne sais pas ce qu’est un expert Emacs, mais je vous préviens qu’apprendre à faire quelque chose d’utile prend beaucoup de temps et ne vous rendra pas meilleur avec Nethack. Reste avec Vim.

Textmate est un meilleur Emacs pour Mac, mais cela ne vous aidera pas avec Solaris. Eclipse est un peu cool et a beaucoup de plugins.

Emacs vous apportera un gain de productivité si vous souhaitez l’apprendre et le personnaliser en fonction de vos besoins. La plupart des gens ne le sont pas. Pour augmenter votre productivité, vous devez utiliser l’outil au-delà de la simple édition – la plupart des utilisateurs ne progressent jamais après une simple modification.

Voici un test rapide: avez-vous personnalisé votre gestionnaire de fenêtres pour rendre votre environnement plus efficace (adapté à vos besoins)? Si non, il est probable que vous n’obtiendrez pas le retour sur investissement en apprenant emacs.

Cela étant dit, si vous développez Java, Eclipse est la réponse standard, votre question est donc théorique.

J’étais très content de mon Vim, mais une fois que j’ai entendu parler du mode org , j’ai commencé à apprendre Emacs. org-mode pourrait être une bonne raison pour apprendre Emacs.

J’aime emacs et l’utilise tous les jours.

Cela dit, je ne pense pas que le coût de l’apprentissage sera compensé par des gains de productivité à long terme.

Si vous programmez Java, vous avez besoin d’un bon IDE. Emacs va bien dans le même sens, mais regardons les choses en face, IDEA et al. (emacs a probablement inspiré beaucoup de ces IDE, mais c’est une autre histoire).

Deux fois j’ai essayé d’apprendre Emacs. Cela ne correspond tout simplement pas au fonctionnement de mon cerveau, donc je ne l’utilise pas.

Emacs (ou vim) n’est pas bien meilleur que vim (ou Emacs). Les deux ont beaucoup d’options à append à eux qui leur permettent de faire des choses étonnantes. Je ne doute pas que tout ce que vous pouvez faire dans Emacs peut aussi être fait dans Vim, mais pas dans la norme.

Essayez Emacs. Voir si ça va mieux. C’est une situation sans perte.

Je veux regarder plus loin emacs, mais je ne peux pas l’utiliser pendant de longues périodes; ça me fait mal aux mains. Est-ce que je fais quelque chose d’horriblement mauvais?

vim et emacs, ils sont les éditeurs les plus performants depuis un certain temps. Si vous en connaissez un très bien, je doute que vous gagniez autant dans le processus …

Cependant, il est toujours judicieux de chercher quel plug-in est disponible, car quelques nouveaux plugins peuvent faire des merveilles pour la productivité.

/ Johan

Non (et j’ai utilisé les deux).

Dans le même ordre d’idées, ne cherchez pas une guerre de religion (mais allez-y, déclinez-moi si vous en ressentez le besoin), pourquoi estimez-vous que la seule option pour vi est emacs? Est-ce le système d’exploitation que vous développez ou seulement les options que vous avez explorées?

Le paysage du développement Java bénéficie des meilleurs IDE de nos jours (gratuit et payant), sinon le meilleur en matière d’édition de code et de refactoring. IntelliJ IDEA dispose même d’un plugin vi qui peut vous aider à vous sentir plus chez vous, par exemple (pas sûr que quelque chose de similaire soit disponible pour Eclipse). Bien que le changement d’outils implique une courbe d’apprentissage, le temps passé à le faire pourrait en valoir la peine si le saut est suffisamment important.

À quelle vitesse tapez-vous? Si vous chasse et pique, alors emacs n’est pas pour vous. Si votre jeûne, cela peut aider à ne pas avoir à saisir votre souris tout le temps.

En général, emacs est plus puissant que vi. Vous pouvez faire beaucoup plus de choses dans emacs.

Votre productivité augmentera si vous décidez de programmer votre éditeur de texte. Parmi les deux éditeurs, emacs présente un meilleur cadre ou une personnalisation constante. Si vous ne programmez pas votre éditeur de texte, restz simplement avec ce qui est confortable.

Une bonne raison d’apprendre Emacs est que d’autres programmes utilisent également les raccourcis clavier d’Emacs. Vous pouvez utiliser les raccourcis clavier Emacs à une invite bash, par exemple, ou toute autre chose utilisant GNU readline. Il est bon d’apprendre le mouvement de base et la suppression de mots / lignes et d’annuler / rétablir des accords dans Emacs pour pouvoir les utiliser dans d’autres programmes. Votre productivité augmentera dans ces autres outils, même si vous n’utilisez plus jamais Emacs.

Je connais Vim et Emacs et Vim s’adapte mieux à mon cerveau et à mes habitudes. Mais d’autres personnes disent la même chose à propos d’Emacs. Vous ne savez jamais pour vous à moins que vous essayiez. Il ne faut pas beaucoup de temps pour apprendre assez bien Emacs pour voir si ça va vous plaire.

Est-ce que ma productivité va vraiment augmenter?

Pour les premiers jours / semaines, absolument pas.

Après avoir cessé de lire le tutoriel à chaque fois que vous souhaitez modifier quelque chose, assurez-vous que…

Emacs est plus “puissant” que vim, son moteur de script est beaucoup plus flexible et il y a beaucoup plus de scripts, de modes et de méthodes similaires autour d’Emacs.

Cela dit, le contraire est vrai. Si vous passiez autant de temps à améliorer votre connaissance de Vim, vous pourriez être tout aussi productif.

Peut-être pas productif de la même manière – je dirais que vim est plus rapide pour éditer les fichiers, emacs est mieux à même de faire tout le rest (encore une fois, je dirais que les flymake-mode sont plus rapides que vim) équivalent)

I agree with Alan Storm: “because the patterns and metaphors used in Emacs may not align with you brain”

This is a very important factor. Different brains adapt differently to different interfaces.

Some of the main – and easily available – features I really love Emacs for, and I count as productivity enhancers:
1. “yank-pop” facility – every cut/copy is saved into a stack so you can later choose which to paste (don’t know if vi / Vim has this but most Java IDEs don’t)
2. the Ctrl-key navigation mapping – this allows you to navigate your file without moving your hands off to use the arrow keys. (key-binding in other editors helps of course)
3. available on almost every platform (true of vi/Vim too of course) – whether GUI- or text-based (Java IDEs are available on most platforms too but only in GUI mode, and are significantly larger and need to be installed separately whereas Emacs is generally more widely available – BSD / *nix / Linux / Mac systems
4. I prefer my editor to stay out of the way until I need it – Emacs’ spartan display forces me to think before I type.
5. The basic navigation keys in Emacs are kind of universally available – on my Mac OS, I can use these keys in terminal, mac mail, etc.

Ultimately, if Emacs’ philosophy appeals to you, you will put in the extra effort to learn it. And it will reward you.

Since vi/Vim and Emacs are pretty close in terms of what they can or cannot do, productivity with these two editors comes from experience in using it.

In my opinion, being a programmer it won’t take you long to get the general idea about Emacs once you start using it. Others can only say so much, you got to try it out for yourself to know it.

As for me, I use both. It’s like taking more than one weapon to a war, use the right one in the right circumstances. 😉

I like Emacs, you can extend it by your needs- in my eyes, any system which you can extend by yourself is award-worthy.

Disclaimer: I’m ignorant. I’ve been an emacs user for about 4 years, and vim user for about 6 months, maybe more like 15 if you count all the times I’ve sortinged to learn it and hated it. (The writing vs moving mode distinction kills me. Every time. So if it doesn’t kill you then my opinion might be completely worthless.) That said, I think my opinion is actually interestingly different from the 26 others that I’ve seen on here, so I’m going to voice it. :Disclamer

Mon avis:

  • Emacs is better for typing, especially large-scale “I’m writing a new feature and it will be a while before I even try to see if it runs”.
  • Vim is better for editing, especially quick edits.

When I need to understand and hack in 8 files simultaneously, Emacs’ properties as a tiling window manager with multi-buffer (buffers have a 1.2:1 correspondence to files, they’re often the same thing, but aren’t necessarily) regexp-search (and replace) are incredible.

If I don’t like some small thing because of git diff in the shell (I don’t use emacs’ VC features very often, although when I do I love them) I open it with vim and get the hell out faster than I could hit Alt-TAB .

The fact that Emacs’ editing commands are more readily available while typing make typing much faster than it is in Vim. Ctrl+a is much faster than ESC ^ i , and you don’t have the cognitive load of “do I want a or i or o or O …” which, god, I hate thinking about. And same for all the other movement commands commands.

I type faster, much faster, in Emacs. That means things like Org Mode (which I use for everything: TODO lists, bug tracking, notes, long emails, documentation…) make more sense (to me) in Emacs than they would in Vim.

And, Elisp is incredible, even though it sucks. It totally makes up for Emacs’ broken regular expressions: you can use the full power of emacs everywhere , including in a multi-file regexp-replacement. And in text snippets .

If you are concerned about the health of your hands choose Vim.

I suffered from a bout of RSI in the past, and I found one of the main culprits was “chording” ie holding down many keys at the same time. Emacs uses chording extensively whilst VIM uses single letter commands chained in quick succession. This puts much less strain on your hands as the muscles don’t have to twist and contort to perform commands in the editor. Injury due to RSI can ruin your productivity so in your calculations be sure to account for this.

I really see no reason to switch. I’ve used vi for a long time and am quite comfortable with it; about every six months I would install emacs to give it a go, then quickly just switch back. Yes there were things I much preferred about vi, but the main reason I never stuck with it is because the time investment to fully learn another editor when I already know an extremely capable one isn’t worth it.
I’m reminded of this rather dated study.

In my opinion, SLIME is about the only reason to switch to emacs if you’re already proficient with vi.

Non

I’ve been using emacs for years, I’m a convert from VIM, and I love it to bits.

But any productivity gains from having a better, programmable editor will be totally wiped out by the enormous amount of head-fucking that it takes to get the hang of emacs. It was designed as a console editor, and its idea of interface is not yours.

And even when you’ve got it completely, your extra productivity will mainly be expressed in the extra emacs lisp you can write.

On s’en fout? It’s great fun, and lisp is the dogs! If you want to ‘get things done’, then forget about programming. You can always hire programmers to ‘do’ ‘things’.

The only circumstance under which I’d recommend learning emacs for productivity reasons is if you’re a lisp/scheme/clojure programmer. It makes such a good lisp environment that then the few seconds it will save you every time you want to do anything will quickly add up to a real gain. And elisp (which stands in relation to lisp as excel macros stand to ALGOL) will seem much less alien if you already use a real lisp.

If you do give it a try, use it on a virtual console where it feels more like a sane way to arrange an editor. Only when that makes sense try to use it under a window system, which will fight with it.

In an earlier answer, Aristotle Pagaltzis wrote: “Vim excels in the small … You can easily do things in Vim in the normal course of editing that would require you to drop down to scripting in Emacs.”

I switched to Emacs after over a decade of exclusively using vi, and initially I would have agreed with the claim, “You can easily do things in Vim in the normal course of editing that would require you to drop down to scripting in Emacs.” But then I discovered that by using Emacs’ macro capability and a large repeat count, I could easily make Emacs do pretty much everything that vi had made easy, and a great deal more.

Emacs’ macro functionality involves three commands:

 Cx ( start remembering keystrokes Cx ) stop remembering keystrokes Cx e replay the remembered keystrokes 

For example, in vi if I wanted to find all tags in an HTML file and add a target atsortingbute, I might do something like the following:

 :g/^/ target="_blank">/ 

This example is not perfect, since it assumes that all tags are on a line by themselves. But it’s good enough for illustrating how one accomplishes the equivalent task in two different editors.

To achieve the same effect easily in emacs, here’s what I do:

 1. Cx ( 2. MCs  3. Cb 4. Cs > 5. Cb 6. target="_blank" 7. Cx ) 8. Cu 10000 Cx e 

Here’s a description of what each keystroke above does:

 1. start remembering keystrokes 2. regex search for " after the "a" is not HTML. It's emacs regex notation for end-of-word. 3. back up one character - as a side-effect this gets you out of search mode 4. search for the next ">" 5. back up over the ">" 6. enter space as an atsortingbute-delimiter followed by the target="_blank" atsortingbute 7. stop remembering keystrokes 8. replay the remembered keystrokes 10,000 times or until the search fails 

It looks complicated, but it’s actually very easy to type. And you can use this approach to do lots of things that vi can’t do, without ever dropping down to Lisp code.