Différences entre Emacs et Vim


686

Sans entrer dans un argument religieux sur pourquoi 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é d'éditeur de ce type (j'ai toujours utilisé des IDE), donc tout ce qui aide un débutant est un plus.


Avant qu'une guerre des flammes ne commence: je ne demande pas ce qui est mieux, je demande les différences entre les deux. Je voudrais une comparaison objective .


3
Si vous utilisez un Mac (OSX), vous constaterez que de nombreuses commandes de base du mouvement du curseur emacs fonctionnent à peu près partout. (Par exemple, ils fonctionnent ici où je tape ce commentaire dans la page Web.) Donc, pour les utilisateurs de Mac, il y a un avantage à l'échelle du système à apprendre au moins le sous-ensemble suivant d'emacs: ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@JamesAnderson: d'après mon expérience, c'est le contraire. J'utilise vim depuis 2,5 ans, puis je suis passé à emacs. Les gens emacs ne se soucient généralement pas ... "de tout ce qui fonctionne pour vous". Voici ce que ,salespitchdit #emacs<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
Silex

2
Emacs est certainement un excellent système d'exploitation, mais il ne manque qu'un éditeur décent.
technical_difficulty

1
@ JimmyM.G.Lim Non, il utilise le pager actuel sur le système. Si vous exécutez, l' PAGER=cat manhomme affichera le texte directement à l'écran.
SS Anne

1
Je suppose que la police "principalement basée sur l'opinion" n'existait pas lorsque cela a été demandé pour la première fois ;-) ah, les temps plus simples ... était la bombe. 3 semaines de vacances plus tard, j'ai découvert que j'avais totalement oublié toutes ses frappes. vim, d'autre part, n'est pas vraiment mon truc, mais je peux semi-fonctionner de manière fiable avec lorsque cela est nécessaire en utilisant juste i, esc, wq.
JL Peyret

Réponses:


491

(le texte ci-dessous est mon avis, il ne doit pas être pris comme un fait ou une insulte)

Avec Emacs, vous devez l'ouvrir 24 heures sur 24 et 7 jours sur 7 et vivre dans le programme, presque tout ce que vous faites peut être fait à partir de là. Vous écrivez vos propres extensions, l'utilisez pour la prise de notes, l'organisation, les jeux, la programmation, l'accès au shell, l'accès aux fichiers, l'écoute de musique, la navigation sur le Web. Cela prend des semaines et des semaines avant que vous en soyez satisfait, puis vous apprendrez de nouvelles choses tout le temps. Vous serez ennuyé lorsque vous n'y aurez pas accès et changerez constamment de configuration. Vous ne pourrez pas utiliser facilement les versions emacs d'autres personnes et il ne sera pas simplement installé. Il utilise Lisp, ce qui est génial. Vous pouvez en faire ce que vous voulez. (rien du tout)

Avec Vim, il est presque toujours pré-installé. C'est rapide. Vous ouvrez un fichier, effectuez une modification rapide, puis quittez. Vous pouvez travailler avec la configuration de base si vous êtes sur la machine de quelqu'un d'autre. Ce n'est pas tout à fait aussi modifiable, mais c'est encore beaucoup mieux que la plupart des éditeurs de texte. Il reconnaît que la plupart du temps vous ne lisez / éditez pas en tapant et rend cette partie plus rapide. Vous ne souffrez pas d' emacs pinkie . Ce n'est pas si exaspérant. C'est plus facile à apprendre.

Même si j'utilise Emacs toute la journée tous les jours (et que j'adore), sauf si vous avez l'intention de passer beaucoup de temps dans le programme que vous choisissez, je choisirais vim


154
Je ne l'ai pas disponible: je suggère de mettre vos .emacs et .emacs.d dans un dépôt de contrôle de source, et donc obtenir votre configuration Emacs parfaite est simplement une question de paiement.
Duncan Bayne

7
Emacs et vim peuvent souffrir de ce qui est décrit ci-dessus: les deux peuvent être configurés au point où ils ne sont pas reconnaissables par rapport à leurs formes vanillées. Aussi, j'appuie l'utilisation d'un vcs.
Alexej Magura

11
Sur quels systèmes travaillez-vous, @Radu? Je n'ai jamais vu de système réel dans les années 2010 qui avait un réel viau lieu d'être un vimalias.
ELLIOTTCABLE

9
Vim est peut-être plus facile à apprendre qu'Emacs, mais c'est incroyablement déroutant la première fois que vous le démarrez si vous n'en avez aucune expérience! J'ai dû utiliser Google pour pouvoir le fermer, et j'ai quand même dû essayer plusieurs fois de bien faire les choses.
HelloGoodbye

9
Ne sous-estimez jamais l'avantage «pré-installé» de VIM: il est presque toujours disponible où que vous alliez, et il est utilisable avec peu ou pas de personnalisation. Je l'utilise tout le temps pour sshles autres machines. C'est pourquoi je l'ai appris en premier - cela, et parce que mes amis connaissaient VIM et pouvaient m'aider. (Ne sous-estimez pas non plus le soutien de vos amis!)
jvriesem

137

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 l'intégration d'un débogueur ou d'un interpréteur (produisant une sorte d'IDE), sont difficiles dans Vim.

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

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 liaisons Python et Ruby (et plus, j'oublie), Vim est également programmable de la plupart des façons vous aimeriez.

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


6
Petite mise à jour: Vim prend en charge une meilleure communication avec les sous-processus depuis que les versions 8.0 et 8.1 ont même introduit des tampons de terminal, donc il se rapproche un peu plus d'emacs à cet égard.
DarkWiiPlayer

110

Vigueur:

  • meilleur en tant qu'éditeur simple (moins de clés requises pour les tâches simples)
  • communauté de script plus active - langage interne: vimscript
  • un référentiel central de scripts, plugins, schémas de couleurs, ...
  • également extensible en python, rubis
  • peut être rendu portable (emacs a quelques problèmes avec ça)

Emacs:

  • non modal par défaut (la plupart des éditeurs d'aujourd'hui ont adopté cette approche). Bien qu'il existe un mode diabolique qui émule le comportement de vim.
  • langage plus puissant pour l'étendre (elisp est un langage complet, et dans emacs vous pouvez pratiquement tout redéfinir; tandis que dans vim, vous ne pouvez pas redéfinir la construction dans les fonctions de l'éditeur. ne ressemble à rien)
  • plus extensible
  • excellent support pour les outils GNU (le tas d'entre eux)

Personnellement, je préfère vim - il est petit, fait ce qu'il est censé faire, et quand je souhaite un IDE complet, j'ouvre VS. L'approche d'Emacs d'être un éditeur qui veut être un IDE (ou devrais-je dire, un OS), mais qui n'est pas tout à fait, est à mon humble avis, obsolète. Autrefois, avoir un client de messagerie, un client ftp, tetris, ... tout cela dans un seul paquet (emacs) avait du sens ... de nos jours, ce n'est plus le cas.

Les deux sont cependant un sujet de discussions religieuses entre les programmeurs et les utilisateurs de la communauté des super-utilisateurs, et à cet égard, les deux sont excellents pour déclencher des guerres de flammes s'ils sont mis en contact (dans la même phrase / question).


47
"mieux en tant qu'éditeur" est assez vague. Je serais intéressé à voir pourquoi.
Allen

41
@Allen - Qu'est-ce qui est vague? Je rencontre rarement des utilisateurs de vim et emacs, qui ont un problème avec cette déclaration. Même les utilisateurs d'emacs hardcore l'acceptent généralement comme un fait. Avez-vous utilisé les deux éditeurs? Je pense qu'il est relativement évident que vim a un avantage dans l'aspect des fonctionnalités d'édition de texte.
Tour

36
Je suis incrédule que quiconque accepte cela comme un fait. En tant qu'utilisateur de longue date d'emacs et de VI simple, j'ai utilisé vim à quelques reprises - mais "mieux en tant qu'éditeur" doit aller à emacs dans mon esprit si pour aucune autre raison qu'une sélection beaucoup plus large de modes majeurs et mineurs pour vous aider lors de la frappe.
Kendall Helmstetter Gelner

61
Vim est meilleur en tant qu'éditeur, car la manipulation de texte nécessite moins de mouvement de vos mains et de vos doigts que Emacs, du moins c'est mon expérience.
StackedCrooked

7
Mais cela mis à part, Vim est effectivement mieux adapté à l'édition: numéros de ligne, mode visuel, manipulation wint1.kaist.ac.kr/files/attach/images/59/450/… . FCOL, j'ai eu du mal à obtenir emacs juste pour faire défiler une ligne à la fois.
Tour

52

Si vous recherchez une analyse objective des deux éditeurs, regardez leurs origines et la philosophie derrière leurs conceptions respectives. Pensez à celui qui vous conviendrait le mieux et apprenez-le (et apprenez-le et apprenez-le, car il vous faut du temps avant de découvrir sa véritable utilité par rapport à n'importe quel IDE). Une introduction à la modification d'affichage avec Vi a été écrite par Bill Joy et Mark Horton et il explique pourquoi il a choisi la conception modale et la justification de divers traits clés (cela m'aide à me rappeler que CTRL-W + W (passera au W indow suivant et sera la même pour CTRL W + CTRL W, juste au cas où vous auriez maintenu la touche CTRL pendant une durée plus longue.

Voici un lien vers la chronologie Emacs et contient la référence au papier Multics Emacs. Voici un article RMS 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 papiers emacs, mais j'ai lu le papier vi de Bill Joy à quelques reprises. Les deux sont anciens, mais vous obtiendrez 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 tout en le lisant. Mais ça vaut le coup.


43
  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 personnalisation modérée de l'un ou l'autre, Vim démarrera toujours plus rapidement qu'Emacs.

  2. Après cela, l'autre différence pratique était les modes d'Emacs. Ils vous facilitent considérablement la vie lors de l'édition de XML, C / C ++ / Java / que ce soit, LaTeX et des langages les plus populaires auxquels vous pouvez penser. Ils vous donnent envie de garder l'éditeur ouvert pour les longues sessions et le travail.

Dans l'ensemble, je dirai que Vim vous attire pour des tâches d'édition courtes et rapides; tandis qu'Emacs vous encourage à plonger pour de longues sessions.


1
Je ne pense pas que les modes facilitent la vie, au contraire. Et Larry Tesler pense la même chose .
Eliran Malka

2
Comment les modes d'Emacs aident-ils au codage? (Je suis nouveau ...)
jvriesem

4
Il y a longtemps, je suis passé de vi à emacs pour quatre raisons: (a) un clic pour obtenir l'erreur de compilation suivante, (b) intégration gdb, (c) grep et find-grep. Est-il possible de faire ces choses dans vim maintenant?
zzz777

"Vim était toujours plus rapide à démarrer qu'Emacs" - si vous maintenez un serveur emacs en cours d'exécution, le démarrage d'emacs-client est très rapide. J'ai des scripts pour ça, que je réplique (en utilisant git) sur toutes mes machines. (J'utilise * également * Vim, en fait, cela dépend toujours de l'endroit où je suis et de la tâche à accomplir)
Jay

"Vim était toujours plus rapide à démarrer qu'Emacs" - aussi, avec use-packageet son :deferoption, mon Emacs s'ouvre presque immédiatement. J'ai même renoncé à utiliser emacsclient.
Jay

37

Le VI est toujours disponible et fonctionnera sur le mode utilisateur le plus paralysé, les graphiques cassés, pas de carte de touches, la machine de liaison lente - il vaut donc la peine de savoir comment éditer des fichiers simples dedans juste pour les tâches sysadmin.

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

La question de savoir si l'apprentissage des capacités d'Emacs en vaut la peine par rapport à l'utilisation d'un éditeur GUI / IDE et à l'utilisation de quelque chose comme python / awk / etc pour des tâches supplémentaires dépend de vous.


2
Je connais VI uniquement pour ces raisons - mais ces jours-ci, je dirais qu'il est peu probable que vous rencontriez un système UNIX sans au moins une installation EMACS de base, et cela peut rendre un environnement shell pauvre plus tolérable.
Kendall Helmstetter Gelner

3
Ou, confiture de busybox dans un initrd et débogage d'un pilote de stockage cassé pour le périphérique de démarrage, si tôt dans le processus d'initialisation que tout ce que vous avez est le disque ram initial, et pourtant vous avez toujours un éditeur - vi.
smcameron

2
Après un certain temps avec vi, vos doigts connaissent les mouvements - mais vous ne vous souvenez pas quelles sont les touches réelles!
Martin Beckett

10
Je pensais edque c'était "toujours disponible et fonctionnera sur le mode utilisateur le plus paralysé, les graphiques cassés, pas de clavier, la machine à liaison lente." Attendez, quelle année est-ce? (Soupir - ed, je ne t'oublierai jamais.)
belacqua

2
@Kendall: L'ubuntu linux actuel n'est pas livré avec emacs installé.
intuition

25

Je suis un fan-fan à part entière d'Emacs, mais je connaissais VI bien avant de connaître Emacs. Cela dit, je fais apprendre à tous mes gens le VI car il est toujours disponible, partout. Je ne peux pas me tromper avec l'un ou l'autre.


2
C'est aussi mon expérience ... Emacs ou uEmacs n'a jamais été disponible. Mon premier éditeur était uEmacs (sur Amiga) mais depuis que j'ai appris Vim, c'était tout simplement trop pratique.
Marius

C'est essentiellement mon expérience aussi. Vi est partout et généralement installé en tant que $ EDITOR par défaut sur les systèmes Unix, vous devez donc le savoir si vous travaillez avec Unix. Cela dit, j'utilise emacs pour l'édition de texte tous les jours et j'adore ça.
Fergie

14

Il semble qu'une réponse ait déjà été sélectionnée, mais la grande différence pour moi a toujours été le modal par rapport au non-modal. Vim est modal, ce qui signifie qu'il effectue des optimisations basées sur un ensemble spécifique de modes d'utilisation. C'est du moins ainsi que je l'ai toujours considéré. Cela rend l'utilisation de Vim une expérience différente car au lieu d'avoir une zone de travail dans laquelle vous tapez du code, vous dites vraiment à un environnement d'agir sur le texte. C'est pourquoi les gens disent qu'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, d'autre part, 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 pourquoi vous voyez des choses comme le courrier électronique, l'irc, les shells, etc. En tant que programmeur, il est facile de penser en termes de "prendre le numéro de ligne sur lequel je suis et de faire quelque chose avec les informations". Le désir de quitter l'éditeur diminue car au lieu de devoir quitter, ouvrir une autre application / langue et faire 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 vu des gens qui connaissent très bien Vim et peuvent honnêtement dire que peu importe ce que vous choisissez. 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 devriez être au moins assez compétent dans Vim car il est vraiment toujours disponible.


13

J'ai commencé avec vi, je suis allé à emacs, puis à vim. J'ai pensé à essayer Emacs pour voir ce qui a changé au cours des cinq dernières années. (En parlant d'IDE, j'étais entré dans l'éclipse pendant un certain temps, mais je préfère que ma fenêtre de terminal connecte mon mac à ma boîte Linux (de mon mari)).

Le truc du copier-coller me dérange ces derniers temps. Couper et coller dans Vim prend plus d'étapes 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 supporte l'étrange indentation. Je pense que l'édition de plusieurs fichiers dans emacs était plus facile. Au moins passer 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 simplement me lancer dans le codage. Tout ce dont j'ai besoin, c'est des jolies couleurs et une conversion appropriée de l'onglet en espace (particulièrement important avec python).

Je pense que tout dépend si vous souhaitez utiliser :wqou Ctrl-x Ctrl-s(IIRC) pour enregistrer un fichier si vous ne vous souciez pas de la fantaisie.

@mgb était correct. J'ai été dans le strict minimum Linux pour corriger quelque chose il y a juste un mois ou deux dans une distribution Debian. vi était le seul éditeur disponible.


1
Ce n'est toujours pas le cas, mais c'est beaucoup plus facile que de régler tous les paramètres qui gâchent les pâtes des terminaux. Utilisez :set paste, puis collez votre texte et lorsque vous :set nopasteaurez terminé , vous reviendrez au mode normal. Il y a aussi la :set pastetoggle=<F2>commande qui va basculer cela en utilisant le combo de touches que vous avez choisi.
hbar

En mode indentation, vous pouvez faire ^R^P+pour coller à partir du presse-papiers et conserver l'indentation actuelle. ^R^O+supprimera l'indentation. ^R+l'insérera comme si vous l'aviez tapé. :help i_^R^Ppour plus d'informations.
intuition

3
Je ne peux pas imaginer que couper / coller soit plus facile que yyp. Voir également ici pour couper et coller vers et depuis différentes fenêtres stackoverflow.com/a/8757876/654789
puk

@puk - Ctrl-k (yank) / Ctr-y (put) est tout aussi facile dans emacs. Dans Emacs, vous avez également plusieurs registres (az) dans lesquels vous pouvez enregistrer du texte ou la position actuelle dans ...
Kendall Helmstetter Gelner

3
vim a également plusieurs registres
TamaMcGlinn

12

Il y a une énorme différence au jour le jour - Vim (ou toute variante vi) est intrinsèquement modal (vous passez dans des modes de commande où vous ne pouvez pas modifier) ​​et Emacs (avec la plupart des autres éditeurs) ne l'est pas.

Bien sûr, en utilisant des menus et autres, vous n'avez pas besoin de passer en mode commande dans Vim - au début. Mais pour utiliser même une infime fraction de la puissance de Vim, vous le ferez. C'est au cœur du débat Vim / Emacs.

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

Je suis curieux, cependant, pourquoi vous songez à en apprendre un sur un IDE plus traditionnel. Pourquoi voulez-vous en apprendre un?


8
Je veux juste l'apprendre pour voir s'il résiste à son battage médiatique, pour être honnête. J'ai vu à quel point les deux sont flexibles, et j'ai vu des experts faire des trucs assez fous en eux, et je veux voir si cela vaut la courbe d'apprentissage. De plus, mon IDE ne prend pas en charge Lisp. :)
Sasha Chedygov

3
Hmm. Le problème est qu'il y a tellement d'Emacs ... mais la chose pour laquelle je laisse toujours un IDE pour utiliser emacs est une série complexe de tâches répétitives, que j'automatise en utilisant l'enregistrement de macro. Par exemple, vous pouvez prendre un mot ou une expression courante, la copier dans un "tampon" (pensez à couper / coller seulement vous pouvez en avoir plusieurs), puis aller dans un autre fichier, taper du texte en partie en utilisant la valeur copiée et puis un autre précédemment copiez également la valeur, avancez le curseur, enregistrez la position et revenez au premier tampon ... puis répétez le processus pour la ligne suivante du fichier d'origine.
Kendall Helmstetter Gelner

1
J'ai beaucoup utilisé les macros dans vi et Emacs. Ce qui vous manque, c'est le fait qu'Emacs dispose d'une sélection beaucoup plus large de méthodes d'accès lors de l'utilisation de macros, et le fait que vous pouvez utiliser des tampons de coupe partout - même au milieu des termes de recherche par exemple. Veuillez me dire comment vous écririez une macro qui sélectionnerait un mot d'une expression basée sur une expression régulière, prendrait le terme trouvé, rechercherait un autre document sur ce terme et ferait ensuite des remplacements autour de lui?
Kendall Helmstetter Gelner,

2
@ kendall-helmstetter-gelner - c'est possible avec vimscript, ou les langues pour lesquelles vim a des liaisons (comme ruby ​​/ vim / tcl / perl). Vous avez accès à toutes les fonctions et tampons d'éditeur de vim à partir des langages de script.
segy le

1
C'est impressionnant, mais pour faire de même dans Emacs, il suffit d'utiliser les touches que je connais déjà pour former une macro complexe, au lieu d'avoir à l'écrire à la main. Il est facile pour quiconque connaît emacs de créer une macro qui effectue cette tâche, mais je dirais qu'il n'y a pas beaucoup d'utilisateurs de VI qui pourraient construire la macro que vous avez présentée sans une quantité considérable de recherches.
Kendall Helmstetter Gelner

11

Il y a beaucoup de choses qui ont été dites sur les deux éditeurs, mais je n'ai que 5 pence à ajouter. Les deux éditeurs sont merveilleux et vous ne pouvez pas vous tromper avec l'un ou l'autre.

Je suis un utilisateur vi / vim depuis environ 15 ans maintenant. J'ai essayé de convertir en emacs plusieurs fois, mais à chaque fois, je découvrais plutôt que vim peut réellement faire la chose manquante hors de la boîte sans avoir besoin d'écrire une extension lisp ou d'installer quelque chose.

Pour moi, la principale différence dans les éditeurs que vim vous fait utiliser l'environnement / OS, tandis qu'emacs essaie de l'encapsuler ou de le remplacer. Par exemple, vous pouvez ajouter une date dans votre texte par: r! Date dans vim, ou calendrier avec: r! Cal 1 2014, ou même remplacer le contenu de votre tampon par la version hexadécimale du contenu. Par exemple. :%! xxd, éditez l'hex puis revenez avec:%! xxd -r, et bien d'autres utilisations, comme grep intégré, sed, etc.

Un autre exemple est l'utilisation avec jqet 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

OU

:%!jq .path.to.stuff

Chacune des commandes canalisées ci-dessus peut être exécutée séparément via :%!<command>, où %signifie tout le document, mais peut également être exécutée sur la sélection, les lignes sélectionnées, etc. Ici, gron outputpeut être utilisé comme jqchemin.

Vous bénéficiez également de la fonctionnalité d'édition par lots EX, par exemple. Remplacer certains mots, reformater le code, convertir dos-> caractères de nouvelle ligne unix, exécuter une macro sur disons 100 fichiers à la fois. Cela se fait facilement 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 a à offrir (VIM). Je ne fais jamais.

Outre le fait que 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 offrent mg ​​ou quelque chose de similaire, mais certainement pas tous. Unix + Vi <3.

Eh bien, juste mon 5 pence.


8
"Vim se rapproche de la philosophie unix." - Vous parlez ici de la philosophie des outils disponibles depuis votre shell. Le shell lui-même, cependant, est une grande agglomération de fonctions intégrées, d'historique, de globbing, de contrôle de processus, de programmabilité, etc. Emacs se rapproche clairement de la philosophie des shells Unix: fournir un environnement hautement personnalisable dans lequel les outils peuvent être utilisés ensemble, et permettre à l'utilisateur d'étendre facilement l'ensemble d'outils avec leurs propres extraits de code pendant qu'ils fonctionnent. Je pense que nous pouvons voir que les deux emacs et vim sont fortement ancrées dans la tradition unix.
Matt

1
Merci pour votre commentaire. Ce n'était en aucun cas mon intention de lancer une guerre des éditeurs ici, ni de choquer les utilisateurs d' emacs . Je trouve juste plus facile et plus portable d'appeler les commandes réelles depuis le shell (ou depuis l'éditeur) plutôt que d'écrire des extensions complexes pour encapsuler la fonctionnalité dans emacs , ce qui tend à faire gonfler l'environnement au fil du temps. Ces extensions dépendent cependant de la préférence de l'utilisateur et peuvent être effectuées mais en aucun cas appliquées par l'un des éditeurs. Donc, soyez d'accord avec vous concernant la place emacs et vi (m) dans la tradition UNIX.
Alex

1
Juste pour continuer la non-guerre, j'espère qu'il était clair que je n'étais pas en désaccord avec votre analogie "vim est plus comme un outil Unix". Il m'est simplement venu à l'esprit que cette intuition pouvait être étendue avec "et emacs ressemble plus à un shell unix". :-)
Matt

@Matt: J'aime l'analogie. Amen à cela. ;)
Alex

2
Vous pouvez faire tout ce que vous mentionnez, et bien plus encore, dans emacs (le mode hexl par exemple va directement à l'édition du fichier en hexadécimal avec un aperçu ascii sur le côté). Je connais très bien le VI également, mais la création de macros est beaucoup plus facile et plus flexible dans Emacs, et il peut tout simplement faire bien plus que la plupart des implémentations VIM modernes. C'est la raison de le savoir, car emacs est dans la plupart des endroits et peut offrir un véritable coup de pouce pour l'édition de texte.
Kendall Helmstetter Gelner

10

Pour moi, les pros des emacs sont,

  • le mode tramp vous permet d'éditer des fichiers distants via ssh. tout comme les fichiers locaux.
  • tramp-mode + dired = client sftp complet
  • prise en charge de chaque langue dont vous aurez besoin.
  • émulateur de terminal intégré (mode terme) afin que je puisse continuer à coder sans basculer entre les applications.
  • extensibilité tout ce que vous n'aimez pas, vous pouvez changer en utilisant lisp.

11
FWIW: vim a à peu près les 3 premiers (bien qu'avec des noms différents. "Tramp-mode" est "netrw" dans vim). # 4 est généralement considéré comme un bug, pas une fonctionnalité par les utilisateurs de vim. # 5 est vrai dans vim si vous remplacez "elisp" (le pire dialecte lisp jamais, me disent mes amis amoureux d'Emacs) par python / mzscheme / perl / ruby ​​/ tcl / vimscript.
Laurence Gonsalves

3
pouvez-vous expliquer pourquoi # 4 un bug?
Hamza Yerlikaya

2
Découvrez l' addon Conque pour un shell intégré dans vim.
intuition

9

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


9

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

De nombreuses personnes qui utilisent régulièrement à la fois vi et Emacs ont tendance à les utiliser pour différentes choses, et trouvent utile de connaître les deux.

En général, vi est idéal pour les petits travaux - réponses rapides aux e-mails, ajustements simples à la configuration du système, etc. Il 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 prend tout son sens pour les 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 pendant la session. Pour les programmeurs utilisant X sur leur console (ce qui est typique sur les 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, visitant éventuellement des dizaines de fichiers et même exécutant des programmes dans plusieurs sous-fenêtres Emacs.

Ce que je veux vraiment souligner ici, c'est: « Beaucoup de gens trouvent utile de connaître les deux


C'est probablement obsolète. Je pense que la capacité intégrée d'Emacs à avoir un navigateur, un SSH, un lecteur de musique et des systèmes lents qui ont cessé de lancer d'autres applications a fait croire qu'il valait mieux ouvrir une application et y rester?
Nishant

La bonne nouvelle, c'est qu'elle n'est pas dépassée! Vous pouvez utiliser le navigateur, le lecteur de musique, etc. en dehors d'Emacs, mais ce qu'Emacs apporte vraiment, c'est la même bonne interface pour toutes ces fonctions et l'unique moyen (Elisp) pour les étendre.
Andriy Tykhonov

Selon moi, la perspective de TAUP sur Emacs est dépassée car, à l'époque, Emacs était un avantage car il s'agissait d'une seule application en cours d'exécution qui pouvait faire plusieurs choses à la fois - comme irc, musique, édition à distance, etc. Cependant, aujourd'hui, vous avez d'excellentes applications pour chacun de ces objectifs et la mémoire n'est plus un problème comme auparavant ... Imaginez que vous lisiez Gmail dans Emacs - je veux dire que l'interface Gmail a vraiment des raccourcis clavier géniaux intégrés, la personnalisation dans un client de messagerie Emacs va prendre beaucoup de temps et peut ne pas être aussi bon que l 'interface Gmail originale etc.
Nishant

Ce n'est pas dépassé! :)
Andriy Tykhonov

> Cependant, aujourd'hui, vous avez d'excellentes applications pour chacun de ces objectifs Oui, mais vous avez toutes ces applications avec des interfaces, des configurations, une expérience utilisateur très différentes, etc. etc ... Mais Emacs est le seul outil! Par exemple, j'aime beaucoup les raccourcis clavier Emacs, je les utilise dans le shell du navigateur. Et c'est très bien qu'au moins certaines choses soient les mêmes dans les applications ...
Andriy Tykhonov

9

Avantages d'Emacs

  • Emacs possède une interface non modale (par défaut) et une interface modale (par exemple, elle peut émuler vim et vi via Evil, Viper ou Vimpulse).

  • L'un des programmes informatiques les plus portés. Il s'exécute 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 des Emacs fournis avec le système d'exploitation.

  • L'architecture du serveur Emacs permet à plusieurs clients de se connecter à la même instance Emacs et de partager la liste des tampons, le kill ring, l'annulation de l'historique et d'autres états.

  • Système d'aide en ligne omniprésent avec des raccourcis clavier, des fonctions et des commandes documentés à la volée.

  • Variante de langage de programmation Lisp extensible et personnalisable (Emacs Lisp), avec des fonctionnalités qui incluent:

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

  • Le fait que chaque commande soit une fonction Emacs Lisp active les commandes 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 si elle existe ou en créer une si nécessaire. Cela réduit le nombre de frappes et de commandes dont un utilisateur doit se souvenir.

  • "Un OS à l'intérieur d'un OS". Emacs Lisp permet de programmer Emacs bien au-delà des fonctions d'édition. Même une installation de base contient plusieurs dizaines d'applications, dont deux navigateurs Web, des lecteurs de nouvelles, plusieurs agents de messagerie, quatre clients IRC, une version d'ELIZA et une variété de 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 comprend un gestionnaire de packages, ce qui facilite l'installation d'applications supplémentaires, notamment des navigateurs Web alternatifs, EMMS (Emacs Multimedia System), etc. De nombreux packages sont également disponibles pour la programmation, dont certains ciblent des combinaisons langue / 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 qu'Emacs.
  • Bien qu'il soit profondément associé à 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-compatible systèmes.
  • Extensible et personnalisable via le script Vim ou les API pour les langages interprétés tels que Python, Ruby, Perl et Lua
  • Omniprésent. Essentiellement, tous les systèmes Unix et Unix sont livrés avec vi (ou une variante) intégré. Vi (et ex, mais pas vim) est spécifié dans la norme POSIX.
  • Les environnements de sauvetage de système, les systèmes embarqués (notamment ceux avec busybox) et d'autres environnements contraints incluent souvent vi, mais pas emacs.

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


7

Maintenant, vous n'avez même plus besoin de penser à la différence entre ces deux en raison des Spacemacs . Il s'agit d'une distribution Emacs communautaire.

Comme il l'a dit,

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

Spacemacs combine le meilleur d'Emacs et de Vim, ce qui vous facilite la vie et le travail.

Voir capture d'écran ci-dessous,


(source: spacemacs.org )


3
C'est de la triche ... C'est emacs avec des configs funky;) Beaucoup de configs en fait
Alex

2
C'est super - quand ça marche. Quand ce n'est pas le cas - si vous ne connaissez pas déjà elisp et emacs ou si vous ne trouvez pas les principaux contributeurs dans le chat gitter - vous êtes généralement coincé et pas de chance. (parfois, la suppression de votre répertoire melpa dans .emacs peut résoudre des problèmes, cependant ...)
Aaron Hall

1
Bien qu'il ait beaucoup plus de choses que je n'en ai besoin, je suis vraiment satisfait des Spacemacs. J'ai mes fichiers dot sur github pour pouvoir configurer de nouvelles machines facilement / rapidement, et puisque j'utilise evil (raccourcis clavier vim), j'ai suffisamment de compétences pour me débrouiller quand je dois travailler sur des machines où je ne peux pas installer ma configuration spacemacs.
anr78

6

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


1
J'ai utilisé Vim pour l'édition, et Xcode pour le débogage, c'est moins qu'idéal mais faisable ..
StackedCrooked

4

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, glissant et vraiment bon pour manipuler des textes. Il a une liaison de clé naturelle composable qui peut rendre vos tâches de développement vraiment harmoniques. Vim est basé sur la simple philosophie * nix de bien faire une chose - c'est-à-dire la manipulation de texte.

Étendre Vim en utilisant bash / zsh et tmux est généralement facile et vous permet d'apprendre beaucoup de choses. À mon humble avis, c'est une bonne courbe d'apprentissage. L'essentiel est d'apprendre à intégrer ces éléments pour obtenir une application plus fonctionnelle. Avec Vim, vous devrez apprendre l'intégration, car elle ne s'intègre pas naturellement, sauf si vous lui dites comment. Une autre extension intéressante que j'utilise est Tig. C'est une interface Git basée sur ncurses. J'ai juste une reliure qui ouvre Tig silencieusement et ensuite je fais toutes les choses Git là-bas.

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. Finalement, un bon programmeur n'a besoin que d'un stylo et d'un papier pour être créatif. Les bons algorithmes n'ont pas besoin d'éditeurs pour les sauvegarder. Essayez donc 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!



3

Emacs est vraiment plus un programme tout faire , et vi (m) est vraiment juste un éditeur. Si vous modifiez du texte, ils sont tous les deux très bien, mais je préfère emacs, simplement parce que je dois en déplacer un hors de la ligne d'accueil pour se déplacer et continuer à taper les mauvaises choses en mode commande. Si vous n'avez pas ce problème, vi (m) peut être l'éditeur pour vous.


2

Un point de vue ictérique:

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 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 réussissent bien à le cacher) en raison de la conformité des gouvernements et des entreprises aux normes publiées.

À mon avis, si vous êtes dans un travail pratique dans un environnement occupé - pas une fleur de serre confinée à une seule plate-forme de fantaisie dans un environnement de développement ou dans le milieu universitaire - en savoir beaucoup sur un éditeur de fantaisie est un handicap de travail. N'apprenez pas toutes les astuces de fantaisie dans vim ou emacs, et ne développez pas un tas de macros pour faire plier l'environnement d'édition à votre guise. C'est un énorme temps 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 l'article de Bill Joy - c'est un exercice d'ingénierie très compétent, peut-être même magnifique, pour éditer du texte brut très, très rapidement. La règle de Parito s'applique ici: 80% des fruits sont dans 20% des paniers. L'édition de texte brut très très rapidement est au cœur de la compétence d'édition - tout le reste est facultatif - et parfois blessante.


3
De quel papier parlez-vous? Pouvez-vous au moins donner un nom, sinon un lien?
darkfeline

2
"Même MS doit prendre en charge vi." Pouvez-vous sauvegarder cela?
dodgethesteamroller

1

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

Toutes les machines * nix auront vi installé par défaut.

La plupart des sysdamins préfèrent ksh comme shell par défaut. ksh utilise les touches de commande vi (ou emacs) pour rechercher l'historique et modifier la ligne de commande.

Si vous ne connaissez pas bien vi vous êtes gravement handicapé lorsque vous vous connectez à une boîte Unix avec une configuration standard.

Pour cette seule raison, je recommanderais vim comme votre éditeur quotidien normal. J'ai vu des fans d'Emacs arracher leurs cheveux en essayant de modifier des fichiers de configuration sur un serveur UNIX OS.


1
Pour bash, essayez d'utiliser set -o vidans votre .bashrc, au lieu de set -o emacs, qui est utilisé par défaut. Je n'ai jamais utilisé ksh, mais ce pourrait être la même chose.
sjas

1

Dans votre question, vous n'avez pas mentionné que vous souhaitiez qu'il se programme en Lisp! Mais comme vous avez commenté vos réponses, j'ai compris que vous vouliez en fait une interface de programmation LISP.

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


1
Oui, j'en suis conscient, mais je ne cherchais pas un éditeur Lisp décent pour poser cette question - c'était juste un exemple. Merci pour la réponse!
Sasha Chedygov

1

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 comme les couches, etc. Et neovim est à nouveau un fork de vim avec des fonctionnalités supplémentaires.

Je suis assez insatisfait des deux en termes d'expérience. 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, sensiblement 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 avec le cœur d'emacs.

  • Vimscript est sympa et il y a certainement de grands projets dans l'écosystème vim également. 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 selon le package que vous utilisez. Les Spacemacs ont tendance à geler, et les neovim ont tendance à afficher des messages d'erreur effrayants, alors choisissez votre poison là-bas.

  • L'édition modale dans vim, n'est pas un concept intuitif, mais une fois que vous vous y êtes habitué, vous le voulez quand même. Les deux éditeurs fournissent cela.


1
"Le montage modal (...) une fois que vous vous y êtes habitué, vous le voulez quand même" - c'est intéressant. J'ai passé des années à utiliser Emacs avec le mode diabolique, et habitué au montage modal, et maintenant je suis retourné au non-modal ... C'est juste mieux. Je pense que cela dépend non seulement de la personne, mais aussi du contexte / du temps dans la vie / peu importe. Goût, je suppose. :)
Jay

1
@Jay je suppose, mais ne manquez-vous pas, des trucs comme la sélection des colonnes, et sauter avec ": XX"?
Kaan E.

Pas vraiment ... J'utilise parfois la sélection de rectangle d'Emacs, et au lieu de: xx je fais "Mg g XX" - quelques touches de plus, mais j'ai rarement besoin d'aller directement à une ligne. Habituellement, une application Emacs (débogueur, etc.) m'envoie vers la bonne ligne.
Jay

0

Exécution des frappes ::: l'édition vi conserve chaque permutation des touches tapées. Cela crée un chemin dans l'arbre de décision qui identifie sans ambiguïté n'importe quelle commande, tandis que les commandes Emacs sont une combinaison de clés tapé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

vim est un éditeur pratique, vous tapez simplement vim filenamepour ouvrir le fichier, modifier, enregistrer et fermer.

emacs est un "système d'exploitation" qui prétend être un éditeur, vous pouvez evalcoder pour changer son comportement et l'étendre à votre guise. UNEmode pour recevoir / envoyer des e-mails sur emacs est comme un logiciel de messagerie sur le système d'exploitation.

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

Sinon, je ne quitte jamais emacs .


0

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

J'utilise vim sur mon poste de travail, alors que j'aime aussi emacs.


0

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

  1. vous pouvez utiliser VI pour éditer les makefiles emacs.
  2. Le VI inclut les commandes ed et chaque utilisateur UNIX doit connaître ed et sed.

J'ai remarqué plusieurs commentaires sur le démarrage de VIM plus rapidement qu'emacs. Si vous vous souciez vraiment de cela, exécutez emacs en mode serveur et alias 'emacs' en 'emacsclient'. Le client est super rapide car il ne fait qu'appuyer sur le serveur sur l'épaule et lui dire quel fichier vous souhaitez modifier. Sur MacOSX, emacsclient n'est que de 33K tandis qu'emacs est de 287M.

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

La plupart des plaintes que j'entends sur emacs semblent provenir de personnes mal informées sur emacs. Ayant utilisé à la fois 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 boîtes UNIX, mais ce n'est plus le cas et cela ne l'a pas été depuis au moins 15. 20 ans.

Une plainte que j'admets 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 est un peu douloureux en accédant à plusieurs reprises à la touche Contrôle pour les accords emacs. Cela est particulièrement vrai sur le clavier du MacBook Pro où le contrôle est déplacé d'une position vers la droite pour faire de la place pour la touche "fn". Ce n'est pas aussi ennuyeux lorsque Control est la touche en bas à gauche.


Vous pouvez également "vider" emacs, ce qui signifie essentiellement prendre un instantané des extensions elisp compilées que vous désirez. Emacs démarre beaucoup plus rapidement de cette façon, mais il faut un peu de temps pour déterminer les extensions que vous souhaitez inclure.
Phil Harbison

De plus, vous pouvez jouer à "Towers Of Hanoi" dans emacs. À quel point cela est cool? :)
Phil Harbison

Re: "emacs pinkie". Sur certains claviers plus anciens, par exemple le Sun Type 3/4, sur lequel le HHKB Professional est basé, le contrôle est placé là où se trouve normalement le verrouillage des majuscules. Je n'ai pas l'expérience emacs que vous avez, cependant, je me suis très vite habitué à avoir Control sur la ligne de départ. À tel point que j'ai fait ce changement sur tous mes claviers (MacBook Pro aussi). Le HHKB a d'autres améliorations, par exemple, Backspace juste au-dessus de Enter et Esc à côté de 1.
martinweiss

@PhilHarbison pourrait élaborer sur "dump"?
A_P

0

J'ai d'abord été utilisateur de vim, puis je suis passé à emacs, puis à vim, maintenant j'expérimente à nouveau avec emacs.

  • Les deux sont de grands éditeurs.
  • Les deux sont très extensibles aujourd'hui
  • Les deux ont d'excellents plugins et une communauté

En tant que développeurs, nous tapons beaucoup et, enfin, pour moi, se déplacer dans les tampons et les fichiers sont les plus grandes tâches répétitives, donc je veux un éditeur où je peux me déplacer rapidement!

La motivation pour expérimenter à nouveau avec emacs est que je suis tombé dessus Ctrl a mené les raccourcis clavier plus rapidement que vim, et plus facile à raisonner.

Dans vim, vous avez des modes, vous avez un mode d'insertion, un mode visuel, un mode normal, ce qui se passe lorsque vous appuyez sur quelque chose dépend du mode que vous êtes, est une approche dynamique de l'édition. Vous vous déplacez, entrez en mode insertion, éditez, sortez du mode insertion et déplacez-vous à nouveau. Je me perd souvent si je manque une presse ESC ou quelque chose comme ça.

Dans emacs il n'y a pas de mode, en gros vous appuyez sur Ctrl avec votre rose et tapez la frappe, comme Cx Cf, Cx Cs, Cx Cc. Il y a des raccourcis clavier où vous devez relâcher la touche ctrl, je déteste ceux-ci et les remplace toujours par ceux avec le contrôle enfoncé.

Je pense que l'approche emacs est plus rapide à penser et à taper, mais vim a une autre force, celle de. Ses commandes sont composables, elles ont généralement un format. Par exemple, pour supprimer une ligne que vous pouvez utiliser dd, pour supprimer un mot dw. Les plugins utilisent cette suppression, avec le plugin vim-surround, vous pouvez supprimer les guillemets avec ds "(supprimer le surround"), supprimer jusqu'au suivant / dt/. Supprimer jusqu'au précédent /: dT/et ainsi de suite. Donc, tant que vous apprenez, les choses en mouvement commencent à devenir très intéressantes.

En résumé, aujourd'hui, je suis tombé que les raccourcis clavier emacs sont plus rapides pour l'édition de macro et les commandes vim sont plus puissantes pour le micro-édition

J'utilise vim depuis cinq ans donc j'édite en pensant principalement aux mots, aux lignes, à l'entourage, aux blocs, etc. se déplace pour cela

Pour terminer , je dirais que, je me soucie plus de fzf que d'emacs ou de vim, j'adorerais avoir un éditeur entièrement basé sur fzf


-9

Tout d'abord Vi (réalisation originale) non utilisée aujourd'hui. Ce que vous dites est une dérivation de Vim.

Pour étendre les fonctionnalités de Vim, vous devez recompiler Vim, pas Emacs.

Emacs a Vim en lui-même (mode viper).

Emacs nécessite généralement une installation manuelle, Vim généralement préinstallé sur tous les systèmes d'exploitation Unix (mais si vous avez un accès ssh à l'hôte en mode tramp, gagnez Vim :).

Si vous essayez Vim, vous détestez Emacs, alors commencez par Emacs en premier.

Lisez également http://www.dina.dk/~abraham/religion/vi-tutorial.html (lien descendez donc utilisez ce )

Anwer search in hxxp: //en.wikipedia.org/wiki/Editor_war


8
Vous n'avez pas besoin de recompiler vim pour l'étendre. Vous n'avez même pas besoin de quitter vim.
trop de php le

1
Avoir accès à vimscript / Python / Ruby / etc à toutes les structures internes de Vim? Si l'éditeur de base de code aide à rendre l'extension ou la complexité de l'extension à un niveau de complexité d'EDITOR?
gavenkoa

1
La plupart des scripts Vim comme les MACROS intelectuels. Pour étendre Vim, vous avez besoin de plugins ((
gavenkoa

1
Vi n'est pas utilisé?!?! Quelle? Le nvi est-il considéré comme original? Ou un «vi traditionnel»? Beaucoup de systèmes comme FreeBSD, ArchLinix regroupent le traditionnel vi ou nvi et j'en suis reconnaissant. Certains systèmes comme Debian vont avec vim qui est en mode compatible par défaut (ressemble presque à vi traditionnel)
Alex

1
@gavenkoa, je suis absolument d'accord avec Alex, vous n'avez évidemment jamais essayé un système nécessitant une installation manuelle comme Gentoo, certains BSD ou Arch Linux. Aussi, «Si vous essayez Vim, vous détestez Emacs, alors commencez par Emacs d'abord.» me ferait essayer VIM d'abord, et vous aussi, si vous réfléchissez un peu. Cela me rappelle les gens qui disent de ne pas essayer la programmation fonctionnelle en premier. Je suis triste de ne pas l'avoir essayé plus tôt ...
JMCF125
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.