Apprendre vi, la technique de « la feuille de triche »
1.
Pour démarrer
Introduction
Ce tutoriel va vous montrer comment utiliser vi, un éditeur de texte puissant.
En utilisant une méthode spéciale accélérée de « feuille de triche »,
ce tutoriel est conçu pour faire de vous un utilisateur de vi compétent sans
vous y faire passer trop de temps. Dans ce tutoriel sur vi, vous apprendrez
comment vous déplacer, éditer du texte, utiliser le mode insertion, copier et
coller du texte, et utiliser des extensions importantes de vi comme le mode
visuel et l'édition multi-fenêtres.
Si vous ne savez pas vous servir de vi ou que vous n'y êtes pas à l'aise, vous
vous devez de lire ce tutoriel pour devenir efficace avec l'un des éditeurs de
texte les plus populaires et les plus puissants sous Linux/UNIX.
À propos de ce guide
Il y a une chose en particulier qui rend l'apprentissage de vi difficile :
vi a beaucoup de commandes. Pour se servir de vi efficacement, vous avez
besoin d'en mémoriser quelques-unes. Ça peut prendre pas mal de temps et un des
objectifs de ce tutoriel est de ne pas vous prendre beaucoup de temps. Donc,
pour commencer, le défi : comment vais-je vous aider à mémoriser une foule
de commandes en peu de temps ?
Pour relever ce défi, avec ce tutoriel, nous allons mettre au point
progressivement une « feuille de triche » pour vi. Cette feuille
contiendra toutes les commandes importantes. Quand vous aurez fini ce tutoriel,
vous pourrez vous y référer si vous avez oublié une commande en particulier.
Au fur et à mesure que vous mémoriserez des commandes, vous pourrez vous passer
progressivement de la feuille de triche. En utilisant cette technique, vous
apprendrez vi plus vite qu'il n'a jamais été possible !
Le processus d'apprentissage
Dans ce guide, je vais utiliser plusieurs techniques pour vous aider à
apprendre. D'abord, je vais vous montrer comment marche une commande en
particulier, comme vous vous y attendez. Ensuite, je vous demanderai d'essayer
d'utiliser cette commande dans vi (pour vous entraîner), puis de transcrire la
commande sur la feuille de triche (pour vous y référer plus tard). Si vous
voulez apprendre vi rapidement, il est important de suivre toutes ces étapes.
Essayer les commandes dans vi et les noter sur votre feuille de triche vous
aidera à les mémoriser.
Présentation de vim
Il existe plusieurs versions de vi et je vais vous montrer comment vous servir
d'une version de vi appelée vim. vim est très populaire et possède
quantité d'extensions qui le rendent encore meilleur. Chaque fois que
j'expliquerai une commande propre à vim, je le signalerai. Si vous avez besoin
d'installer vim, vous pouvez le récupérer sur www.vim.org. En plus du vi amélioré en ligne
de commande, vim inclut gvim, un éditeur graphique sympa qui peut être
configuré pour utiliser l'excellente librairie graphique GTK+. Voici une
capture d'écran de mon système :
Figure 1.1 : Capture d'écran de VIM |
 |
Si vous débutez avec vi, essayez d'installer gvim sur votre système. Utiliser
vi à partir de l'interface graphique peut rendre les choses plus faciles pour
les débutants.
2.
Premiers pas
Ouvrir un fichier
Avant d'éditer des fichiers avec vi, vous devez savoir comment vous déplacer
dans un fichier. vi a beaucoup de commandes de déplacement et nous allons voir
beaucoup d'entre elles. Pour cette partie du tutoriel, cherchez un fichier
texte sans importance et chargez-le dans vi en tapant :
Exemple de code 2.1 : Ouvrir un fichier avec vi |
$ vi monfichier.txt
|
Si vim est installé, tapez vim monfichier.txt. Si vous préferez utiliser
gvim, tapez gvim monfichier.txt. monfichier.txt est le nom du fichier
texte sur votre système.
Dans vi
Une fois vi lancé, vous devriez voir à l'écran une partie du fichier texte que
vous avez ouvert. Félicitations, vous êtes dans vi ! A la différence de
beaucoup d'éditeurs, quand vi démarre, il est dans un mode spécial appelé le
mode commande. Cela signifie que si vous appuyez sur l au
clavier, au lieu d'insérer un l dans le fichier à la position actuelle
du curseur, le curseur va se déplacer d'un caractère vers la doite. En mode
commande, les touches de votre clavier sont utilisées pour envoyer des
commandes à vi plutôt que d'insérer littéralement les caractères dans le texte.
Parmi les types de commandes les plus importantes, il y a les commandes de
déplacements ; regardons-en quelques-unes.
3.
Déplacements
Se déplacer dans vi, partie 1
En mode de commande, vous pouvez utiliser les touches
h,j,k et l pour déplacer le curseur respectivement
à gauche, en bas, en haut et à droite. Si vous utilisez une version récente de
vi, vous pouvez également utiliser les touches fléchées pour ces déplacements.
Les touches h,j,k et l sont pratiques, car une
fois que vous serez à l'aise avec elles, vous n'aurez plus besoin de déplacer les
doigts vers les touches fléchées. Essayez d'utiliser les touches
h,j,k et l (et les touches fléchées) pour vous
déplacer dans le fichier texte. Essayez de faire h jusqu'à ce que vous
soyez au début de la ligne. Remarquez que vi ne permet pas
« d'enchaîner » vers la ligne précédente en appuyant sur h
lorsque vous êtes sur le premier caractère. De même, vous ne pouvez pas passez à
la ligne suivante en appuyant sur l à la fin d'une ligne.
Se déplacer dans vi, partie 2
vi offre des raccourcis spéciaux pour sauter au début ou à la fin de la ligne
courante. Vous pouvez appuyer sur 0 (zéro) pour sauter au premier
caractère de la ligne, et sur $ pour sauter au dernier caractère de la
ligne. Essayez pour voir. Comme vi a beaucoup de commandes de déplacement
pratiques, ça en fait un super « afficheur » (comme les commandes
more ou less.) Utiliser vi comme afficheur vous aidera également à apprendre
les commandes de déplacement très rapidement.
Vous pouvez également utiliser <CTRL>F et <CTRL>B
pour vous déplacer page par page. Les versions modernes de vi (comme vim) vous
permettrons également d'utiliser les touches Page suivante et Page
précédente pour ces déplacements.
Déplacements par mots, partie 1
vi vous permet aussi de vous déplacer à droite ou à gauche d'un mot. Pour vous
déplacer au premier caractère du mot suivant, appuyez sur w. Pour
le dernier caractère du mot suivant, appuyer sur e. Pour vous déplacer
au premier caractère du mot précédent, faite b. Testez ces commandes.
Déplacements par mots, partie 2
Après avoir joué avec les commandes de déplacement par mots, vous avez pu
constater que vi considère les mots du genre foo-bar-oni comme 5 mots
distincts ! C'est parce que par défaut, vi délimite les mots par des
espaces ou des caractères de ponctuation. foo-bar-ni est donc
considéré comme cinq mots : foo, -, bar, -,
oni.
Parfois, c'est ce que vous voulez, et parfois pas. Heureusement, vi comprend
également le concept de « grand mot ». Par défaut, vi délimite les
grands mots par des espaces et des retours à la ligne uniquement. Ça
veut dire que vi considère foo-bar-oni à la fois comme cinq mots et à la
fois comme un grand mot.
Déplacements par mots, partie 3
Pour vous déplacer au grand mot suivant ou précédent, vous pouvez utiliser la
version capitalisée de la commande de déplacement par mot. Utilisez
W pour vous déplacer au premier caractère du grand mot suivant, E
pour le dernier caractère du grand mot suivant et B pour vous déplacer
au premier caractère du grand mot précédent. Testez cela, et comparez la
reconnaissance des mots et des grands mots par les commandes de déplacement
jusqu'à ce que vous ayez compris leurs différences.
Déplacements plus importants
Nous avons encore quelques commandes à parcourir avant qu'il soit temps de
commencer ensemble notre première feuille de triche. Vous pouvez utiliser les
caractères ( et ) pour vous déplacer au début de la phrase
précédente ou suivante. En plus, vous pouvez presser { ou } pour
sauter au début du paragraphe courant ou suivant. Testez-les.
4.
Quitter
On a vu les commandes de déplacement de base, mais il y a quelques autres
commandes que vous avez besoin de connaître. Taper :q quittera vi. Si
ça ne marche pas, c'est que vous avez probablement modifié accidentellement le
fichier, d'une manière ou d'une autre. Pour dire à vi de quitter en ignorant
les modifications, tapez :!q. Vous devriez revenir à l'invite de
commande.
Dans vi, toute commande commençant par un : est appelée commande
ex-mode. Ceci parce que vi a un éditeur non visuel intégré appelé
ex. On peut s'en servir de façon similaire à sed pour effectuer des
opérations d'édition par ligne. De plus, On peut aussi s'en servir pour
quitter, comme on vient de le voir. Dès que vous tapez Q en mode
commande, vous passerez en mode ex. Vous serez alors confronté à une invite
avec un « : », et appuyer sur entrée fera défiler tout l'écran vers
le haut. Pour revenir au bon vieux mode vi, tapez simplement vi et tapez
entrée.
5.
La feuille de triche
Début de la feuille de triche
Nous venons de voir pas mal de commandes et il est temps de les noter sur
notre feuille de triche. Pour ça, vous aurez besoin d'une feuille au format
lettre US ou A4 (nous y noterons beaucoup d'informations !) Voilà une
image de la mienne après y avoir noté toutes les commandes vues jusqu'ici.
Essayez de suivre le même modèle si possible pour qu'on arrive à tout y mettre.
Figure 5.1 : Première partie de la feuille de triche |
 |
Divers vi
Continuons notre survol des commandes. En mode commande, vous pouvez vous
déplacer vers une ligne en particulier en faisant G. Pour aller à la
première ligne d'un fichier, tapez 1G. Remarquez que le G est en
majuscule.
Si vous voulez vous déplacer à la prochaine occurrence d'un motif particulier
de texte, tapez /<regexp> puis entrée. Remplacez <regexp>
par l'expression rationnelle que vous cherchez. Si vous ne connaissez pas les
expressions rationnelles, ne vous inquiétez pas, taper /foo vous
amènera à la prochaine occurrence de foo. La seule chose importante
à noter à ce sujet, c'est de faire attention quand vous utilisez les caractères
^, ., $ ou \. Faites-les précéder d'un barre
oblique arrière (\), et ça marchera. Par exemple, /foo\.gif
recherchera la prochaine occurrence de foo.gif.
Pour poursuivre une recherche vers l'avant, faites n. Pour répéter la
recherche vers l'arrière, faite N. Comme toujours, testez ces commandes
dans votre propre éditeur vi. Vous pouvez aussi taper // pour répéter
la dernière recherche.
6.
Sauver et éditer
Sauver et sauver sous...
Nous avons vu comment vous pouvez utiliser la commande ex :q pour
quitter vi. Si vous voulez sauver vos modifications, tapez :w. Si vous
voulez sauvegarder vos modifications dans un autre fichier, tapez :w
nomfichier.txt pour sauvegarder sous nomfichier.txt. Si vous voulez
sauver et quitter, faites :x ou :wq.
Dans vim (et d'autres éditeurs vi évolués, comme elvis), vous pouvez avoir
plusieurs fichiers ouverts simultanément. Pour ouvrir un fichier dans une
nouvelle fenêtre, tapez :sp nomfichier.txt. nomfichier.txt
apparaîtra dans une nouvelle fenêtre partagée. Pour vous déplacer entre les
fenêtres, tapez <CTRL>w<CTRL>w (Contrôle-w deux fois).
Toute commande :q, :q!, :w et :x que vous taperez
ne s'appliquera qu'à la fenêtre active.
Edition simple
Maintenant, il est temps d'apprendre quelques simples commandes d'édition. Les
commandes que nous allons voir sont considérées simples parce qu'elles
se font en mode commande. Les commandes d'édition plus complexes vous font
passer automatiquement en mode édition, un mode qui vous permet de saisir du
texte directement à partir du clavier. Nous verrons le mode édition et les
commandes complexes un peu plus loin.
Pour le moment, essayez de vous placer sur des caractères et d'appuyer
plusieurs fois sur x. Vous verrez que x supprime le caractère
sous le curseur. Maintenant, déplacez-vous au milieu d'un paragraphe n'importe
où dans votre fichier texte et faites J (en majuscule). Vous verrez que
la commande J dit à vi de concaténer la ligne suivante à la fin de la
ligne actuelle. Maintenant, placez-vous sur un caractère et tapez r,
puis un nouveau caractère ; vous verrez que le caractère original a été
remplacé. Pour finir, placez-vous sur n'importe quelle ligne et tapez
dd. Vous verrez que dd supprime la ligne actuelle du texte.
Répéter et supprimer
Vous pouvez répéter n'importe quelle commande d'édition grace à la touche
« . » (le point). Si vous essayez, vous verrez que taper
dd... supprime 4 lignes, et que J... concatène 4 lignes. Comme
d'habitude, vi fournit d'autres raccourcis pratiques.
Pour supprimer du texte, vous pouvez également utiliser la commande d
combinée avec n'importe quelle commande de déplacement. Par exemple, dw
supprimera à partir de la position courante jusqu'au début du mot suivant ;
d) supprimera jusqu'à la fin de la phrase suivante, et d}
supprimera la fin du paragraphe. Expérimentez la commande d et les
autres commandes d'édition jusqu'à ce que vous soyez à l'aise avec.
Annuler !
Maintenant que vous avez testé la suppression, c'est le bon moment pour regarder
comment annuler les modifications. En appuyant sur u, la version
originale de vi permettait d'annuler la dernière édition uniquement. Par
contre, les versions modernes de vi comme vim vous permettront d'appuyer sur
u plusieurs fois pour continuer à annuler les modifications apportées au
fichier. Essayez de combiner quelques commandes d et u
ensemble.
Mise à jour de la feuille de triche
C'est le moment de mettre à jour notre feuille de triche. Après y avoir ajouté
les commandes vues jusqu'à présent, votre feuille de triche devrait ressembler à
ça :
Figure 6.1 : Feuille de triche avec les commandes d'édition |
 |
7.
Mode insertion
Le mode insertion
Jusqu'à présent, nous avons vu comment se déplacer dans vi, ouvrir et fermer
des fichiers et réaliser des opérations d'édition simples. Cependant, je ne
vous ai pas encore montré comment saisir du texte librement ! C'était
intentionnel, parce que le mode insertion est un peu compliqué au début.
Néanmoins, quand vous serez à l'aise avec le mode insertion, sa complexité (et
sa flexibilité) vous seront précieuses.
En mode insertion, vous pourrez entrer du texte directement, comme dans
beaucoup d'autres éditeurs de texte. Une fois que vous avez saisi vos
modifications, appuyez sur Échap. pour revenir en mode commande. Vous
pouvez passer en mode insertion en appuyant sur i ou a. Si vous
faites i, votre texte sera inséré avant le caractère courant, et
si vous faites a, votre texte sera ajouté après le caractère
courant. Souvenez-vous qu'après avoir saisi votre texte, il faut appuyer sur
<ESC> pour revenir en mode commande.
Bénéfices du mode insertion
Allons-y avec les commandes a et i . Appuyez sur a ou
i, tapez du texte, puis pressez Échap. pour revenir en mode commande.
Après avoir appuyé sur a ou i, pressez <ENTER> et
regardez ce qui se passe. Essayez d'utiliser les touches fléchées et la touche
<DEL> pour voir comment le mode insertion fonctionne. En utilisant
ces touches, vous pouvez largement éditer du texte sans avoir à entrer et
sortir constamment du mode édition.
Options d'insertion
Voici quelques autres façons pratiques de passer en mode insertion. Appuyer sur
A (en majuscule) pour ajouter du texte à la fin de la ligne courante,
quelle que soit votre position sur la ligne. De même, appuyez sur I pour
insérer du texte au début de la ligne actuelle. Appuyer sur o crée une
ligne vide sous la ligne du curseur, dans laquelle vous pouvez insérer du
texte, et O (en majuscule) insère une ligne au dessus de la ligne du
curseur. Pour remplacer complètement la ligne courante par une nouvelle ligne,
tapez cc. Pour tout remplacer à partir de la position courante du
curseur jusqu'à la fin de la ligne, faites c$. Pour tout remplacer du
début de la ligne à la position courante, tapez c0.
En plus de leur action spécifique, chacune de ces commande vous mettra en mode
insertion. Après avoir tapé votre texte, appuyez sur <ESC> pour
repasser en mode commande.
Changer du texte
Nous avons déjà utilisé plusieurs fois la commande c (changer), en
tapant cc, c0 et c$. cc est une forme spéciale de
la commande de changement, similaire à dd. Les commandes c0 et
c$ sont des exemples d'utilisation de la commande de changement combinée
avec une commande de déplacement. Dans cette forme, c fonctionne de la
même manière que la commande d, sauf qu'elle vous laisse en mode
insertion pour que vous puissiez insérer du texte à la place du texte effacé.
Essayez de combiner des commandes de déplacement avec la commande c et
testez-les sur votre fichier (suggestions : cW, ce,
c( .)
8.
Commandes composées
vi devient vraiment très puissant quand vous commencez à utiliser des
commandes composées du genre d{ et cw. En plus de ces
commandes, vous pouvez combiner un nombre avec n'importe quelle commande de
déplacement, comme 3w qui commande à vi de sauter 3 mots vers la
droite. Voici quelques autres exemples de commandes composées : 12b,
4j.
En plus des combinaisons du genre (nombre)(commande de déplacement), vi permet
de combiner d ou c avec un nombre ou une commande de
déplacement. Donc, d3w effacera les 3 mots suivants, d2j
supprimera la ligne courante et les deux lignes suivantes, etc. Testez
quelques commandes composées à base de c et d pour bien sentir à
quel point vi est précis et puissant. Une fois ces commandes parfaitement
maîtrisées, vous serez capables d'éditer des fichiers à une vitesse
impressionnante.
Mise à jour de la feuille de triche
Il est temps de remettre à jour la feuille de triche. Voici à quoi elle devrait
ressembler maintenant :
Figure 8.1 : Feuille de triche avec les commandes composées |
 |
Fonctionnalités pratiques
Jusqu'à présent, nous avons vu comment se déplacer, sauvegarder et quitter,
réaliser des opérations de suppression et d'insertion simples. Grâce à tout ce
que nous avons noté sur notre feuille de triche, vous devriez être capable
d'utiliser vi pour presque n'importe quelle tâche.
Cependant, vi dispose de bien d'autres commandes puissantes. Dans cette
section, je vais vous apprendre coment couper, copier et
coller, rechercher et remplacer, et utiliser les fonctions
d'indentation automatique. Ces commandes rendront vi plus amusant et
efficace.
Mode visuel
Le meilleur moyen de couper et coller est d'utiliser le mode visuel, un
mode spécial ajouté aux versions modernes de vi, comme vim ou elvis. Vous
pouvez voir le mode visuel comme un mode où le texte peut être mis en
surbrillance. Une fois le texte mis en surbrillance, il peut être coupé ou
copié, puis collé. Si vous utilisez gvim, vous pouvez mettre du texte en
surbrillance simplement en maintenant le bouton gauche de la souris enfoncé
puis en déplacant le curseur sur une région donnée du texte :
Figure 8.2 : VIM avec du texte mis en évidence |
 |
De plus, vous pouvez également passer en mode visuel en pressant la touche
v (ça peut être la seule solution si vous utilisez vi en mode console.)
Ensuite, en déplaçant le curseur à l'aide des commandes de déplacement (par
exemple avec les touches fléchées), vous pourrez mettre une zone de texte en
surbrillance. Une fois sélectionné, le texte peut être coupé ou copié.
Si vous voulez copier le texte, appuyez sur y (pour « yank »
en anglais). Si vous préférez couper le texte, faites d. Vous allez
revenir en mode commande. Déplacez-vous maintenant là où vous voulez insérer le
texte copié ou coupé, et pressez p pour l'insérer après le curseur ou
P pour l'insérer avant. Voilà, le couper/copier et coller est fini !
Testez plusieurs autres opérations de couper/copier et coller avant de passer
à la section suivante.
Remplacer du texte
Pour remplacer des motifs de texte, nous utiliserons le mode ex. Si vous
voulez remplacer la première occurrence d'un motif dans la ligne courante,
tapez :s/<regexp>/<remplacement>/ puis <ENTER>,
où <regexp> est le motif à remplacer et <remplacement> la chaîne de
caractères de remplacement. Pour remplacer toutes les occurrences d'un motif
dans la ligne courante, tapez :s/<regexp>/<remplacement>/g
puis entrée. Pour remplacer toutes les occurrences du motif dans votre fichier
(normalement, c'est ce que vous voulez), tapez
:%s/<regexp>/<remplacement>/g. Si vous voulez faire un
changement sur l'ensemble du fichier, mais que vi vous demande une confirmation
avant chaque changement, tapez
:%s/<regexp>/<remplacement>/gc (« c » pour
« confirmer ») puis appuyez sur <ENTER>.
Indentation
vi prend en charge l'indentation automatique, utile quand vous éditez du code
source. La plupart des versions modernes de vi (comme vim) activeront
automatiquement ce mode quand vous éditerez un fichier source (un fichier .c
par exemple). Quand l'indentation automatique est activée, vous pouvez utiliser
<CTRL>d (control-d) pour indenter d'un cran de moins vers la
gauche, et <CTRL>t (control-t) pour indenter d'un cran de plus
vers la droite. Si l'indentation automatique n'a pas été activée
automatiquement, vous pouvez l'activer manuellement en tapant la commande du
mode ex :set autoindent. Vous pouvez également demander à vi de
configurer la taille d'une tabulation selon votre préférence en utilisant la
commande :set tabstop ; La configuration :set tabstop=4 est
assez populaire.
Notre feuille de triche finale
Bon, nous arrivons à la fin du tutoriel sur vi !
Après avoir ajouté toutes les commandes d'éditions avancées à notre feuille de
triche, elle devrait ressembler à ceci :
Figure 8.3 : Feuille de triche terminée |
 |
Conservez votre feuille de triche sous la main et commencez à éditer des
fichiers et à taper vos courriels sous vi. Référez-vous à votre feuille de
triche au besoin. Vous verrez que, d'ici une semaine, vous aurez mémorisé
presque toutes les commandes et votre productivité sous vi se sera nettement
améliorée.
Si vous voulez définir vi comme votre éditeur par défaut, vous devez modifier
/etc/rc.conf comme suit :
Exemple de code 8.1 : Définir vi comme éditeur par défaut |
#EDITOR="/bin/nano"
EDITOR="/usr/bin/vim"
#EDITOR="/usr/bin/emacs"
|
Ressources
Voici quelques ressources que vous pourriez trouver utiles pour en apprendre
davantage sur vi :
À propos de ce document
La version originale de cet article a été publiée sur le site developerWorks
d'IBM et est la propriété de Westtech Information Services. Ce document est
une mise à jour de l'article original et contient diverses améliorations faites
par l'équipe de documentation de Gentoo.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|