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


84

Je connais un peu * éditeurs de texte NIX (actuellement la migration de nanola vim), et, après avoir regardé autour un peu sur Unix et Linux SE, ont remarqué que viest utilisé au lieu 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 sur vim?

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


25
L'avantage viest que vous pouvez vous attendre à ce qu'il se trouve sur tous les systèmes compatibles POSIX.
Jordanie le

1
En fait, l’installation standard d’Ubuntu inclut viet non vim.. Ubuntu est l’un des
distro

10
@amyassin Ceci est incorrect, Ubuntu, comme la plupart des distributions Linux, comprend vim. viest juste un lien symbolique qui pointe finalement vimdans l'installation par défaut.
Jlliagre

2
Mon conseil est: Utilisez Vim, mais apprenez à viutiliser les spécifications POSIX pourvi . De cette façon, vous avez une connaissance portable et vous connaissez les extensions Vim.
Wildcard

1
@DDK Vous avez manqué "finalement" dans ma déclaration. "ls -l / etc / alternatives / vi" -> "lrwxrwxrwx 1 racine racine 17 janv. 1 2016 / etc / alternatives / vi -> /usr/bin/vim.tiny"
jlliagre

Réponses:


61

viest (aussi) un éditeur standard POSIX . Il existe de nombreuses implémentations et vimest probablement la plus populaire au moins sur Linux.

Alors que de nombreux systèmes d'exploitation compatibles Unix traditionnels proposent des viimplémentations très proches de la norme, de vimnombreuses fonctionnalités supplémentaires ont été ajoutées qui en font une arme à double tranchant.

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

Ceci est assez similaire au problème rencontré avec les scripts utilisant des bashismes non POSIX, confrontés à des implémentations de shell plus orthodoxes telles que dashou ksh.


29

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

Modifier également lire: Est-ce que l'apprentissage de VIM en vaut la peine?


4
Oui. Je n'utilise aucun IDE parce que les éditeurs qu'ils vous obligent à utiliser ne sont tout simplement pas Vim.
Keith

1
@Keith J'utilise à la fois Xcode et Eclipse et je suis toujours capable de faire de l'édition avec vi seulement.
ott--

@Keith SlickEdit a une excellente émulation Vim et IDEA s'en rapproche. En outre, Visual Studio a ViEmu.
demonkoryu

1
IntellIJ dispose également d’un plug-in vim permettant de redéfinir le comportement de l’éditeur standard.
JulienD

24

Après avoir passé une bonne partie de ma vie (sans compter l'enfance) à éditer confortablement avec Vim, j'ai passé environ un mois à utiliser 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 substituer du texte ou effectuer une opération similaire dans un grand groupe de fichiers, j’ouvrais simplement les fichiers dans Vim et exécutais une :bufdocommande, et chaque fois que je devais mettre en retrait ou formater certains fichiers, Je voudrais les ouvrir dans Vim et utiliser les commandes =et gwcommandes de Vim . 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 sedet d’apprendre beaucoup de choses sur d’autres programmes tels que awketindent. Bien que je sois revenu à l’utilisation de Vim, les connaissances que j’avais acquises avec un éditeur moins complet étaient considérables et se sont révélées extrêmement utiles. En plus d'apprendre à utiliser des outils en dehors d'un éditeur de texte, je me suis également familiarisé avec vi. Vi. Chaque fois que je travaille sur un nouveau système ou sur un serveur ne disposant pas de Vim, je me sens beaucoup plus à l'aise avec vi que je ne le faisais 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é une différence de performances notable entre Vim et vi. J'ai donc tendance à utiliser vi sur la tablette.


3
Je trouve qu'il s'agit d'un problème courant en informatique: les outils qui nous aident peuvent également occulter des choses que nous ferions mieux d'apprendre.
danno

En fait, la manipulation en place l' édition de fichiers sur de nombreux fichiers ne peut pas être fait avec portably awk ou sed soit . (Le -icommutateur sur les deux est une extension GNU.) Mais vous pouvez les utiliser de manière portable avec quelque chose commefor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

J'aurais du mal à vivre sans vim mais je ne peux pas supporter vi . Cependant, apprendre le premier vous laissera au moins une idée de la façon de traiter le plus tard, lorsque tout sera disponible.

Par défaut, l'interface vim est assez proche de vi. Si je travaille sur un système avec vim, la première chose que je fais est d'ajouter ces éléments à ~/.vimrc:

syntax enable
set nocp
set wildmenu

Il y a une foule d'autres choses que je préfère - maintenant, y compris la numérotation, etc. - mais ça ne fait rien. "syntax enable" active simplement la coloration syntaxique de base (un peu plus costaud: filetype plugin onest fondamental aussi); "nocp" désactive la compatibilité de vi et c'est ce qui commence à distinguer vim de ye olde vi (par exemple, cela permet de showmoderendre l'expérience plus humaine, puisque vous savez maintenant si vous êtes aux commandes ou ~ INSERT ~ mode). "wildmenu" vous donne juste un menu de finition horizontal lorsque vous faites certaines choses, ce qui vous simplifie la vie aussi.

Les fonctionnalités d' édition de texte de vim sont incomparables - à part emacs, je n'ai jamais vu ni entendu parler d'un logiciel qui se rapproche. Ils ne sont pas faciles à apprendre, mais une fois que vous les connaissez, ils sont beaucoup plus rapides à utiliser que les menus de la souris et beaucoup plus dynamiques que les simples alternatives de macro-clés dans les interfaces basées sur les menus de la souris. Pour la programmation, j'utilise parfois vim aux côtés 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.


J'ajoute toujours set mouse=aaussi.
ott--

En ce qui concerne votre commentaire de programmation, vous pouvez trouver eclim intéressant ...
ire_and_curses

@ire_and_curses: je n'ai pas essayé. Eclipse et vim surveillent les fichiers source et leur permettent d'être mis à jour de manière externe. Passer d'un bureau à un autre revient à passer d'un bureau à un autre. Cela semble être l'idée même.
goldilocks

Bien que je ne pense pas que cette réponse devrait être la réponse choisie (car elle est biaisée), c'est exactement le type de perspective qui est utile pour comprendre les différences. Merci d'avoir pris position.
geneorama le

8

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


1

Je l' ai remarqué que je ne choisis Viplus VIMquand je suis copier et de coller un document texte ou d'un fichier de configuration que je l' ai utilisé la catcommande. En effet , lorsque je tente de ctrl-cpuis ctrl-vdans le VIMdocument ouvert, il oblige toutes les lignes ont un commentaire Infront d'entre eux. Alors , quand je l' utilise Vipour ctrl-vou pastedans le Vidocument ouvert, il colle exactement ce que je copié. Autre que cela, je l'utilise VIMtoute la journée.

Prendre plaisir!


5
Essayez:set paste
Patrick

3
set pastetoggle = <F2> dans .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave

1

Comme nous l'avons déjà mentionné, vi est livré 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 l'installateur, ni la distribution de base ne sont livrés avec vim par défaut, mais les deux sont livrés avec vi.

Ceci n’est pas un avantage pour vi en soi , car vous pouvez simplement installer vim manuellement, et il vous reste peu de choses à faire lors de l’installation qui nécessite un éditeur de texte, et rien dans lequel vim est supérieur à vi pour le but recherché. Mais comprendre la différence et le fait que vi est plus omniprésent et léger que vim ne lui confère des avantages de niche.

En outre, pour être complet, personne n’a encore précisé 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, de manière très directe, vim est supérieur à vi, car il a été conçu pour être .


1

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

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

Empruntant à un article en rapport, j'ai répondu: -

  1. Plusieurs fenêtres - horizontale, verticale et onglets.
  2. Mise en évidence visuelle.
  3. Aide en ligne via la commande: help.
  4. Enregistrez des macros dans un registre que vous pourrez ensuite exécuter.
  5. Annule (et refait) plusieurs fois, plutôt que l'alternelle folle d'annulation de vi.
  6. Historique de la ligne de commande, historique de la recherche.
  7. Un langage entier intégré avec une multitude de fonctions disponibles, par exemple getcwd ()
  8. Correspondance de motif largement développée.
  9. Compléter le mot via ctrl-P & ctrl-N.
  10. Un navigateur de fichiers intégré (un peu maladroit, mais peut être utile).
  11. En fait, la touche ESC ferme les commandes que vous essayiez, eh bien, vous échappez au lieu de les exécuter (de façon insensée) comme vi.
  12. Possibilité d'exécuter des commandes sur tous les tampons, arguments ou fenêtres via bufdo, argdo & windo.

Vous auriez probablement pu expliquer les "nombreuses raisons" que vous avez mentionnées dans la réponse unix.stackexchange.com/a/425597/85039 ici. Cela améliorerait un peu cette réponse. sinon, il se lit plus comme un commentaire que comme une réponse réelle
Sergiy Kolodyazhnyy

Point pris. Réponse mise à jour, empruntant à une réponse connexe que j'ai faite hier.
Paul T

1

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 le chemin de Vim. vi est saint mais Vim ne l'est pas; son code s’étale, ses caractéristiques encombrent la mémoire; ses binaires sont vastes, son comportement est incohérent. Ce n'est pas la manière d'Unix. Je crains que vous induisiez en erreur vos étudiants. Ce qui peut être fait?"

Maître Wq hocha la tête. "Vous avez raison", dit-il. «Vim est cassé. Laissez-nous résoudre ce problème. Allons-nous commencer?"

L'ancien maître Unix a accepté et a ouvert un shell. Il a tapé:

$ vi vim.c

Il a commencé à coder. Maître Wq observa un moment puis lui demanda: «Quelle implémentation de vi utilisez-vous? Nvi? Vim? Elvis?

"Je ne sais pas", dit le maître Unix. "Ce n'est pas grave."

Maître Wq hocha la tête. Le maître Unix resta sidéré un instant et ferma son document sans sauvegarde.

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.