web-dev-qa-db-fra.com

Différences entre Emacs et Vim

Sans entrer dans une discussion religieuse sur la raison pour laquelle l'un est meilleur que l'autre, quelles sont les différences pratiques entre Emacs et Vim? Je cherche à apprendre l'un ou l'autre, mais je me rends compte que la courbe d'apprentissage pour chacun est élevée et je ne peux pas décider. Je n'ai jamais utilisé un éditeur de ce type (j'ai toujours utilisé des IDE), donc tout ce qui peut aider un débutant est un atout.


Avant le début d’une guerre des flammes: je ne demande pas ce qui est le meilleur, je demande les différences entre les deux. Je voudrais une comparaison objectif.

657
Sasha Chedygov

(à mon avis, le texte ci-dessous ne doit pas être considéré comme un fait ou une insulte)

Avec Emacs, vous êtes censé l’ouvrir 24 heures sur 24, 7 jours sur 7 et vivre dans le programme, vous pouvez presque tout faire à partir de là. Vous écrivez vos propres extensions, vous l’utilisez pour la prise de notes, l’organisation, les jeux, la programmation, l’accès à Shell, l’accès aux fichiers, l’écoute de musique, la navigation sur le Web. Cela prend des semaines et des semaines jusqu'à ce que vous en soyez satisfait et vous apprendrez de nouvelles choses tout le temps. Vous serez ennuyé si vous n'y avez pas accès et que vous modifiez constamment votre configuration. Vous ne pourrez pas utiliser facilement les versions emacs des autres peuples et elles ne seront pas simplement installées. Il utilise LISP, ce qui est génial. Vous pouvez en faire tout ce que vous voulez. (rien du tout)

Avec Vim, c'est presque toujours préinstallé. C'est rapide. Vous ouvrez un fichier, effectuez une modification rapide, puis quittez. Vous pouvez utiliser la configuration de base si vous êtes sur la machine de quelqu'un d'autre. Ce n'est pas si éditable, mais c'est quand même bien meilleur que la plupart des éditeurs de texte. Il reconnaît que la plupart du temps, vous ne lisez/éditez pas et que vous tapez plus rapidement. Vous ne souffrez pas de emacs pinkie. Ce n'est pas si énervant. C'est plus facile à apprendre.

Même si j'utilise Emacs tous les jours (et que j'adore ça) à moins que vous n'ayez l'intention de passer beaucoup de temps dans le programme que vous choisissez, je choisirais vim

462
James Brooks

Vim n'est pas un shell. Et il ne communique pas bien avec les sous-processus. C’est presque par conception, alors que dans Emacs, ces éléments sont inclus par conception. Cela signifie que certaines choses, comme incorporer un débogueur ou un interprète (donnant une sorte d'IDE), sont difficiles dans Vim.

De plus, les raccourcis Emacs sont principalement accessibles via des modificateurs, et l'interface Vim est évidemment modale, donnant accès à une quantité absurde de touches directes à manipuler.

Emacs était le seul éditeur des deux qui était programmable, et bien que Vim ait beaucoup de niveaux étranges à sa programmabilité, avec l’ajout de Python et Ruby (et plus encore , Je l’oublie), Vim est également programmable dans la plupart des cas.

J'utilise Vim et j'en suis assez content.

130
Svend

Vim:

  • mieux comme simple éditeur (moins de clés nécessaires pour des tâches simples)
  • communauté de script plus active - langage interne: vimscript
  • un référentiel central de scripts, plugins, jeux de couleurs, ...
  • également extensible en python, Ruby
  • peut être rendu portable (emacs a quelques problèmes avec ça)

Emacs:

  • non modal par défaut (la plupart des éditeurs actuels ont adopté cette approche). Bien qu'il y ait evil-mode qui émule le comportement vim.
  • un langage plus puissant pour l'étendre (elisp est un langage à part entière, et dans emacs, vous pouvez pratiquement tout redéfinir; alors que dans vim, vous ne pouvez pas redéfinir les fonctions intégrées de l'éditeur. Par contre, vimscript est relativement similaire aux langages dynamiques actuels ne ressemble à peu près rien)
  • plus extensible
  • excellent support pour GNU outils (le groupe d'entre eux)

Personnellement, je préfère vim - il est petit, fait ce qu’il est censé faire, et quand je souhaite un IDEcomplet, j’ouvre VS. L’approche d’Emacs consistant à être un éditeur qui veut être un IDE (ou devrais-je dire un système d’exploitation), mais qui n’est pas tout à fait, est à mon humble avis démodée. Auparavant, avoir un client de messagerie électronique, un client ftp, tetris,… quoi dans un seul paquet (emacs) avait un sens… de nos jours, ce n'est plus le cas.

Les deux sont toutefois un sujet de discussions religieuses entre les utilisateurs de la communauté des programmeurs et des superutilisateurs. À cet égard, ils sont tous deux excellents pour déclencher une guerre des flammes s’ils sont mis en contact (dans la même phrase/question).

102
Rook

Si vous recherchez une analyse objective des deux éditeurs, examinez leurs origines et la philosophie qui sous-tend leurs conceptions respectives. Pensez à ce qui vous conviendrait le mieux et apprenez-le (et apprenez-le et apprenez-le, car il faut du temps avant que vous ne découvriez sa véritable utilité par rapport à tout IDE). ne introduction à l’affichage avec Vi a été écrit par Bill Joy et Mark Horton. Il explique pourquoi il a choisi la conception modale et la logique de différents raccourcis (cela m’aide à me rappeler que CTRL-W + W passez à next W indow et il en ira de même pour CTRL W + CTRL W, juste au cas où vous auriez maintenu la touche CTRL plus longtemps.

Voici un lien vers timeline Emacs et contient la référence au papier Multics Emacs. Hereis RMS papier sur Emacs , où je vois que l'accent est mis sur un éditeur de texte programmable (même en 1981 et avant).

Je n'ai pas lu les journaux emacs, mais j'ai lu le document vi de Bill Joy plusieurs fois. Les deux sont vieux, mais vous aurez toujours la philosophie et vous pourriez choisir d'utiliser l'outil actuel (vim 7.x ou emacs 25?)

Edit: J'ai oublié de mentionner qu'il faut de la patience et de l'imagination pour lire ces deux articles, car cela vous ramène dans le temps. Mais ça vaut le coup.

47
Senthil Kumaran
  1. Vim était toujours plus rapide à démarrer qu'Emacs. Je dis que sur n'importe quelle machine, les installations prêtes à l'emploi de Vim démarreront plus rapidement que les installations prêtes à l'emploi d'Emacs. Et j'ai tendance à penser qu'après une quantité modérée de personnalisation de l'un ou l'autre, Vim démarrera quand même plus vite qu'Emacs.

  2. Après cela, l'autre différence pratique concernait les modes d'Emacs. Ils vous simplifient énormément la vie lorsque vous éditez XML, C/C++/Java/peu importe, LaTeX et les langages les plus populaires auxquels vous pouvez penser. Ils vous donnent envie de garder l'éditeur ouvert pendant de longues sessions et pour travailler.

En résumé, je dirai que Vim vous y oblige pour des tâches d'édition courtes et rapides; tandis qu'Emacs vous encourage à plonger pour de longues sessions.

43
Yawar

Le VI est toujours disponible et s’exécutera sur le mode mono-utilisateur le plus handicapé, les graphiques cassés, l’absence de clavier, la machine à liaison lente - il est donc utile de savoir comment éditer des fichiers simples dans celle-ci uniquement pour les tâches d’administrateur système.

Emacs est une interface utilisateur complète dans un éditeur. L'idée est que vous démarrez Emacs lorsque vous démarrez la machine sans jamais la quitter. Il est possible d'avoir des milliers de sessions présentes.

Qu'il soit intéressant d'apprendre les capacités d'Emacs par rapport à l'utilisation d'un éditeur graphique/IDE et à l'utilisation de quelque chose comme python/awk/etc pour des tâches supplémentaires, c'est à vous de décider.

38
Martin Beckett

Je suis un fan fan d'Emacs à part entière, mais je connaissais VI longtemps avant Emacs. Cela dit, je fais apprendre à tous les membres de mon personnel le VI car il est toujours disponible, partout. Vous ne pouvez pas vous tromper avec l’un d’eux.

24
Joe Casadonte

J'ai commencé avec vi, je suis allé chez emacs, puis chez vim. Je pensais essayer Emacs pour voir ce qui avait changé au cours des cinq dernières années. (En parlant d’IDE, j’étais entré dans Eclipse pendant un moment, mais je préfère ma fenêtre de terminal connectant mon mac à la boîte Linux de mon (mari)).

Le couper-coller me dérange depuis quelque temps. Couper et coller dans Vim nécessite plus de pas que dans Emacs, IIRC. Et coller de, disons, un navigateur à une fenêtre de terminal est irritant, à moins que vous ne fassiez quelque chose de fantaisiste que je n’ai pas envie de faire, alors je m’inscris dans l’indentation étrange. Je pense que la modification de plusieurs fichiers dans emacs était plus facile. Sautez au moins d'un fichier à l'autre si vous les avez tous les deux à l'écran.

Je n'ai pas joué avec les fonctionnalités sophistiquées de vi ou d'emacs, car j'aime bien me lancer dans le codage. Tout ce dont j'ai besoin, ce sont de jolies couleurs et une conversion appropriée d’onglet en espace (particulièrement important avec Python).

Je pense que tout dépend de si vous voulez utiliser :wq ou Ctrl-x Ctrl-s (IIRC) pour enregistrer un fichier si vous ne vous souciez pas de ce qui est sophistiqué.

@ GMB était correct. Je suis dans le strict minimum pour corriger quelque chose il y a un mois ou deux dans une distribution Debian. vi était le seul éditeur disponible.

13

Semble une réponse a déjà été sélectionnée, mais la grande différence pour moi a toujours été le modal vs non-modal. Vim est modal, ce qui signifie qu'il effectue des optimisations basées sur un ensemble spécifique de modes d'utilisation. Au moins c'est comme ça que j'ai toujours regardé ça. Cela rend l'utilisation de Vim une expérience différente car au lieu de disposer d'un espace de travail dans lequel vous tapez du code, vous indiquez à un environnement d'agir sur le texte. C'est pourquoi les gens disent des choses comme avec Vim, vous apprenez vraiment une langue. Les: wq et: s/foo/bar font tous partie d’un environnement de type shell qui édite et lit le texte.

Emacs, en revanche, est beaucoup plus proche de la plupart des éditeurs/traitements de texte/etc. vous voyez aujourd'hui. Vous disposez d'un espace de travail doté d'une interface hautement programmable. C’est la raison pour laquelle vous voyez des choses telles que courrier électronique, irc, coquillages, etc. En tant que programmeur, il est facile de penser en termes de "prenez le numéro de ligne sur lequel je suis et faites quelque chose avec les informations". Le désir de quitter l'éditeur devient moins important car au lieu de devoir quitter, ouvrez une autre application/langage et faites des choses sur du texte, vous avez Emacs où vous pouvez faire ces choses dans le cadre de votre éditeur.

Les deux idées ne sont pas nécessairement contrastées, mais c’est simplement qu’elles révèlent deux axes différents. Personnellement, j'utilise Emacs, mais j'ai déjà rencontré des gens qui connaissent très bien Vim et qui peuvent dire honnêtement que le choix de votre choix importe peu. J'ai d'abord essayé Vim mais Emacs a fini par rester pour moi. Il est vrai que peu importe ce que vous choisissez, vous devez au moins maîtriser un peu Vim, qui est toujours disponible.

13
elarson

Pour moi, les avantages d’Emacs sont,

  • tramp-mode vous permet d’éditer des fichiers distants sur ssh. tout comme les fichiers locaux.
  • tramp-mode + dired = client sftp complet
  • assistance pour toutes les langues dont vous aurez besoin.
  • émulateur de terminal intégré (terme-mode) afin que je puisse garder le codage sans basculer entre les applications.
  • extensibilité tout ce que vous n'aimez pas peut être modifié avec LISP.
10
Hamza Yerlikaya

Il y a une énorme différence au niveau quotidien - Vim (ou toute variante de vi) est intrinsèquement modal (vous passez en mode commande où vous ne pouvez pas éditer) et Emacs (avec la plupart des autres éditeurs ) ne sont pas.

Bien sûr, en utilisant les menus, vous n'avez pas besoin d'entrer en mode commande dans Vim - au début. Mais vous ne pourrez utiliser qu'une infime fraction de la puissance de Vim. C'est au coeur du débat entre Vim et Emacs.

Personnellement, je pense aussi qu'Emacs est beaucoup plus extensible. Vous pouvez trouver des paquets Elisp pour beaucoup de choses.

Je suis toutefois curieux de savoir pourquoi vous pensez en apprendre un sur un IDE plus traditionnel. Pourquoi voulez-vous en apprendre un?

Il y a beaucoup de choses qui ont été dites à propos des deux éditeurs, mais j'ai juste mon 5 pence à ajouter. Les deux éditeurs sont merveilleux et vous ne pouvez pas vous tromper avec l’un d’eux.

Je suis un utilisateur de vi/vim depuis environ 15 ans maintenant. J'ai essayé plusieurs fois de convertir en emacs, mais à chaque fois, je me rendais plutôt compte que vim peut réellement faire ce qu'il manque sans avoir à écrire une extension LISP ou à installer quelque chose.

Pour moi, la principale différence entre les éditeurs que vim vous oblige à utiliser l'environnement/système d'exploitation, tandis qu'emacs tente de l'encapsuler ou de le remplacer. Par exemple, vous pouvez ajouter une date dans votre texte par: r! Date dans vim, ou un calendrier avec: r! Cal 1 2014, ou même remplacer le contenu de votre tampon par la version hexagonale du contenu. Par exemple. :%! xxd, éditez hex et revenez ensuite avec:%! xxd -r, et bien d’autres utilisations, comme les commandes internes grep, sed, etc.

Un autre exemple est utilisé avec jq et gron. Par exemple. collez json blob dans l'éditeur, puis exécutez la transformation:

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

OR

:%!jq .path.to.stuff

Chacune des commandes canalisées ci-dessus peut être exécutée séparément via :%!<command>, où % désigne tout le document, mais peut également être exécuté sur la sélection, les lignes sélectionnées, etc. Vous pouvez utiliser ici gron output comme jq chemin.

Vous disposez également de la fonctionnalité d’édition par lot EX, par exemple. Remplacer certains mots, reformater le code, convertir des caractères de nouvelle ligne dos-> unix, lancer une macro sur 100 fichiers à la fois. C'est facile à faire avec ex. Je ne sais pas si Emacs a quelque chose de similaire.

En d'autres termes, IMHO vim se rapproche de la philosophie unix. Il est généralement plus simple et plus petit, mais si vous connaissez votre système d’exploitation et vos outils, vous n’aurez probablement pas besoin de plus que ce qu’il (VIM) a à offrir. Je ne fais jamais.

Outre vi est de facto standard sur tout système unix/linux, pourquoi apprendre à utiliser 2 outils qui font la même chose. Bien sûr, certains systèmes proposent des mg ou quelque chose de similaire, mais certainement pas tous. Unix + Vi <3.

Eh bien, juste mes 5 pence.

10
Alex

Je voudrais mettre ici une citation du livre "L'art de la programmation UNIX":

Beaucoup de personnes qui utilisent régulièrement vi et Emacs ont tendance à les utiliser à des fins différentes, et trouvent qu'il est utile de les connaître.

En général, vi convient mieux aux petits travaux: réponses rapides aux messages, modifications simples à la configuration du système, etc. C’est particulièrement utile lorsque vous utilisez un nouveau système (ou un système distant sur un réseau) et que vous n’avez pas vos fichiers de personnalisation Emacs à portée de main.

Emacs est particulièrement adapté aux sessions d’édition étendues dans lesquelles vous devez gérer des tâches complexes, modifier plusieurs fichiers et utiliser les résultats d’autres programmes au cours de la session. Pour les programmeurs utilisant X sur leur console (ce qui est typique des Unix modernes), il est normal de démarrer Emacs peu de temps après la connexion dans une grande fenêtre et de le laisser fonctionner indéfiniment, en visitant éventuellement des dizaines de fichiers et même en exécutant des programmes dans plusieurs sous-fenêtres Emacs.

Ce que je veux vraiment souligner ici est le: "Beaucoup de gens trouvent utile de connaître les deux."

8
Andriy Tykhonov

Avantages d'Emacs

  • Emacs a à la fois une interface non modale (par défaut) et une interface modale (par exemple, il peut émuler vim et vi via Evil, Viper ou Vimpulse).

  • L'un des programmes informatiques les plus portés. Il fonctionne en mode texte et sous des interfaces utilisateur graphiques sur une grande variété de systèmes d'exploitation, y compris la plupart des systèmes de type Unix (Linux, les différents BSD, Solaris, AIX, IRIX, macOSetc.), MS-DOS, Microsoft Windows, AmigaOS, et OpenVMS. Les systèmes Unix, à la fois gratuits et propriétaires, fournissent fréquemment Emac avec le système d’exploitation.

  • L'architecture de serveur Emacs permet à plusieurs clients de se connecter à la même instance Emacs et de partager la liste des tampons, l'anneau de mise à mort, l'historique d'annulation et tout autre état.

  • Système d’aide en ligne omniprésent avec des combinaisons de touches, des fonctions et des commandes documentées à la volée.

  • Variante du langage de programmation LISP extensible et personnalisable (Emacs LISP), avec des fonctionnalités comprenant:

  • Un gestionnaire de fichiers puissant et extensible (dired), un débogueur intégré et un grand ensemble d'outils de développement et autres.

  • Le fait que chaque commande soit une fonction Emacs LISP active les commandes en DWIM (Do What I Mean) en répondant par programme aux actions passées et à l’état du document. Par exemple, une commande switch-or-split-window peut basculer vers une autre fenêtre, le cas échéant, ou en créer une si nécessaire. Cela réduit le nombre de frappes et commandes qu'un utilisateur doit se rappeler.

  • "Un OS dans un OS". Emacs LISP permet de programmer Emacs bien au-delà des fonctionnalités d'édition. Même une installation de base contient plusieurs douzaines d’applications, dont deux navigateurs Web, des lecteurs de nouvelles, plusieurs agents de messagerie, quatre clients IRC, une version d’ELIZA et divers jeux. Toutes ces applications sont disponibles partout où Emacs s'exécute, avec la même interface utilisateur et les mêmes fonctionnalités. À partir de la version 24, Emacs inclut un gestionnaire de paquets, ce qui facilite l'installation d'applications supplémentaires, notamment des navigateurs Web supplémentaires, EMMS (Emacs Multimedia System), etc. De nombreux packages de programmation sont également disponibles, y compris certains ciblés sur des combinaisons langage/bibliothèque spécifiques ou des styles de codage.

Avantages des éditeurs de type vi

  • Les commandes d'édition sont composables
  • Vi a une interface modale (que Emacs peut émuler)
  • Historiquement, vi se charge plus rapidement que Emacs.
  • Bien que profondément lié à la tradition UNIX, il fonctionne sur tous les systèmes pouvant implémenter la bibliothèque C standard, y compris UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD et POSIX. systèmes.
  • Extensible et personnalisable via un script Vim ou des API pour des langages interprétés tels que Python, Ruby, Perl et Lua
  • Omniprésent. Essentiellement, tous les systèmes Unix et de type Unix sont livrés avec vi (ou une variante) intégrée. Vi (et ex, mais pas vim) est spécifié dans le standard POSIX.
  • Les environnements de secours système, les systèmes intégrés (notamment ceux avec busybox) et les autres environnements soumis à des contraintes incluent souvent vi, mais pas emacs.

Source: https://en.wikipedia.org/wiki/Editor_war

8
artamonovdev

Pour moi, emacs a de meilleurs outils de développement (pas seulement des outils basés sur les tags).

8
bmeric

Maintenant, vous n'avez même pas besoin de penser à la différence entre ces deux-là à cause de Spacemacs . C'est une distribution Emacs axée sur la communauté.

Comme il a dit,

Le meilleur éditeur n'est ni Emacs ni Vim, c'est Emacs et Vim.

Spacemacs combine le meilleur de Emacs et de Vim, ce qui facilite grandement votre vie et votre travail.

Il a également un logo décent.

Voir la capture d'écran ci-dessous,

http://spacemacs.org/doc/img/spacemacs-python.png

8

La plus grande différence pour moi dans le choix d’utiliser emacs par rapport à vim réside dans le support intégré de gdb dans emacs. Vim ne l'a pas inclus dans sa distribution par défaut et le projet là-bas pour intégrer gdb et vim était presque impossible de travailler avec MacVim

5
Grant Limberg

Emacs a le mode viper, donc dans un sens réel, il fournit un sur-ensemble de fonctionnalités (à l'exception de celles décrites dans Quelles fonctionnalités de Vim manquent-elles dans Emacs avec Viper et Vimpulse? ).

vi (et VIM IIRC) est plus léger (il peut éditer des fichiers sur place), mais offre moins de fonctionnalités (communication de sous-processus, langage d'extension).

5
Trey Jackson

C'est comme des pommes et des oranges. Les deux ont un design et une philosophie différents. Vim est un éditeur de texte, tandis qu'Emacs est un interpréteur LISP qui effectue l'édition de texte.

J'utilise Vim parce que c'est rapide, discret et très bon pour manipuler des textes. Il possède une liaison de clé naturelle composable qui peut rendre vos tâches de développement vraiment harmonieuses. Vim est basé sur la simple philosophie de faire une chose vraiment bien - la manipulation de texte.

L'extension de Vim en utilisant bash/zsh et tmux est généralement facile et vous permet d'apprendre beaucoup de choses. IMHO c'est une bonne courbe d'apprentissage. L'essentiel est d'apprendre à intégrer ces éléments pour obtenir une application de travail plus grande. Avec Vim, vous aurez besoin d’apprendre l’intégration car elle ne s’intègre pas naturellement à moins que vous ne lui indiquiez comment. Une autre extension intéressante que j'utilise est Tig. C'est une interface basée sur Git basée sur des bourses. J'ai juste une reliure qui ouvre Tig en silence puis j'y fais tout le truc Git.

C'est à l'utilisateur final de décider ce qui fonctionne le mieux. Le fait qu'Emacs et Vim aient résisté à l'épreuve du temps est la preuve de leur valeur. En fin de compte, un bon programmeur n'a besoin de rien de plus qu'un stylo et d'un papier pour être créatif. Les bons algorithmes n'ont pas besoin d'éditeurs pour les sauvegarder. Alors essayez les deux et voyez ce qui vous rend plus productif. Et découvrez les modèles de conception de ces deux logiciels, car il y a beaucoup à apprendre et à découvrir!

4
Nishant

Un point de vue sur la jaunisse:

vi (pas vim) est une nécessité professionnelle. Vous avez toujours une forme de vi facilement disponible, quel que soit l'environnement. Vous pouvez être dans vi quand vous êtes dans emacs, vous pouvez être dans vi pour construire des commandes bash dans unix-land.

Même Microsquish doit prendre en charge vi (bien qu'ils le cachent bien) à cause de la conformité du gouvernement et des entreprises aux normes publiées.

À mon avis, si vous travaillez dans un environnement occupé - pas une fleur de serre confinée à une plate-forme sophistiquée dans un environnement de développement, ni dans le monde universitaire - en savoir beaucoup sur un éditeur de fantaisie est un handicap professionnel. N'apprenez pas tous les trucs sophistiqués dans vim ou emacs, et ne développez pas un tas de macros pour que l'environnement d'édition se plie à votre volonté. C'est une perte de temps énorme qui vous gêne lorsque vous vous occupez de différentes machines que vous ne pouvez probablement pas justifier dans un environnement d'usine.

Lisez le document de Bill Joy - c’est un exercice technique très compétent, peut-être même magnifique, pour éditer du texte brut très, très vite. La règle de Parito s'applique ici: 80% des fruits sont dans 20% des paniers. Éditer du texte brut très rapidement est le cœur de la compétence d'édition - tout le reste est optionnel - et parfois blessant.

3
user3305072

Emacs est vraiment plus un programme tout, et vi (m) n’est en réalité qu’un éditeur. Si vous modifiez du texte, les deux sont corrects, mais je préfère emacs, tout simplement parce que je dois en déplacer un de la ligne de base pour pouvoir me déplacer et continuer à taper les mauvaises choses en mode commande. Si vous n'avez pas ce problème, vi (m) est peut-être l'éditeur pour vous.

2
qwertyuiop924

Si vous vous déplacez souvent d'un site à l'autre ou si votre travail implique de vous connecter à des systèmes de production, vim est la solution.

Vi * sera installé par défaut sur toutes les machines * nix.

La plupart des systèmes préfèrent ksh en tant que shell par défaut. ksh utilise vi (ou emacs) des touches de commande pour rechercher l’historique et modifier la ligne de commande.

Si vous ne le savez pas bien, vous êtes gravement handicapé lorsque vous vous connectez à un système Unix avec une configuration standard.

Pour cette seule raison, je recommanderais vim comme éditeur normal tous les jours. J'ai vu des fans d'Emacs arracher leurs cheveux en essayant de modifier des fichiers de configuration sur un serveur Unix Bones.

1
James Anderson

vim est un éditeur pratique, il vous suffit de taper vim filename pour ouvrir le fichier, le modifier, l’enregistrer et le fermer.

emacs est un "système d'exploitation" prétendant être un éditeur, vous pouvez eval code pour changer son comportement et l'étendre à votre guise. Un mode recevoir/envoyer un courrier électronique sur emacs est comme un logiciel de messagerie électronique sur système d'exploitation.

Lors de l'édition simple, par exemple, pour modifier un fichier de configuration, j'utilise vim.

Sinon, je ne quitte jamais emacs.

1
Richard

Je pense que la principale différence est la cible de conception. VIM est destiné à UNIX en tant qu'éditeur de travail. Emacs est destiné à GNU et aux hackers LISP, il a donc un élément de conception mixte.

J'utilise vim sur mon poste de travail et j'adore aussi emacs.

0
7xEquation

Dans votre question, vous n'avez pas indiqué que vous souhaitiez programmer dans LISP! Mais alors que vous commentiez vos réponses, j'ai compris que vous souhaitiez réellement une interface de programmation LISP.

Pour cette tâche précise, oubliez tout simplement Vi. L'intégration d'Emacs avec LISP est merveilleuse! Vous devriez utiliser SLIME. Vous obtiendrez alors une merveilleuse intégration avec le REPL, en étant capable de eval fonctions, tampons ou fichiers directement dans un interpréteur en cours d'exécution dans un tampon emacs et bien plus encore ...

0
Pedro Morte Rolo

Je travaille avec spacemacs depuis environ 2 ans et neovim depuis environ un an maintenant dans un environnement de production/recherche. Spacemacs est emacs avec quelques fonctionnalités supplémentaires intéressantes telles que des couches, etc.

Je suis tout à fait insatisfait de l'expérience des deux. Et je suis toujours à la recherche d'une solution à long terme pour mes besoins d'édition de texte.

Voici une comparaison simple:

  • Neovim, Vim, Emacs, Spacemacs, etc. Tous ces éditeurs consomment moins de ressources que la plupart des éditeurs.

  • Neovim/vim est légèrement plus rapide que emacs, nettement plus rapide que spacemacs.

  • En termes d'expérience d'édition. Je peux facilement dire que les paquets emacs se sentent supérieurs. Je pense que c'est parce qu'ils se fondent mieux dans le noyau d'emacs.

  • Vimscript c'est Nice et il y a certainement d’excellents projets dans l’écosystème vim. La bonne chose est qu'ils sont mieux documentés que la plupart des projets emacs que j'ai vus jusqu'à présent.

  • Les deux peuvent être glitchy en fonction du package que vous utilisez. Spacemacs ont tendance à geler, et neovim a tendance à afficher des messages d'erreur effrayants, alors choisissez votre poison.

  • L’édition modale dans vim n’est pas un concept intuitif, mais une fois que vous vous y êtes habitué, vous le voulez toujours. Les deux rédacteurs fournissent cela.

0
Kaan E.

Je suis un fan d'Emacs, mais encourage les autres développeurs à apprendre le VI car:

  1. vous pouvez utiliser VI pour éditer les makefiles d’Emacs.
  2. VI inclut des commandes ed et chaque utilisateur UNIX doit connaître et éditer.

J'ai remarqué plusieurs commentaires à propos de VIM démarrant plus rapidement que emacs. Si cela vous intéresse vraiment, lancez emacs en mode serveur et alias 'emacs' à 'emacsclient'. Le client est super rapide car il ne fait que taper le serveur sur son épaule et lui dire quel fichier vous voulez éditer. Sous MacOSX, emacsclient n’est que de 33 Ko alors qu’emacs, de 287 millions.

Je ne suis pas sûr que cela soit nécessaire sur du matériel moderne. Sur mon MacBook Pro (Retina 2013), emacs se charge presque instantanément lorsque je l'exécute depuis le shell. Je ne détecte aucune pause du tout. Lorsque je lance Emacs.app (la version graphique), cela peut prendre 3 secondes.

La plupart des plaintes que j'entends à propos d'Emacs semblent provenir de personnes mal informées sur Emacs. Ayant utilisé vi et emacs depuis 1982, je me souviens certainement d’une époque où emacs se chargeait beaucoup plus lentement que vi et utilisait la majeure partie de la mémoire physique de mes premières unités UNIX, mais ce n’est plus le cas depuis au moins 15 ans. 20 ans.

Une plainte que je concéderai est "emacs pinkie". Cela ne m'a jamais dérangé du tout quand j'étais plus jeune. Maintenant que j'ai 58 ans, mon petit doigt a un peu mal au cœur en accédant plusieurs fois à la touche Control pour les accords emacs. Cela est particulièrement vrai sur le clavier MacBook Pro dans lequel Control est déplacé d'une position vers la droite pour laisser de la place à la touche "fn". Ce n'est pas aussi gênant que Control soit en bas à gauche.

0
Phil Harbison

L'exécution de frappe ::: L'édition de vi conserve chaque permutation de clés tapées. Cela crée un chemin dans l'arbre de décision qui identifie sans ambiguïté toute commande, tandis que les commandes Emacs sont une combinaison de clés typées exécutées immédiatement, ce qui laisse à l'utilisateur le choix d'utiliser ou non une commande.

Utilisation de la mémoire et personnalisation ::: vi est un programme plus petit et plus rapide, avec une capacité de personnalisation plus limitée, tandis qu'Emacs prend plus de temps à démarrer et nécessite plus de mémoire. Cependant, il est hautement personnalisable et comprend un grand nombre de fonctionnalités, car il s’agit essentiellement d’un environnement d’exécution pour un programme LISP conçu pour l’édition de texte.

0
Sudhir Bastakoti