Osez Vi(m!)

par Olivier Rossel Olivier.Rossel@spi.enseeiht.fr


Cet article s'adresse à ceux qui ont une connaissance de base de Vi, et qui désirent en savoir un peu plus sur Vim, l'éditeur standard livré avec Linux (et accessoirement disponible sur la plupart des plate-formes Unix, Win3-95-NT, Amiga, Atari, etc).

Trois choses à savoir :

Nous allons parler dans cet article de la manipulation des fenêtres sous Vim, ceci uniquement en utilisant le shell. Si votre version de Vim est compilé avec les options GUI ( : tapez : version et vérifiez que l'option GUI est estampillée +), les redimensionnements de fenêtres peuvent se faire à l'aide de la souris.
On arrête là les salamalekh, et on commence :

  1. J'ai merdé et je voudrais revenir en arriere.
    Pas de problème, y a un undo "infini" en tapant sur u le nombre de fois que vous désirez. Vous pouvez faire un Redo avec Ctrl-R.
  2. Vous avez passé votre jeunesse sur l'éditeur Borland sous DOS, et vous aimeriez bien trouver un moyen simple pour sélectionner des blocs de texte. . .
    Pas de problême, c'est même plus simple que les Ctrl-K b et Ctrl-K k. Vous vous mettez au début du bloc, vous tapez v (pour Visual) et vous allez avec les flèches à la fin du bloc. Là, vous tapez sur y (pour copier) ou sur d (pour copier puis effacer dans la foulée). Pour coller ce que vous venez de copier, vous mettez le curseur au point d'insertion et vous tapez p (pour Paste).
  3. Vos copains vous disent que Vim c'est mal, que vous feriez mieux de réinstaller fenêtre95.
    Pas de problème! (Ah, ah, ah quels sacrés rigolos vos copains :-). D'abord, Vim gère les fenêtres (lui!). Pour vous en persuader, tapez Ctrl-W n (ou : new). Et hop, une nouvelle fenêtre apparait. Retapez Ctrl-W n : et de trois.
  4. Vos copains se plient en deux de rire en vous demandant comment sans souris, vous pouvez sélectionner quelle fenêtre est active ???
    Pas de problème! Toujours grâce a la formule magique Ctrl-W + "Flêche haut (ou bas)", vous pouvez vous ballader de fenêtre en fenêtre. Application fine et subtile : vous avez trois fenêtres visibles, et vous voulez aller directement de la 1 à la 3. . . . Facile : vous tapez Ctrl-W 2 FlecheBas et hop vous avez sauté deux fois et vous êtes dans la fenêtre 3...
  5. La fenêtre active est bien mais les autres fenêtres prennent trop de place...
    Pas de problème, vous pouvez évidemment fermer les fenêtres qui ne servent plus. Pour cela, vous allez dans la fenêtre génante et vous faites un simple : q (comme avec une seule fenêtre active).
    Un truc utile : avec Ctrl-W o, toutes les fenêtres se ferment sauf la fenêtre active, qui prend désormais toute la place à l'écran. Si Vim vous énerve et que 433 fenêtres se marchent dessus, vous pouvez quitter quel que soit le nombre de fenêtre avec : qa ( : quit all). Y a des variantes, style : wqa ( : write and quit all) ou : qa! ( : really quit all).
  6. Vous adorez Winbeuar et vous aimez jouer avec votre rongeur pour changer la taille des fenêtres en temps réel (sur un P166MMX et son bus à 83Mhz, sa Millenium au RAMDAC à 220Mhz).
    Bon, là on rentre dans les détails lourdeaux... Le mieux est de lire le fichier vim_win.txt. Recherchez Window resizing ( : tapez /Window resizing après avoir ouvert le fichier) trouverez votre bonheur. Si vous avez la flême, sachez que Ctrl-W 5+ augmente de 5 lignes la taille de la fenêtre courante.
  7. Vos copains sont partis, ravis de leur incursion dans le monde merveilleux de Vim. Et vous, vous ne savez plus quoi faire... Ne partez pas! Le meilleur, c'est maintenant :
    En effet, nous allons parler des buffers. C'est tres pompeux comme terme, on va donc franciser : appelons les buffers des «brouillons». Jusqu'à maintenant, les fenêtres servaient à afficher des brouillons à l'écran et une fois que le brouillon vous paraissaient satisfaisant, vous le remettiez au propre dans le fichier (Dos ou Unix...).
    On la refait : en ouvrant une fenêtre, vous demandez à Vim de recopier le contenu du fichier source dans un brouillon qu'il affiche à l'écran, que vous modifiez et qu'à la fin, Vim va recopier au propre dans le fichier. Mais à l'écran, on peux pas en afficher beaucoup. Or, il peut arriver que vous ayez à avoir 6 ou 7 brouillons immédiatement disponibles. Ne paniquez pas : en fait Vim garde en mémoire tous les brouillons qu'il a ouvert, meme s'ils ne sont plus à l'écran. Pour vous en persuader, exécutez : ls et vous aurez la joie de voir toute une liste de fichiers dont Vim a gardé les brouillons en mémoire. Familiarisez-vous avec cette histoire des brouillons indépendants des fenêtres à l'écran en chargeant plein de fichiers et en tapant : ls de temps en temps. Si vous devez absolument lire le buffer (oops, le brouillon) estampillé 3 par : ls, vous pouvez taper : sb[uffer]3. Une nouvelle fenêtre apparait, avec dedans (je vous l'donne Emile) le contenu du brouillon3 ( Dingue, ça!). Taper simplement : b[uffer]3 va écraser votre fenêtre active et afficher le nouveau brouillon.
  8. Vous avez ouvert par mégarde un magnifique fichier texte de 25Mo mais il se refuse à quitter la liste des brouillons en mémoire... Alors, que faire????
    J'ai oublié de vous dire quelque chose : le : ls fait une liste des brouillons qui ont ete crées durant la session, mais il peut arriver que le brouillon ne soit plus en mémoire... Les brouillons non chargés en mémoire sont précédés d'un '-'.
    Pour libérer la mémoire d'un brouillon trop gros, vous tapez «simplement» : bun[load!] X (avec X=n° du buffer). Il se décharge de la mémoire, quitte votre écran mais reste toujours dans cette satanée liste. Pour qu'il disparaisse définitivement de la liste : ls, tapez : bd[elete!] X. Hop, il n'y est plus... (pour de bon!). Attention, il peut être intéressant d'unloader un fichier mais le virer de la liste se révèle souvent une erreur.
  9. Et à part ça...
    Bon, pour les fenêtres, c'est à peu près tout. Ah, quelques anti-embrouilles :

    Pour cette partie, c'est tout pour cette fois... N'hésitez pas a consulter le /usr/doc/vim/doc/vim_ref.txt ...