Question

Dès le départ :Je fais pas Je veux déclencher une guerre de religion.

j'ai utilisé vi aussi loin que je me souvienne, et les quelques fois où j'ai essayé de comprendre Emacs J'étais tellement perdu que j'ai vite abandonné.Cependant, beaucoup de gens trouvent Emacs 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é augmentera-t-elle si j'investis du temps pour me familiariser avec Emacs ?La fonctionnalité qu'il offre est-elle supérieure Vigueur sera-t-il récompensé par des augmentations de productivité dans un délai raisonnable ?

Répéter: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 du temps ou non.Ma productivité va-t-elle vraiment augmenter ?

Était-ce utile?

La solution

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 qui le rendent plus puissant que vi, mais toutes ne sont même pas liées à la programmation.(Pouvez-vous envoyer des e-mails ou lire des actualités depuis vi ?Non, mais peu importe ?) Si vous êtes à l'aise avec Lisp (je ne le suis pas), vous pourrez peut-être écrire des modules complémentaires, des modes et des trucs pour vous faciliter la vie, mais il s'agit probablement simplement d'une coloration syntaxique et d'une accolade. assorti et un régal pour les yeux comme ça.

Je vais arrêter de divaguer maintenant.Est-ce que votre productivité augmenter en utilisant Emacs ?Non.

Mise à jour:Voir mon commentaire ci-dessous.Depuis que j'ai posté ceci, je avoir J'ai découvert comment l'utilisation d'emacs m'a rendu plus productif que l'utilisation de vi.

Autres conseils

[Clause de non-responsabilité: personnellement, je préfère Vim.Avis de non-responsabilité :continuer à lire.]

Vim excelle dans les petits :en séparant les concepts de mouvement et d'action et en fournissant des fonctionnalité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 au cours du processus normal d'édition qui vous obligeraient à passer aux scripts dans Emacs.De plus, la majeure partie de l'énergie que vous utilisez sort de la boîte, donc même si vous disposez d'un .vimrc personnalisations, il y a de fortes chances que vous puissiez travailler de manière productive avec n'importe lequel Installation de Vim.

Emacs excelle dans les grands domaines :en mappant tous ses concepts d'interface utilisateur directement aux constructions et concepts de base dans Elisp, il devient très facile d'introduire globalement des fonctionnalités pour des types spécifiques de fichiers ou de circonstances, faisant d'Emacs quelque chose comme une forme d'Excel basée sur du texte et beaucoup plus structurée.Cela suppose que vous passerez 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 vous permettre de rester facilement dans cet environnement unique pour tout ce que vous souhaitez faire.

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

vi est un couteau de cuisine.

vim est un couteau de chef vraiment agréable, tranchant et équilibré.

Emacs est un sabre laser.

La plupart du temps, mon travail consiste à couper des légumes.Parfois, je dois affronter toute une armée de robots.

J'utilise Emacs depuis 20 ans.Je suis en train de taper dans Emacs en ce moment avec un widget appelé "Tout n'est que du texte" cela me permet d'aspirer du texte dans et hors des zones de texte dans Firefox.Je peux aller très vite dans Emacs.Sans cela, je suis nettement moins productif.

C'est très discutable, mais je pense aussi qu'apprendre Emacs peut vous apprendre une quantité surprenante de choses sur la programmation.

Selon la façon dont vous codez, vous peut voir une augmentation de la productivité.Pour information, 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 poussé au point d'apprendre réellement Emacs, c'est sa capacité utile à ouvrir un grand nombre de fichiers à la fois et à basculer facilement entre eux.J'étais en train d'introduire une fonctionnalité qui ajoutait et touchait un grand nombre de classes.(C'était du C++, donc il y avait généralement deux fichiers par classe.) Comme j'étais encore en train de consolider l'interface, j'étais généralement en train de mettre à jour un fichier lorsque je réalisais que je devais en changer un autre.

Avec gvim, il était plus simple d'ouvrir une nouvelle fenêtre pour chaque fichier, ce qui commençait à devenir compliqué.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 ouvert un fichier, il est très facile de basculer entre les tampons ouverts (Ctrl-x, Ctrl-b).

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

Il y a encore certaines choses que je trouve plus faciles dans vim (par ex.mode de sélection de bloc, enregistrement de macro simple, mode diff) et des choses plus faciles dans Emacs (alignement des lignes, gestion des fichiers/tampons, gestion des fenêtres/écrans).Je me retrouve donc à alterner entre les deux (et parfois à utiliser 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 Emacs, puis utilisez-le pour écrire du code pour une matinée ou une journée, en vous appuyant fortement sur l'aide.Si vous n'aimez toujours pas ce que vous voyez, restez avec vim.Indépendamment de ce que l’éditeur apporte, 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 s'il vous plaît, répondez à une question hautement subjective par oui/non.

Oui, vous constaterez peut-être une augmentation de la productivité grâce à la puissante fonctionnalité.

Non, vous ne verrez pas d'augmentation de productivité car les modèles et les 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 de 1980 à 1991 environ.La seule fois où je n'ai pas utilisé vi, c'était lorsque j'avais affaire à une installation minimale d'Unix qui était trop petite pour inclure vi, j'ai donc dû revenir à ed qui est le sous-ensemble minimal de fonctionnalités d'édition que le vi original a été construit. au dessus de.

À partir de 1985 environ, les autres programmeurs avec lesquels je travaillais chantaient constamment les louanges d'emacs.Mais chaque fois que j'essayais de l'apprendre, je n'allais pas très loin.Je passerais une heure à parcourir le didacticiel Emacs (C-h t) et à la fin, tout ce que je saurais serait comment insérer et modifier du texte et me déplacer sur l'écran.Je pouvais faire tellement plus avec vi que ce que j'avais appris pendant cette heure avec emacs que je ne pouvais pas faire le changement.Trois mois plus tard, je trouvais le temps d'y consacrer une heure supplémentaire et je finissais par parcourir le même matériel.Emacs a une courbe d'apprentissage avec un "L" majuscule.Ce n'est que lorsque j'ai signé un contrat où tout le monde utilisait Emacs que j'ai finalement décidé que je devais consacrer plus d'une heure à la fois à l'apprendre.Après avoir passé un peu plus d'une journée à ne rien faire d'autre qu'à parcourir le didacticiel et la documentation incluse, je suis finalement arrivé au point où je pouvais faire des choses avec emacs que je ne pouvais pas faire avec vi.Depuis, je n’ai plus jamais voulu y retourner.Je peux toujours taper des commandes vi pendant mon sommeil, mais je peux faire bien 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 soient des fonctionnalités copiées d'emacs.Si tel est le cas, et si vous maîtrisez déjà vim, emacs n'offre peut-être pas autant d'avantages pour vous.

Parmi les choses dont je dépends tout le temps dans Emacs figurent :

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

  2. Emacs fournit un environnement multi-"fenêtres" affichable sur un terminal à cellules de caractères.Avant les graphiques bitmap et les vraies fenêtres, emacs était écrit pour simuler un comportement semblable à celui d'une fenêtre en utilisant uniquement des caractères ascii et le positionnement du curseur.Vous pensez probablement : « C'est de l'histoire ancienne.Pourquoi devrait-on s’en soucier aujourd’hui ? » J’utilise encore cette fonctionnalité tous les jours.J'utilise une société d'hébergement Web qui me permet un accès SSH.Je peux donc me connecter à un hôte Linux via Internet et exécuter des commandes shell.Bien que ce soit assez puissant, il est bien plus puissant de pouvoir diviser mon émulateur de terminal en "fenêtres" à l'aide d'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 des répertoires dans d'autres " les fenêtres".

    En fait, quand j'ai dit « fenêtre » dans le paragraphe précédent, je voulais vraiment dire « tampon ».L'émulation de cellules de caractères de Windows par Emacs est un moyen de diviser l'espace de l'écran.Un tampon emacs est associé à un 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 le contenu d'un tampon, vous choisissez une fenêtre et lui indiquez quel tampon vous souhaitez voir.Vous pouvez donc travailler sur bien plus de choses que vous n’avez d’espace à afficher sur l’écran.C'est à peu près analogue à ce que vous faites dans une interface graphique graphique bitmap moderne 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 exécutant des shells que vous le souhaitez.Vous pouvez copier et coller du texte entre un tampon shell et un fichier texte, ou comparer une partie de 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 différents. fichiers texte.En fait, cela est vrai pour la plupart des types de tampons, pas seulement pour les tampons shell et les tampons associés aux fichiers.

  4. Lorsque vous utilisez la commande d'emacs pour ouvrir un fichier, mais que ce que vous avez sélectionné est en fait un répertoire, le tampon s'exécute en mode dired (éditeur de répertoire).Dans ce mode, une seule frappe ouvrira tout ce que le curseur pointe actuellement, qu'il s'agisse d'un fichier ou d'un sous-répertoire.Un tampon en mode dired est un gestionnaire de fichiers - un terminal orienté cellule de caractères analogue au Finder sur Mac ou à l'Explorateur Windows.

  5. L'une des fonctions d'emacs que j'utilise presque constamment est "comparer les fenêtres".Je préfère de loin cela aux outils de comparaison de lignes de commande ou d'interface graphique comme ceux intégrés à Eclipse.Diff ou Eclipse comparent des fichiers entiers et vous montrent quelles lignes diffèrent.Mais que se passe-t-il lorsque vous avez deux lignes différentes qui se 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 faudrait-il pour voir la différence ?(Indice:Les apostrophes ASCII et Unicode se ressemblent beaucoup.)

    Contrairement à diff et Eclipse, qui affichent simplement les lignes qui diffèrent, la fonction « comparer les fenêtres » d'emacs est interactive.Vous positionnez le curseur dans chacune des deux fenêtres côte à côte à un point où le contenu de la fenêtre est le même.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 jusqu'au point où il est identique à l'autre fenêtre, et réexécutez "comparer les fenêtres" pour trouver la différence suivante.Cela facilite la comparaison des sous-parties de fichiers.

    Une autre chose pour laquelle j'utilise régulièrement "comparer-windows" est de comparer les sommes de contrôle.De nombreux projets logiciels distribuent une archive tar de l'application sur une page qui comprend également un hachage MD5 de l'archive tar.Alors, comment comparer le hachage MD5 sur la page de distribution avec le hachage MD5 calculé à partir du fichier téléchargé.Emacs rend cela trivial.

    Copiez d'abord le hachage MD5 de la page Web dans un nouveau tampon emacs.Ensuite, après avoir téléchargé le fichier .tar.gz, exécutez :

    md5sum fichier téléchargé.tar.gz

    dans un tampon shell.Avec ces deux tampons affichés dans des fenêtres Emacs côte à côte, positionnez le curseur dans chaque fenêtre au début de la somme de contrôle et exécutez "compare-windows".S'ils sont identiques, le curseur dans chaque fenêtre sera positionné à la fin de chaque somme 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 de chaque ligne.Alors maintenant, vous savez quels personnages diffèrent.Mais de quels personnages s’agit-il ?Tapez la commande à deux touches CTRL-x =, et emacs affichera le caractère, sa valeur ascii en octal, décimal et hexadécimal, le décalage du caractère par rapport au début du fichier et le décalage du caractère par rapport au début de la ligne.Comme ASCII est un codage sur 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 ne l'est pas.

  7. Emacs a été l'un des premiers IDE, peut-être le tout premier.Il dispose de modes pour des langues spécifiques.Je les trouve pratiques pour imposer une indentation cohérente sur mon code afin de le rendre plus lisible.Il existe également des fonctionnalités intégrées pour compiler et déboguer le code.Je n'utilise pas beaucoup la fonctionnalité de compilation car lorsque j'écrivais pour un langage compilé comme C, j'avais l'habitude de 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 sorte que vous obteniez à peu près les mêmes fonctionnalités que les capacités de débogage actuelles d'Eclipse, mais ne gaspilliez pas l'espace d'écran comme le font les IDE modernes basés sur une interface graphique.Théoriquement, l'intégration du débogueur devrait être facile à appliquer à pratiquement n'importe quel autre langage, mais je n'ai pas vérifié avec quels autres langages il fonctionne aujourd'hui.

  8. Emacs vous permet de créer des macros en lui indiquant quand commencer à se souvenir de ce que vous tapez et quand s'arrêter.Ceci est extrêmement puissant pour les tâches que vous effectuez 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 qu'Emacs est l'un des outils les plus puissants que j'ai jamais utilisé.

  10. Raccourcis de touches Emacs.Je serai le premier à admettre que les raccourcis clavier d'Emacs sont nuls.Mais il est tellement plus puissant que tout ce que j'ai utilisé jusqu'à présent, que je suis prêt à accepter les raccourcis clavier.

  11. Dans une veine humoristique, il y a des années, l'auteur d'Emacs, Richard Stallman (également à l'origine de la GPL, fondateur du projet GNU et fondateur de la FSF), a ridiculisé ceux qui traitaient de vi vs.emacs comme une guerre sainte.Il a inventé le personnage "Saint IGNUcius" de l'église d'Emacs.Sous cette forme, Stallman commentait : « Parfois, les gens me demandent si c'est un péché dans l'Église d'Emacs d'utiliser l'autre éditeur de texte vi.Bon, c'est vrai que vi vi vi est l'éditeur de la bête, mais utiliser 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 jolie photo de lui, mais comme je suis nouveau sur StackOverflow, cela ne me permet pas de publier plus d'une URL.Allez donc sur le même domaine, mais récupérez le fichier saintignucius.jpg)

J'ai utilisé Vim pendant 10 ans avant de me lancer dans Emacs il y a 2 ans.J'ai un souvenir assez récent de la façon dont ma courbe de productivité s'est modifiée au fil du temps.

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

Si vous utilisez Unix et la ligne de commande suffisamment longtemps pour être familier avec C-a, C-e, C-n, C-p, C-k, C-y, etc., car ils fonctionnent sur le shell, il ne faudra pas longtemps pour passer à l'utilisation de ces mêmes liaisons (la valeurs 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 en cours d'exécution, gérant les tampons (comme vous le feriez pour les onglets du navigateur) et vivant ainsi dans l'application (comme vous le feriez 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 comportant de nombreux fichiers liés, cette persistance présente des avantages supplémentaires dans la conservation du contexte de ce tampon.Chaque tampon est contextuel dans son fichier ouvert, permettant une utilisation pratique de divers outils d'amélioration de la productivité pour votre projet (comme grep-find, eshell, run-python et slime).Ceci, associé à la complétion de texte, aux yasnippets, etc., commence à ressembler un peu à un IDE, bien qu'ad hoc et fortement individualisé par votre configuration.Ceci est en dehors des services plus civilisés de type Emacs IDE comme ECB.

Ma productivité en a pris un coup au début car je tapais constamment "jjjkkk" Esc-Esc-Esc-Esc pendant environ la première semaine.La semaine suivante, j'ai commencé à utiliser prudemment les bonnes touches de navigation.Puis j'ai découvert le fichier de configuration...Honnêtement, si j'avais eu Kit de démarrage Emacs dès le début, j'aurais dit que ma productivité revenait lentement à la parité au cours de la 3ème à la 4ème semaine, mais je suis descendu dans le terrier du fichier de configuration.Cependant, un de mes collègues vient de passer de vim à emacs et il vient de récupérer le kit de démarrage et il est en route.La première semaine, il semble à l’aise et profite de tous les avantages surprises (cette sensation durera probablement une décennie).

Enfin, si vous faites des erreurs, vous gagnerez immédiatement en productivité (et en confiance) grâce au kill/yank-ring et à l'annulation circulaires.Je suis également personnellement fan des annulations spécifiques à une 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 décidez que vous préférez un combo d'utilitaires Unix simplifié à Emacs pour le développement, vous en tirerez une formation largement applicable au-delà de l'éditeur.

La documentation Emacs est une forêt.Je suis passé d'Emacs à Vim lorsque j'ai réalisé à quel point la documentation de Vim est organisée et à quel point de nombreuses fonctionnalités sont accessibles.Je ne sais pas ce qui attend 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 chez Nethack.Restez fidèle à Vim.

Ami de texte est un meilleur Emacs pour Mac, même si cela ne vous aidera pas avec Solaris.Eclipse est plutôt cool et possède de nombreux plugins.

Emacs offrira un gain de productivité si vous êtes prêt à l'apprendre et à le personnaliser pour l'adapter à vos besoins.La plupart des gens ne le sont pas.Pour augmenter votre productivité, vous devez utiliser l'outil pour plus qu'une simple édition - la plupart des gens ne dépassent jamais la simple édition.

Voici un test rapide :avez-vous personnalisé votre gestionnaire de fenêtres pour rendre votre environnement plus efficace (adapté à vos besoins) ?Si « non », vous n'obtiendrez probablement pas de retour sur investissement en apprenant Emacs.

Cela étant dit, si vous développez Java, Eclipse est la réponse standard, donc votre question est plutôt sans objet.

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

J'adore Emacs et je l'utilise tous les jours.

Cela dit, je ne pense pas que le coût de l’apprentissage sera récupéré par les gains de productivité ultérieurs.

Si vous programmez Java, vous avez besoin d'un bon IDE.Emacs fait un bon bout de chemin pour en être un, mais soyons réalistes, IDEA et al l'ont battu haut la main.(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 et je ne l’utilise donc pas.

Emacs (ou vim) n'est pas significativement meilleur que vim (ou Emacs).Les deux ont de nombreuses options à ajouter qui leur permettent de faire des choses incroyables.Je n'ai aucun doute que tout ce que vous pouvez faire dans Emacs, vous pouvez également le faire dans Vim, mais ce n'est pas standard.

Essayez Emacs.A voir si ça va mieux.C'est une situation sans perte.

Je souhaite approfondir mes recherches sur Emacs, mais je ne peux tout simplement pas l'utiliser pendant de longues périodes ;ça me fait mal aux mains.Est-ce que je fais quelque chose d'horriblement mal ?

vim et emacs, ce sont les éditeurs les plus compétents et ce depuis un certain temps.Si vous en connaissez très bien un, je doute que vous y gagniez autant...

Cependant, c'est toujours une bonne idée d'examiner le plugin 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 de guerre de religion (mais allez-y et votez contre moi si vous pensez que vous devez le faire), pourquoi pensez-vous que la seule option pour vi est emacs ?Est-ce le système d'exploitation sur lequel vous développez, ou simplement les options que vous avez explorées ?

Le paysage du développement Java bénéficie actuellement de certains des meilleurs IDE (à la fois gratuits et payants), voire le meilleur en matière de prise en charge de l'édition de code et de la refactorisation. IntelliJ IDEA dispose même d'un plugin vi qui peut vous aider à vous sentir plus à l'aise, par exemple (je ne sais pas si quelque chose de similaire est disponible pour Eclipse).Même si changer d’outil implique une courbe d’apprentissage, le temps passé à le faire peut en valoir la peine si le saut est suffisamment grand.

À quelle vitesse tapez-vous ?Si vous chassez et picorez, alors emacs n'est pas pour vous.Si vous êtes rapide, cela peut vous aider à ne pas avoir à saisir votre souris tout le temps.

Généralement, emacs est plus puissant que vi.Vous pourriez faire beaucoup plus de choses avec Emacs.

Votre productivité augmentera si vous décidez de consacrer du temps à programmer votre éditeur de texte.Des deux éditeurs, emacs présente un meilleur framework ou une personnalisation constante.Si vous ne programmez pas votre éditeur de texte, restez simplement avec ce qui vous convient.

Une bonne raison d'apprendre Emacs est que d'autres programmes utilisent également les raccourcis clavier Emacs.Vous pouvez utiliser les raccourcis clavier Emacs à une invite bash, par exemple, ou toute autre chose en utilisant GNU readline.Il est bon d'apprendre les mouvements de base, la suppression de mots/lignes et les accords d'annulation/rétablissement dans Emacs afin de 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 affirment la même chose à propos d'Emacs.Vous ne savez jamais par vous-même à moins d'essayer.Il ne faut pas beaucoup de temps pour apprendre suffisamment bien Emacs et voir si vous allez l'apprécier.

Ma productivité va-t-elle vraiment augmenter ?

Les premiers jours/semaines, absolument pas.

Une fois que vous n'aurez plus à lire le didacticiel à chaque fois que vous souhaitez modifier quelque chose, bien sûr.

Emacs est plus "puissant" que vim, son moteur de script est beaucoup plus flexible et il existe beaucoup plus de scripts, de modes et autres construits autour d'emacs.

Cela dit, c'est le contraire qui est vrai.Si vous passiez le même temps à améliorer vos connaissances sur vim, vous seriez tout aussi productif.

Peut-être pas productif de la même manière - je dirais que vim est plus rapide pour éditer des fichiers, emacs est meilleur pour faire tout le reste (encore une fois, je dirais personnellement des choses comme flymake-mode, les liaisons VCS sont plus rapides à utiliser que l'équivalent vim)

Je suis d'accord avec Alan Storm :"parce que les modèles et les métaphores utilisés dans Emacs peuvent ne pas correspondre à votre cerveau"

C'est un facteur très important.Différents cerveaux s'adaptent différemment aux différentes interfaces.

Certaines des fonctionnalités principales - et facilement disponibles - pour lesquelles j'aime vraiment Emacs et que je considère comme des améliorateurs de productivité :
1.Fonction "yank-pop" - chaque coupe/copie est enregistrée dans une pile afin que vous puissiez ensuite choisir lequel coller (je ne sais pas si vi / Vim l'a, mais la plupart des IDE Java ne le font pas)
2.le mappage de navigation avec la touche Ctrl - cela vous permet de naviguer dans votre fichier sans lâcher vos mains pour utiliser les touches fléchées.(la liaison de touches dans d'autres éditeurs aide bien sûr)
3.disponible sur presque toutes les plates-formes (c'est également vrai pour vi/Vim bien sûr) - qu'ils soient basés sur une interface graphique ou sur du texte (les IDE Java sont également disponibles sur la plupart des plates-formes, mais uniquement en mode GUI, et sont nettement plus grands et doivent être installés séparément alors qu'Emacs est généralement plus largement disponible - systèmes BSD / *nix / Linux / Mac
4.Je préfère que mon éditeur reste à l'écart jusqu'à ce que j'en ai besoin - l'affichage spartiate d'Emacs m'oblige à réfléchir avant de taper.
5.Les touches de navigation de base dans Emacs sont en quelque sorte universellement disponibles - sur mon Mac OS, je peux utiliser ces touches dans le terminal, Mac Mail, etc.

En fin de compte, si la philosophie d'Emacs vous plaît, vous ferez un effort supplémentaire pour l'apprendre.Et cela vous récompensera.

Étant donné que vi/Vim et Emacs sont assez proches en termes de ce qu'ils peuvent ou ne peuvent pas faire, la productivité avec ces deux éditeurs vient de l'expérience de leur utilisation.

À mon avis, en tant que programmeur, il ne vous faudra pas longtemps pour avoir une idée générale d'Emacs une fois que vous aurez commencé à l'utiliser.Les autres ne peuvent pas en dire beaucoup, il faut l'essayer par soi-même pour le savoir.

Quant à moi, j'utilise les deux.C'est comme utiliser plus d'une arme dans une guerre : utiliser la bonne dans les bonnes circonstances.;)

J'aime Emacs, vous pouvez l'étendre selon vos besoins. À mes yeux, tout système que vous pouvez étendre vous-même est digne d'une récompense.

Clause de non-responsabilité: Je suis ignorant.J'utilise Emacs depuis environ 4 ans et vim depuis environ 6 mois, peut-être plus de 15 si vous comptez toutes les fois où j'ai essayé de l'apprendre et je l'ai détesté.(La distinction entre mode écriture et mode déplacement me tue.À chaque fois.Donc si cela ne vous tue pas, mon opinion pourrait être complètement sans valeur.) Cela dit, je pense que mon opinion est en fait intéressante et différente des 26 autres que j'ai vues ici, donc je vais l'exprimer.:Avertissement

Mon avis:

  • Emacs est meilleur pour la saisie, en particulier à grande échelle "J'écris une nouvelle fonctionnalité et il me faudra un certain temps avant même essayer pour voir si ça marche".
  • Vim est meilleur pour l'édition, en particulier pour les modifications rapides.

Lorsque j'ai besoin de comprendre et de pirater 8 fichiers simultanément, les propriétés d'Emacs en tant que gestionnaire de fenêtres en mosaïque avec multi-tampon (les tampons ont une correspondance de 1,2:1 avec les fichiers, c'est souvent la même chose, mais ne le sont pas nécessairement) regexp -la recherche (et le remplacement) sont incroyables.

Si je n'aime pas une petite chose à cause de git diff dans le shell (je n'utilise pas très souvent les fonctionnalités VC d'emacs, même si quand je le fais, je les adore) je l'ouvre avec vim et je m'en vais plus vite que je ne pourrais frapper Alt-TAB.

Le fait que les commandes d'édition d'Emacs soient plus facilement disponibles lors de la saisie rend la saisie beaucoup plus rapide que dans Vim. Ctrl+a est beaucoup plus rapide que ESC ^ i, et vous n'avez pas la charge cognitive de "est-ce que je veux a ou i ou o ou O… » à laquelle, mon Dieu, je déteste penser.Et pareil pour toutes les autres commandes de mouvements.

Je tape plus vite, beaucoup plus vite, dans Emacs.Cela signifie des choses comme Mode organisation (que j'utilise pour tout :Les listes TODO, le suivi des bogues, les notes, les longs e-mails, la documentation...) ont plus de sens (pour moi) dans Emacs que dans Vim.

Et Elisp est incroyable, même si ça craint.Cela compense totalement les expressions régulières cassées d'Emacs :vous pouvez utiliser toute la puissance d'emacs partout, y compris dans un remplacement d'expression rationnelle multi-fichiers.Et en extraits de texte.

Si vous êtes préoccupé par la santé de vos mains choisissez Vim.

J'ai souffert d'une crise de RSI dans le passé, et j'ai découvert que l'un des principaux coupables était les "accords", c'est-à-direen maintenant plusieurs touches enfoncées en même temps.Emacs utilise largement les accords tandis que VIM utilise des commandes à une seule lettre enchaînées rapidement.Cela met beaucoup moins de pression sur vos mains car les muscles n'ont pas besoin de se tordre et de se contorsionner pour exécuter des commandes dans l'éditeur.Les blessures dues au RSI peuvent ruiner votre productivité, alors assurez-vous d'en tenir compte dans vos calculs.

Je ne vois vraiment aucune raison de changer.J'utilise vi depuis longtemps et je suis assez à l'aise avec lui ;environ tous les six mois, j'installais emacs pour essayer, puis je revenais rapidement.Oui, il y avait des choses que je préférais de loin dans vi, mais la principale raison pour laquelle je ne m'y suis jamais tenu est que l'investissement en temps pour apprendre pleinement un autre éditeur alors que j'en connais déjà un extrêmement compétent n'en vaut pas la peine.
Je me souviens de ça étude plutôt datée.

À mon avis, SLIME est à peu près la seule raison de passer à Emacs si vous maîtrisez déjà vi.

Non

J'utilise Emacs depuis des années, je suis un converti de VIM et j'adore ça en bits.

Mais tout gain de productivité résultant d'un meilleur éditeur programmable sera totalement anéanti par l'énorme quantité de conneries nécessaires pour maîtriser Emacs.Il a été conçu comme un éditeur de console, et son idée d'interface n'est pas la vôtre.

Et même lorsque vous l'aurez complètement compris, votre productivité supplémentaire s'exprimera principalement dans le lisp emacs supplémentaire que vous pourrez écrire.

Qui s'en soucie?C'est très amusant, et les chiens zozotent !Si vous voulez « faire avancer les choses », oubliez la programmation.Vous pouvez toujours embaucher des programmeurs pour « faire » des « choses ».

La seule circonstance dans laquelle je recommanderais d'apprendre Emacs pour des raisons de productivité c'est si vous êtes un programmeur Lisp/Scheme/Clojure.Il crée un tel environnement Lisp que les quelques secondes qu'il vous fera gagner à chaque fois que vous voudrez faire quelque chose se transformeront rapidement en un réel gain.Et elisp (qui se rapporte à Lisp comme les macros Excel à ALGOL) semblera beaucoup moins étranger si vous utilisez déjà un vrai Lisp.

Si vous l'essayez, utilisez-le sur une console virtuelle où cela ressemble plus à une manière sensée d'organiser un éditeur.Seulement lorsque cela a du sens, essayez de l'utiliser sous un système de fenêtre, qui le combattra.

Dans une réponse antérieure, Aristote Pagaltzis a écrit :"Vim excelle dans les petits...Vous pouvez facilement faire des choses dans Vim au cours du processus normal d'édition qui vous obligeraient à passer à la création de scripts dans Emacs."

Je suis passé à EMACS après plus d'une décennie de exclusivité à l'aide de VI, et initialement j'aurais convenu avec la réclamation: "Vous pouvez facilement faire des choses dans VIM dans le cours normal de l'édition qui vous obligerait à vous abaisser en script dans EMACS." Mais j'ai découvert qu'en utilisant la capacité macro d'Emacs et un grand nombre de répétitions, je pouvais facilement faire faire Emacs à peu près tout ce que VI avait rendu facile, et beaucoup plus.

La fonctionnalité macro d'Emacs implique trois commandes :

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

Par exemple, dans vi, si je voulais tout trouver <a> balises dans un fichier html et ajouter un target attribut, je pourrais faire quelque chose comme ce qui suit :

:g/^<a/s/>/ target="_blank">/

Cet exemple n'est pas parfait, car il suppose que tout <a> les balises sont sur une ligne par elles-mêmes.Mais c'est suffisant pour illustrer comment on accomplit la tâche équivalente dans deux éditeurs différents.

Pour obtenir facilement le même effet dans emacs, voici ce que je fais :

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

Voici une description de ce que fait chaque frappe ci-dessus :

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" 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 attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

Cela semble compliqué, mais c'est en fait très simple à taper.Et vous pouvez utiliser cette approche pour faire beaucoup de choses que vi ne peut pas faire, sans jamais passer au code Lisp.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top