web-dev-qa-db-fra.com

Vi vs vim, ou y a-t-il une raison pour laquelle je voudrais utiliser vi?

Je connais un peu * les éditeurs de texte NIX (qui migrent actuellement de nano vers vim), et, après avoir regardé un peu sur Unix et Linux SE, j'ai remarqué que vi est utilisé à la place de 'vim' dans un bon nombre de questions. Je sais que "vim" signifie "Vi IMproved" et, dans cet esprit, je me demande pourquoi quelqu'un préfère utiliser vi au lieu de vim. Vi a-t-il un avantage significatif par rapport à vim?

Edit: Je pense que ma question est mal interprétée. Je sais que vim est, pour la plupart, beaucoup plus puissant et complet que vi. Ce que je veux savoir, c'est s'il y a des cas possibles où vi a un avantage sur vim, comme une utilisation moindre de la mémoire, une prévalence sur les systèmes * nix, etc.

89
fouric

vi est (aussi) n éditeur standard POSIX . Il existe de nombreuses implémentations et vim est probablement la plus populaire au moins sous Linux.

Alors que de nombreux systèmes d'exploitation traditionnels conformes à Unix fournissent des implémentations vi très proches de la norme, vim a ajouté de nombreuses fonctionnalités supplémentaires qui en font une arme à double tranchant.

Bien sûr, ces extensions sont généralement conçues pour faciliter le processus d'édition et fournir des caractéristiques et fonctionnalités utiles. Cependant, une fois que vous en avez l'habitude (pas les cosmétiques comme la coloration syntaxique mais ceux qui modifient le comportement de l'éditeur), vous pouvez facilement oublier qu'ils sont spécifiques; et l'utilisation d'une implémentation différente, y compris celles basées sur le code BSD d'origine, peut être très frustrante. L'inverse est également vrai.

Ceci est assez similaire au problème qui se produit avec les scripts utilisant des bashismes non POSIX face à des implémentations Shell plus orthodoxes comme dash ou ksh.

63
jlliagre

Aucun vi n'a aucun avantage significatif par rapport à vim, mais plutôt l'inverse. Vim a plus d'avantages que Vi. Vous pourriez être intéressé par: Pourquoi, oh POURQUOI, ces #? @! Nutheads utilisent-ils vi?

Modifier également lire: Est-ce que l'apprentissage VIM vaut l'effort?

29
abhixec

Après avoir passé une grande partie de ma vie (sans compter l'enfance) à éditer confortablement avec Vim, j'ai passé environ un mois à n'utiliser que vi. Ce faisant, j'ai réalisé que j'avais été dépendant de Vim pour tous mes besoins de modification de texte. Avant mon voyage avec vi, chaque fois que je devais remplacer du texte ou effectuer une opération similaire dans un grand groupe de fichiers, j'ouvrais simplement les fichiers dans Vim et exécutais un :bufdo, et chaque fois que je devais mettre en retrait ou formater certains fichiers, je les ouvrais dans Vim et j'utilisais = et gw commandes. J'étais dépendant de Vim. Après avoir réalisé que vi n'avait pas ces commandes, j'ai été forcé d'effectuer des transformations de texte en bloc avec sed et j'ai beaucoup appris sur d'autres programmes tels que awk et indent. Bien que j'ai finalement recommencé à utiliser Vim, les connaissances que j'ai acquises en utilisant un éditeur moins présenté étaient substantielles et se sont révélées extrêmement utiles. En plus de découvrir des outils en dehors d'un éditeur de texte, j'ai également fait connaissance avec vi. Chaque fois que je travaille sur un nouveau système ou un serveur qui n'a pas Vim, je me sens beaucoup plus à l'aise avec vi qu'avant mon excursion d'un mois.

En outre, le mois dernier, j'ai installé Linux sur une tablette WM8650 bon marché et j'ai constaté qu'il y avait une différence de performance notable entre Vim et vi, j'ai donc tendance à utiliser vi sur la tablette.

24
user26112

J'aurais du mal à vivre sans vim mais Je ne supporte pas vi . Cependant, apprendre le premier vous laissera au moins une idée de la façon de traiter le plus tard quand c'est tout ce qui est disponible.

L'interface vim par défaut est en fait assez proche de vi. Si je travaille sur un système avec vim, la première chose que je fais est d'ajouter ce genre de choses à ~/.vimrc:

syntax enable
set nocp
set wildmenu

Il y a un tas d'autres choses que je préfère - maintenant et numéroter, etc. - mais tant pis. "syntax enable" active simplement la mise en évidence de la syntaxe de base (un peu plus fort: filetype plugin on est également fondamental); "nocp" désactive la compatibilité vi et c'est ce qui commence à distinguer vim de ye olde vi (par exemple, il active showmode ce qui rend l'expérience un peu plus humaine, puisque vous maintenant avoir une idée de si vous êtes en commande ou en mode ~ INSERT ~). "wildmenu" vous donne juste un menu de complétion horizontal lorsque vous faites certaines choses, ce qui vous facilite également la vie.

Les fonctions d'édition de texte de vim sont incomparables - à part emacs, je n'ai jamais vu ou entendu parler d'un logiciel qui s'en rapproche. Ils ne sont pas faciles à apprendre, mais une fois que vous les connaissez, ils sont beaucoup plus rapides à utiliser que les menus de souris et beaucoup plus dynamiques que les alternatives de macro clés simples dans les interfaces basées sur les menus de souris. Pour la programmation, j'utilise parfois vim à côté d'un IDE comme Eclipse, mais je fais la plupart du travail dans vim.

Si vous prenez ce chemin, lol, regardez dans les plugins d'auto-complétion et de liste de balises. Et méfiez-vous du côté obscur.

12
goldilocks

L'avantage est que vi est généralement préinstallé dans UNIX d'entreprise comme AIX ou Solaris. De plus, vim n'est pas accessible sur le support d'installation.

9
dchirikov

Ceci est extrait de Vim Koans :

Master Wq et le maître Unix

Un vieux maître Unix est venu chez Master Wq. "Je suis troublé, Wq. Vous enseignez la voie de Vim. vi est saint mais Vim ne l'est pas; son code s'étend, sa mémoire de foule de dispositifs; ses binaires sont vastes, son comportement incohérent. Ce n'est pas la voie d'Unix. Je crains que vous trompiez vos élèves. Ce qui peut être fait?"

Maître Wq hocha la tête. "Vous avez raison", a-t-il dit. "Vim est cassé. Corrigeons-le. Allons-nous commencer?"

Le vieux maître Unix a accepté et a ouvert un Shell. Il a tapé:

$ vi vim.c

Il a commencé à coder. Maître Wq a regardé pendant un moment puis lui a demandé: "Quelle implémentation de vi utilisez-vous? Nvi? Vigueur? Elvis? "

"Je ne sais pas", a déclaré le maître Unix. "Ça n'a pas d'importance."

Maître Wq hocha la tête. Le maître Unix resta stupéfait pendant un moment et ferma son document sans avoir été enregistré.

3
modlin

Comme les réponses précédentes l'ont déjà mentionné, vi est fourni avec à peu près tous les systèmes UNIX disponibles.

Je voulais juste ajouter un exemple. Arch Linux est une distribution particulièrement populaire et légère que ni le programme d'installation ni la distribution de base ne sont livrés avec vim par défaut, mais les deux sont livrés avec vi.

Ce n'est pas un avantage pour vi en soi, car vous pouvez simplement installer vim manuellement, et il n'y a pas grand-chose à faire dans l'installation qui nécessite un éditeur de texte, et rien où vim est supérieur à vi pour l'objectif prévu. Mais comprendre la différence et que vi est plus omniprésent et léger que vim lui donne des avantages de niche.

De plus, pour être complet, personne n'a encore mentionné explicitement que vi est un précurseur direct de vim. Vim était spécifiquement conçu pour être tout ce que vi était, et plus encore.

Donc, d'une manière très directe, vim est supérieur à vi, car il a été conçu pour être.

2
StatGenGeek

La seule raison d'utiliser vi sur vim est lorsque vous n'avez pas d'autre choix.

Il y a beaucoup, beaucoup de raisons pour lesquelles vim signifie "vi amélioré"!

Empruntant à un poste connexe, j'ai répondu: -

  1. Fenêtres multiples - horizontales, verticales et tabulations.
  2. Surlignage visuel.
  3. Aide en ligne via la commande: help.
  4. Enregistrez les macros dans un registre que vous pouvez ensuite exécuter.
  5. Annuler (et refaire) plusieurs fois, plutôt que basculer la défaite folle du vieux vi.
  6. Historique de la ligne de commande, historique des recherches.
  7. Un langage entier intégré avec une multitude de fonctions disponibles, par exemple getcwd ()
  8. Correspondance de motifs considérablement élargie.
  9. Complétion de mots via ctrl-P & ctrl-N.
  10. Un navigateur de fichiers intégré (un peu maladroit, mais peut être utile).
  11. La touche ESC quitte en fait les commandes que vous tentiez, eh bien, d'échapper au lieu de (follement) les exécuter comme le fait vi.
  12. Possibilité d'exécuter des commandes sur tous les tampons, args ou fenêtres via bufdo, argdo & windo.
1
Paul T

J'ai remarqué que niquement je choisis Vi plutôt que VIM lorsque je copie et colle un document texte ou un fichier de configuration que j'ai utilisé la commande cat . En effet, lorsque j'essaie de ctrl-c et alors ctrl-v dans le VIM document ouvert, il force toutes les lignes à avoir un commentaire devant elles. Donc, quand j'utilise Vi pour ctrl-v ou paste dans le Vi document ouvert, il colle exactement ce que j'ai copié. A part ça, j'utilise VIM toute la journée.

Prendre plaisir!

1
Tony-Caffe