Vim est un éditeur de texte, c’est-à-dire un logiciel permettant la manipulation de fichiers texte. Il est directement inspiré de vi (un éditeur très répandu sur les systèmes d’exploitation de type Unix), dont il est le clone le plus populaire. Son nom signifie d’ailleurs , que l’on peut traduire par « VI aMélioré ».

Vim est un éditeur de texte extrêmement personnalisable, que ce soit par l'ajout d'extensions, ou par la modification de son fichier de configuration, écrits dans son propre langage d'extension, le Vim script.

Bien qu'il ait de nombreuses fonctionnalités, il conserve un temps de démarrage court (même agrémenté d'extensions) et reste ainsi adapté pour des modifications simples et ponctuelles (de fichiers de configuration par exemple).

Vim se différencie de la plupart des autres éditeurs par son fonctionnement modal, hérité de vi. En effet, il possède trois modes de base : le mode normal ou mode commande (dans lequel vous êtes lorsque Vim démarre), le mode insertion, et le mode ligne de commande.

Vim est un logiciel libre. Son code source a été publié pour la première fois en 1991 par Bram Moolenaar, son principal développeur durant de longues années. Depuis, ce dernier avait continué de l’améliorer (il est décédé en 2023), avec l’aide de nombreux contributeurs. La communauté poursuit désormais son œuvre.

Présentation vignette|300px|Image 1 : Vim dans une console : coloration syntaxique, repli et numérotation des lignes.

Dans un terminal informatique, Vim fonctionne en mode texte plein écran, comme l’éditeur de texte vi. Il propose énormément de fonctions qui sont, pour la grande majorité, accessibles au clavier. Ceci s’explique par des raisons historiques : les premières versions de vi datent du milieu des années 1970, époque à laquelle les téléscripteurs, les terminaux alors les plus répandus, étaient incapables de supporter le mode Wysiwyg faute d'écran cathodique (l'impression sur papier d'une dizaine de lignes de code pouvait prendre près d'une minute). L'ergonomie de Vi, à base de raccourcis clavier, permettait de réduire la quantité de texte à imprimer pour effectuer et vérifier les modifications apportées au fichier.

Vim peut, si l'utilisateur le souhaiteEn tapant :set compatible dans le mode normal., être compatible à 100 % avec vi. De très nombreuses améliorations et fonctionnalités ont été ajoutées à Vim, et ne sont pas présentes dans Vi, comme la gestion de la souris, le repliement, la coloration syntaxique... De plus, depuis la version 4.0, Vim dispose d’une interface utilisateur graphique moderne, GVim.

Il existe deux autres versions de Vim : l'une, simplifiée pour les utilisateurs débutants, eVim (le "e" pour easy) ; et l'autre, Vim-Tiny, plus compacte. Cette dernière est une version minimale de vim compilée sans interface graphique, avec seulement un petit sous-ensemble de fonctions : elle prend à peine plus d'espace-mémoire que nvi . Certaines fonctionnalités, telles que la coloration syntaxique, ne sont pas incluses dans Vim-Tiny.

Vim est utilisable sur de nombreux systèmes d’exploitation et est disponible sur pratiquement toutes les distributions GNU/Linux. En général, l’exécutable vi sur Linux correspond à un lien ou à un alias appelant Vim. Quand Vim est déjà lancé, il est possible de connaître sa version en utilisant la commande :version du mode Normal.

Histoire Bref historique sur ed/vi Au début des années 1970, l’éditeur standard d’Unix était ed de Ken Thompson. ed ne permettait qu’une édition ligne par ligne, et n’affichait pas l’intégralité du texte, comme cela est devenu courant avec le Bloc-notes de Windows (1985), ou l’EDI de Borland (1985). Il fallait pour cela demander explicitement l’affichage du fichier (par la commande :li), sans possibilité de modifier le texte autrement qu'en donnant d'abord le numéro de la ligne à modifier. Pour pouvoir travailler malgré les limites imposées par l’édition ligne par ligne, il était nécessaire d’utiliser un mode dédié à l’insertion et un mode dédié au passage de commandes.

Les commandes de ed sont principalement composées d’une lettre, précédée d’une indication donnant les lignes sur lesquelles agir. En 1976, quand Bill Joy développa vi, le progrès fut considérable, puisqu’il considérait l’écran dans son ensemble et qu’il reportait les modifications apportées au texte édité dans la représentation qu’il en donnait. vi a hérité de ed le concept des modes et les instructions obscures. On retrouve aujourd’hui encore ces particularités dans les éditeurs compatibles avec vi, en particulier Vim.

Développement de Vim

thumb|left|300px|Image 3 : Vim en mode graphique, avec l’explorateur de fichiers (à gauche) et l’édition d’un fichier Unicode (à droite)

À la fin des années 1980, quand Bram Moolenaar s’est acheté un ordinateur de marque Commodore Amiga, il souhaitait avoir la possibilité d’utiliser l’éditeur qu’il connaissait et auquel il était habitué sur UNIX ; mais vi n’était pas porté sur Amiga : il a donc développé en 1988 la version 1.0 de Vim, sur la base de « Stevie » (STvi), un clone de vi écrit pour Atari. À cette époque, Vim signifiait , car son objectif principal consistait d’abord à reproduire les fonctionnalités de vi. En 1991, Vim 1.14 fut distribué pour la première fois sur la disquette , une collection de logiciels libres pour Amiga. En 1992, la version 1.22 de Vim est portée sur UNIX et MS-DOS. C’est à ce moment que l’acronyme Vim a changé de signification pour devenir « Vi IMproved (aMélioré en français) ».

Au cours des années suivantes, Vim a connu de nombreuses améliorations. Une étape importante fut l’introduction des fenêtres multiples dans la version 3.0 (en 1994). Avant cela, il était déjà possible d’éditer plusieurs fichiers dans Vim, mais un seul fichier était visible à la fois, il n’était pas possible d’afficher plusieurs fichiers simultanément. Avec la version 4.0 (datant de 1996) fut ajoutée pour la première fois une interface utilisateur graphique, en grande partie écrite par Robert Webb.

La version 6.0 a vu le jour en 2001 : repli du texte, greffons, support de l’internationalisation, partage vertical des fenêtres. Depuis la sortie de la version 5.4 en , des patchs sont publiés pour corriger les erreurs et éliminer les bugs.

La dernière étape notable de Vim est survenue en 2006 avec la version 7.0 . Son développement a débuté en 2004 . et elle intègre en particulier la vérification et la correction orthographique, le support des onglets et un complètement personnalisable selon les langages. Le principe fondamental du développeur principal de Vim reste toujours le même : Vim doit rester un éditeur de texte et être le plus possible au service de l’utilisateur.

Vim suit un rythme de développement très actif et des nouvelles versions sont publiées quotidiennement Vim-8.2.1361, Beyond Linux From Scratch version 10.0, publiée le 01/03/2020.Vim, Github officiel..

Résumé des versions

Date Version Étape remarquable. 1988 1.0 Inspirée par Stevie, son nom signifie alors Vi IMitation. Cette version pour Amiga n’a jamais été publiée. 1.14 Première version publiée sur Amiga avec le Fred Fish disk #591. 1992 1.22 Portage vers Unix. Vim est maintenant au niveau de Vi. Le nom Vim signifie désormais Vi IMproved. 3.0 Support des fenêtres multiples. 4.0 Interface graphique. 5.0 Coloration syntaxique, langage de script simple (fonctions et commandes définies par l’utilisateur, etc.). 6.0 Pliage de code, greffons, gestion des types de fichiers, ajout du partage vertical des fenêtres. 7.0 Vérification orthographique, complétion du code, support des onglets. 8.0 I/O asynchrones, support de Gtk3, fin du support de MS-DOS, support de DirectX. 9.0 Nouvelle génération du langage Vim script : Vim9 script..

Note : Dans son aide interne, Vim comporte le détail des modifications entre chaque version. Par exemple, la commande du mode Normal :help version-5.4 permet de connaître les différences entre les versions 5.3 et 5.4. De cette manière, il est possible de remonter jusqu’aux différences entre les versions 3.0 et 4.0.

Caractéristiques fonctionnelles Vue générale

Multi-tampons : édition de plusieurs fichiers simultanément Multi-fenêtrage : gestion des fenêtres, partages horizontaux ou verticaux Mise en forme du texte et mode Visuel, permettant les opérations sur des blocs Annulation et restauration illimitées Nombreux fichiers de support pour l’édition de fichiers de type prédéfini Coloration syntaxique adaptée au langage en cours d’édition (dans la version 9.2, plus de 750 fichiers de configuration) Indentation automatique adaptée au langage Langage de script intégré pour ajouter ou étendre des fonctionnalités Complément des commandes, des mots ou des noms de variables Auto-commandes (elles permettent par exemple d’automatiser la décompression des fichiers zippés avant de les éditer) Reconnaissance et conversion des formats de fichier (Unix, MS-DOS ou Mac) Historique des commandes, des recherches… facilement consultable Enregistrement et exécution de macro-commandes Intégration possible (et optionnelle) de langages interprétés dans le langage de script de Vim : Perl, Python, Ruby, Tcl, et à partir de la version 7 MzScheme Support de l’édition de droite à gauche (hébreu, arabe, persan, etc.) Repli de certaines parties du texte pour faire émerger une structure, y compris dans le mode « différences » pour comparer des versions successives d’un même fichier Gestion des marqueurs pour se déplacer facilement dans le code source d’un programme Interface graphique optionnelle disponible pour différentes bibliothèques graphiques (Windows, Mac, GTK+, Motif…) Hautement configurable, préférences systèmes et personnelles sont prises en compte Pour les puristes : il existe un mode quasiment compatible à 100 % avec vi, jusqu'aux erreurs et bugs manifestes de ce dernier Plusieurs « registres », permettant d’avoir un presse-papiers avec des contenus différents ; le contenu des registres est facilement consultable et copiable dans le fichier édité

L’efficacité de Vim est notamment due à plusieurs améliorations marquantes par rapport à vi.

Plates-formes

Vim fonctionne sur de nombreux systèmes d’exploitation. Cet aspect multi-plateforme est important pour les utilisateurs travaillant sur plusieurs environnements différents, comme les administrateurs systèmes. Avec Vim, ils trouvent un éditeur quasi identique pour tous ces systèmes :

AmigaOS, Atari MiNT, BeOS, MS-DOS, Mac OS, NeXTSTEP, OS/2, OSF, RiscOS, SGI, UNIX, VMS, Win16 + Win32 (Windows 95/98/2k/NT/XP/Vista/2k3), et tous les systèmes BSD et GNU/Linux.

Aide interne

thumb|left|300px|Image 3 : Aide de Vim : la rubrique d’aide dans la fenêtre du haut, et le résultat de la commande ':helpgrep evim' dans la fenêtre du bas

Vim possède une documentation établie selon le précepte : « Une fonctionnalité non documentée est une fonctionnalité inutile ». La documentation en mode texte occupe pratiquement 4 mégaoctets. L’utilisateur a la possibilité d’utiliser différentes fonctions de recherche.

Grâce à la coloration syntaxique et à une manière spécifique de rédiger les fichiers d’aide, les notions principales sont mises en valeur. Les sujets documentés (désignés par des mots-clés) ont une couleur particulière et apparaissent entourés par des barres verticales. Le déplacement dans l’aide s’effectue grâce à des liens hypertextes. Cette navigation se pratique à l’aide de commandes claviers, mais est également possible par l’intermédiaire de la souris, dans l’interface graphique.

Il existe d’autres commandes encore pour faciliter les recherches de l’utilisateur, en particulier la commande :helpgrep (Image 3). Avec cette commande, l’utilisateur peut chercher un mot-clé au travers de la totalité de l’aide, afficher les résultats dans une fenêtre et atteindre l’emplacement