Retrouvez cet article dans : Linux Pratique 40
1. Pourquoi est-ce que j'utiliserais Vi ?
Si vous avez déjà eu l'occasion de voir quelqu'un en train d'apprendre à se servir de Vi, vous aurez sûrement remarqué que cela se traduit souvent par de nombreux jurons, et beaucoup d'énervement... Et pourtant, quelques moments de prise de tête sur le clavier pourront vous rendre bien des services.1.1. C'est quoi ce truc compliqué ?
Vi, que vous prononcerez [vi:aj] si vous voulez être dans le coup, est l'éditeur de base de tous les systèmes Unix. Il fonctionne en mode console, sur tous les types de terminaux, et permet de lire, écrire et corriger des fichiers. Vi est basé sur le rudimentaire Ex, éditeur ligne par ligne : c'est en fait le résultat de la commande1.2. Comment ça fonctionne ?
Pour compliquer un peu les choses, Vi est un éditeur modal, c'est-à -dire que les touches que vous enfoncez ne vont pas avoir le même effet, en fonction du mode dans lequel vous êtes. Il y en a trois :- le mode insertion : c'est avec ce mode que vous allez pouvoir insérer du texte dans votre fichier ;
- le mode commande : en mode commande, vous pouvez déplacer le curseur dans le texte, et taper un grand nombre de commandes qui vous permettront de multiples opérations, telles que la recherche de chaînes de caractères, leur déplacement, remplacement...
- le mode Ex ou ligne de commande : il s'agit des commandes de l'éditeur Ex, qui ne fonctionnent pas tout à fait comme celles de Vi.

1.3. A quoi ça va me servir ?
Alors pourquoi est-ce qu'on irait s'embêter avec cet éditeur si compliqué ? Eh bien, tout simplement parce qu'un jour ou l'autre vous en aurez forcément besoin, et qu'il vaut mieux être préparé à cette éventualité ! Est-ce qu'il vous est déjà arrivé de ne pas pouvoir démarrer X, et d'avoir à bidouiller dans ses fichiers de configuration ? Est-ce que vous avez déjà eu à accéder à un ordinateur à distance et à modifier les options de fonctionnement de son système ? Et puis, sans aller chercher des situations compliquées, Vi est aussi très pratique pour faire de la programmation, que ce soit pour un simple script shell, ou pour utiliser des langages complexes.2. Premiers pas avec Vi
Pour se servir de Vi, il est nécessaire de procéder par étapes, sinon on est vite surpassé par le nombre de commandes à mémoriser. On va d'abord voir ici quelques démarches basiques, qui suffisent à une utilisation régulière de Vi, mais qui ne permettent pas d'en découvrir toute l'efficacité.2.1. Éditer, sauvegarder un fichier et quitter Vi
Pour démarrer Vi, il suffit de taper son nom dans une console. Ouvrir un fichier n'est pas bien plus compliqué :$ vi mon_fichier.txtVotre fichier s'ouvre et remplit presque tout le terminal, sauf la dernière ligne qui affiche quelques informations le concernant : c'est sur cette dernière que vous taperez vos commandes, et que les messages d'erreur apparaîtront. Pour quitter Vi, il faudra taper la commande
File modified since last complete write; write or use ! to override.Pour forcer à quitter sans sauvegarder les modifications, on utilise donc
2.2. Se déplacer dans un fichier
Expliquer comment se déplacer dans un fichier peut paraître assez bête... Mais il faut penser que Vi a été construit alors que les touches de déplacement du clavier n'existaient pas ! Si on peut les utiliser, il est bon de connaître les commandes à utiliser, au cas où :hdéplace le curseur d'un caractère à gauche ;ldéplace le curseur d'un caractère à droite ;jdéplace le curseur d'une ligne au-dessous ;kdéplace le curseur d'une ligne au-dessus ;$déplace le curseur sur le dernier caractère de la ligne ;0(zéro) déplace le curseur sur le premier caractère de la ligne.
- [Ctrl] + [F] permet d'avancer le curseur d'un écran ;
- [Ctrl] + [B] permet de reculer le curseur d'un écran ;
Gamènera votre curseur sur la dernière ligne du fichier ;3Gamènera le curseur sur la troisième ligne du fichier ;3wou3bdéplaceront le curseur de trois mots vers la droite ou vers la gauche ;3|amènera le curseur à la troisième colonne du fichier.
2.3. Écrire et corriger
Venons-en maintenant aux choses sérieuses, et insérons du texte dans notre fichier. Vi possède toute une série de commandes qui permettent de passer du mode commande au mode insertion, de différentes manières :- après avoir tapé
a, vous insérerez votre caractère après le curseur ; iinsère le caractère avant le curseur ;Ainsère le texte après le dernier caractère de la ligne courante ;Iinsère le texte au début de la ligne courante ;oinsère le texte dans une nouvelle ligne au-dessous de la ligne courante ;Oinsère le texte dans une nouvelle ligne au-dessus de la ligne courante.
xefface le caractère qui se trouve sous le curseur ; combiné à un facteur de répétition, la même commande effacera le nombre de caractères précisé à partir du curseur (exemple :4x) ;dwefface les caractères depuis celui qui se trouve sous le curseur et jusqu'au début du mot suivant, espace compris ;5dweffacera les cinq mots suivant le caractère sous le curseur ;Defface toute la ligne à partir du caractère sous le curseur ;ddefface la ligne courante ;4ddeffacera quatre lignes à partir de la ligne courante ;rtremplacera le caractère sous le curseur par le caractère t ;rble remplacera par b, etc. ;Cremplace toute la ligne à partir du caractère sous le curseur par ce que vous taperez ensuite, l'insertion devant se terminer par [Esc] ;~changera la casse du caractère sous le curseur : une minuscule deviendra une majuscule, et vice versa.
3. Configurer Vi
A ce stade, et pour vous éviter pas mal de déconvenues, on va vous donner un truc... Il est possible de savoir à tout moment dans quel mode de fonctionnement de Vi on se trouve... Pour cela, passez en mode commande, ou vérifiez que vous y êtes en tapant [Esc], et tapez la commande ::set showmodePuis, lancez la commande avec [Enter]. À partir de ce moment, et pour toute la session en cours, vous verrez apparaître le mode dans lequel vous vous trouvez à droite de la ligne de commande :
3.1. Les options de configuration de Vi
La commandeshowmode/noshowmodeÂ: pour activer ou désactiver l'affichage du mode dans lequel on se trouve ;verbose/noverboseÂ: par défaut, lorsque Vi ne peut effectuer ce que vous lui demandez, le programme vous en avertit par un bip sonore ; l'optionverbosetransforme ce bip en message écrit, très utile pour débuter ;number/nonumberÂ: cette option permet de numéroter les lignes du fichier ;wrapscan/nowrapscanÂ: lorsque vous effectuez une recherche dans votre fichier, l'activation de cette option permettra de continuer la recherche au début du texte ; sinon la recherche est stoppée à la fin du texte ;showmatch/noshowmatchÂ: cette option est très utile pour la programmation : elle permet, à chaque fois que vous fermez une accolade ou une parenthèse, de mettre en surbrillance l'accolade ou la parenthèse d'ouverture correspondante, pendant quelques secondes.
3.2. Rendre les modifications de configuration permanentes
Les modifications d'options que vous effectuez durant une session de Vi ne sont pas sauvegardées. Lorsque vous quittez le programme, elles s'annulent, et la configuration par défaut est réinitialisée au lancement suivant. Pour rendre ces modifications permanentes, il est nécessaire de créer dans votre répertoire personnel un fichier$ cd $ vi .exrcIndiquez ensuite dans le fichier créé les options que vous souhaitez démarrer avec Vi en notant leur nom précédé de
set verbose set showmode set numberPuis sauvegardez et quittez avec
4. Fonctionnalités avancées
Maintenant, vous en savez déjà assez pour utiliser Vi de manière tout à fait profitable. Voici toutefois un petit aperçu de quelques fonctions avancées, pour vous démontrer que Vi n'a rien à envier à un éditeur graphique.4.1. Copier – coller
Vi dispose d'une mémoire tampon dont on peut ensuite copier le contenu là où on le souhaite dans le texte. La commandey$pour copier jusqu'à la fin de la ligne ;y8wpour copier huit mots à partir du mot courant ;- ... pour ensuite la coller où l'on veut avec p et P.
4.2. Rechercher – remplacer
Deux commandes permettent de rechercher une chaîne de caractères dans un fichier :/chaînepermet de chercher les occurrences de chaîne vers l'avant à partir de la position du curseur ;?chaînepermet de chercher les occurrences de chaîne vers l'arrière.
:s/chaîne_à _remplacer/chaîne_de_remplacement/Cette commande remplace la première occurrence des caractères spécifiés dans la ligne courante. Il est possible de préciser la ligne ou la suite de lignes où l'on veut effectuer le remplacement :
:1,3s/chaîne_à _remplacer/chaîne_de_remplacement/remplace la première occurrence de chaque ligne de la ligne 1 à la ligne 3. Notez que . désignera la ligne active, et
:s/chaîne_à _remplacer/chaîne_de_remplacement/gPour qu'une confirmation vous soit demandée avant chaque remplacement, vous ajouterez l'option
:s/chaîne_à _remplacer/chaîne_de_remplacement/cVous répondrez alors au message
Retrouvez cet article dans : Linux Pratique 40





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.