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 :
- TOUTES les fonctionnalités de Vim sont expliquées dans le fichier
/usr/doc/vim/doc/vim_ref.txt.
Je ne saurais trop vous conseiller d'y jeter
un coup d'oeil si vous désirez avoir des infos complémentaires.
- Si vous désirez avoir une aide à propos d'une variable d'environnement ou
d'une commande, tapez : help var_env ou : help : cmd...
- En mode insert, la commande Ctrl-W correspond à un
backward-delete-word.
Vérifiez donc bien que vous êtes en mode Commande lors de vos
manipulations de fenêtres!
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 :
- 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.
- 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).
- 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.
- 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...
- 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).
- 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.
- 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.
- 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.
- Et à part ça...
Bon, pour les fenêtres, c'est à peu près tout.
Ah, quelques anti-embrouilles :
- avec Ctrl-W r, vous faites une permutation circulaire de toutes
vos fenêtres ( : elles descendent toutes d'un cran, la plus
basse passe en haut).
- avec : sun, vous faites apparaitre tous les buffers chargés en
mémoire à l'écran.
- si un nom de fichier intervient dans votre fenêtre active et que vous
voulez le charger, mettez le curseur dessus, Ctrl-W f, et hop!
(Essayez en tapant : /etc/passwd )
- pour agrandir la fenêtre courante au maximum, la commande est
Ctrl-W _
Pour cette partie, c'est tout pour cette fois... N'hésitez pas a consulter
le /usr/doc/vim/doc/vim_ref.txt ...