Nous avons, le mois dernier, présenté les bases de l'utilisation de Vi. Ces explications concernaient toutes les versions existantes de l'éditeur. Ce mois-ci, nous allons nous spécialiser dans l'apprentissage et la configuration du plus populaire Vi existant : VIM, Vi Improved.

Vous pourrez trouver Vim sur le site officiel www.vim.org. Ce Vi est écrit et maintenu par Bram Moolenaar. Inutile de vous précipiter sur ce site, à moins que vous ne vouliez absolument télécharger la dernière version existante. En effet, vous devez sans doute déjà posséder un Vim prêt à l'emploi dans votre distribution ou du moins un package présent sur les CD-Roms.

Vim est utilisable en plusieurs versions : La première en mode console/texte classique et la seconde en mode graphique utilisant habituellement GTK+. Cette dernière se lance avec l'option -g ou encore en l'invoquant directement par gvim. Mais quelque soit la version, les explications qui vont suivre sont parfaitement valables. Notez également que Vim est disponible pour Linux mais également pour un très grand nombre de plates-formes. Jugez plutôt :

AmigaOS, AtariMiNT, BeOS, DOS, MacOS, MachTen, OS/2, RiscOS, VMS, and Windows (95/98/NT4/NT5/2000), A/UX, AIX, BSDI, Convex, DYNIX/ptx, DG/UX, DEC Unix, FreeBSD, HPUX, Irix, Linux [Debian, RedHat, Slackware, SuSE,...], MacOSX, NetBSD, NEXTSTEP, OpenBSD, OSF, QNX, SCO, Sinix, Solaris, SunOS, SUPER-UX, Ultrix, Unixware, Unisys ... Bref, tout.

Automatiser la modification de texte

Vim offre un grand nombre de fonctionnalités qui ne sont pas présentes dans les Vi plus traditionnels. Ainsi, l'auteur a ajouté un certain nombre de choses pour faciliter la saisie et la modification de texte. L'un de ces ajouts concerne les alias. Il est possible, en effet, d'associer une manipulation fastidieuse à un raccourci. Prenons l'exemple d'une édition de fichier HTML et imaginez que vous venez de récupérer un gros fichier où il convient de mettre en commentaire quelques lignes. En temps normal, vous devriez faire la chose suivante :

  • vous déplacer jusqu'à une ligne à mettre en commentaire
  • aller en début de ligne
  • passer en mode insertion et ajouter <!--
  • aller en fin de ligne et ajouter -->
  • quitter (éventuellement) le mode insertion

    Si vous avez beaucoup de lignes, prévoyez dans ce cas la journée ...

    Heureusement, Vim et ses alias peuvent vous êtres utiles. Passer en mode commande et saisissez :

    :map 2 0i<!--<ESC>$a--><ESC>
    

    map est la commande vous permettant d'associer une touche du mode commande à une manipulation. 2 est la touche que nous avons choisi. Ensuite figurent tout simplement les manipulations à effectuer au même titre que si vous faisiez vous-même la manipulation :

  • 0 pour aller en début de ligne
  • i pour passer en mode insertion
  • <!-- est le texte à taper
  • <ESC> définit l'utilisation de la touche echap
  • $ pour aller en fin de ligne
  • a pour passer en mode insertion et insérer du texte après le curseur
  • --> est le texte à saisir
  • et enfin, <ESC> pour repasser en mode commande

    Dès lors que vous aurez taper cette commande, en vous plaçant sur une ligne et en faisant v, vous placerez le contenu de cette ligne entre les marqueurs <!-- et --> signifiant un commentaire en langage HTML. Prenez garde à ne pas écraser des touches du mode commande déjà définies (comme par exemple i,a ou encore v). Vous pouvez utiliser des touches classiques, mais également les touches de fonction de F1 à F12 référencées par les chaînes <F1> à <F12>.

    Il existe également une autre méthode, peut-être plus simple, pour enregistrer les macros commandes. "Enregistrer" est d'ailleurs le terme tout à fait exact, étant donné que cette fonctionnalité réagit à la manière d'un dictaphone. Vous pouvez ainsi enregistrer jusqu'à 10 séquences de manipulations référencées par un numéro de 0 à 9. Reprenons notre exemple de ligne de fichier HTML à mettre en commentaire :

    <H1>Ceci est un gros titre qui ne sert à rien</H1>
    

    Placez-vous à un endroit quelconque de cette ligne puis, en mode commande, faites q0. Vous devriez voir apparaître en bas de l'écran une ligne vous indiquant "recording". Vim enregistre maintenant vos actions. Faites vos manipulations (début de ligne, insertion, <!--, fin de ligne, insertion, -->). Une fois chose faite, repassez en mode commande et faites q pour arrêter l'enregistrement. Déplacez-vous sur une autre ligne puis rappelez votre macro, toujours en mode commande, avec @0. Et voilà, Vim a reproduit toutes vos manipulations sur la ligne courante.

    Toujours dans le domaine de l'accélération de la saisie, vous pouvez demander à Vim de compléter à votre place la fin d'un mot. Il est possible de faire cela de plusieurs manières en fonction de l'endroit où Vim doit rechercher pour trouver la fin du mot.

    Pour expérimenter cette fonctionnalité, saisissez quelques phrases de texte quelconque. Enfin, placez-vous sur une nouvelle ligne, passez en mode insertion, tapez le début d'un mot qui est déjà présent dans le texte et faites <CTRL> p. Vim va alors vous faire plusieurs propositions pour compléter ce mot en fonction des mots déjà présents dans le texte. Vous pouvez maintenant naviguer dans les propositions de Vim avec les touches <CTRL> p et <CTRL> n. Si une proposition vous convient, continuez simplement la saisie de votre texte. Cette manipulation est également valable pour une ligne complète à l'aide des touches <CTRL> x puis <CTRL> l. Mais il est rare, dans du texte ou même dans un code source, que l'on répète deux fois les mêmes mots de manière identique.

    Mais les fonctionnalités liées au fait de compléter les mots ne s'arrêtent pas là. En effet, il pourrait être très intéressant de pouvoir accéder à un dictionnaire de mots couramment utilisés. C'est exactement ce que propose la commande :

    :set dict=
    

    suivi d'un nom de fichier comprenant une liste de mots. Ce fichier est une simple liste où les différents mots sont placés les uns sous les autres. Ceci fait, vous pourrez l'utiliser pour compléter vos mots à l'aide de la séquence <CTRL> x et <CTRL> k.

    Travailler avec plusieurs fichiers

    Vim, comme d'autres Vi, permet l'édition de plusieurs fichiers en une seule fois. Vous pouvez ainsi éditer une masse de fichiers en utilisant la commande :

    $ vim fichier1 fichier2 fichier3
    

    Vim se lancera alors et vous verrez apparaître le premier fichier dans le tampon. Vous pouvez passer au tampon suivant avec :n puis au tampon précédent avec :N. Il vous sera également possible d'accéder au tampon de votre choix par l'intermédiaire de son numéro avec :e# suivi du numéro en question.

    Mais, bien sûr, Vim ne s'arrête pas là. Il vous permet également de voir plusieurs tampons en même temps en divisant l'écran à votre gré. Ainsi, vous pouvez, par exemple, avoir deux vues du même tampon en utilisant <CTRL> w puis s. Ceci peut s'avérer très pratique lorsque vous désirez garder un oeil sur une partie du tampon tout en éditant une autre.

    Dans le cas d'un chargement de plusieurs fichiers, vous pouvez diviser l'écran en deux fenêtres par <CTRL> w puis n pour créer une fenêtre vide pour ensuite passer au tampon suivant par :n. Vous aurez ainsi vos deux fichiers à l'écran. Les séquences <CTRL> haut et <CTRL> bas vous permettent de navigeur entre les fenêtres. Vous pouvez ensuite, à loisir, réduire la hauteur de la fenêtre courante avec <CTRL> w - ou revenir à une taille égale pour toutes les fenêtres avec <CTRL> w =.

    Arrêtons nous là pour cette fois. Vous devez avoir, avec ces quelques fonctionnalités, de quoi vous faire les dents sur Vim et donc d'en apprécier la puissance. Le mois prochain, nous continuerons notre exploration de Vim avec des fonctionnalités toutes en couleur...

    Linux Magazine France n°26 - Mars 2001