Manuel de l'Utilisateur Expérimenté Solaris

Les commandes de base vi

La présente section décrit plusieurs catégories de commandes vi permettant :

Déplacement dans un fichier

Dans les sections précédentes, vous avez appris à créer, sauvegarder, imprimer et quitter un fichier vi. Maintenant que vous avez créé un fichier, vous devez connaître les concepts qui vous permettront de vous déplacer dans ce fichier. Ouvrez votre fichier d'entraînement et essayez, l'une après l'autre, les commandes décrites dans cette section.

Déplacement du curseur

Lorsque vous démarrez vi, le curseur se situe dans le coin supérieur gauche de l'écran vi. En mode commande, plusieurs commandes clavier vous permettent de déplacer le curseur : certaines touches alphabétiques, les touches de déplacement (flèches), les touches Return, Back Space (ou Del) et la barre d'espacement.


Remarque :

la plupart des commandes vi font la distinction entre majuscules et minuscules. Ainsi, la "même" commande, selon qu'elle est entrée en caractères minuscules ou majuscules peut avoir des effets radicalement différents.


Déplacement à l'aide des flèches

Si votre clavier dispose de touches de déplacement (flèches), essayez-les. Vous devez pouvoir déplacer le curseur librement à l'écran à l'aide des flèches de déplacement vers le haut, vers le bas, vers la droite et vers la gauche. Mais ces flèches vous permettent uniquement de vous déplacer dans un texte ou des champs de saisie déjà existants.

Si vous utilisez vi à partir d'un terminal distant, les touches de déplacement du curseur peuvent ne pas fonctionner correctement. Cela dépend de l'émulateur de votre terminal. Si ces touches ne fonctionnent pas, vous pouvez utiliser à la place :

Déplacement mot par mot

Appuyez sur w ("word") pour déplacer le curseur mot par mot vers la droite.

Appuyez sur b ("back") pour déplacer le curseur mot par mot vers la gauche.

Appuyez sur W ou sur B pour déplacer le curseur du signe de ponctuation le plus proche au blanc suivant ou précédent.

Appuyez sur e ("end") pour positionner le curseur sur le dernier caractère du mot en cours.

Déplacement vers le début ou la fin d'une ligne

Appuyez sur ^ pour amener le curseur au début de la ligne en cours.

Appuyez sur $ pour amener le curseur à la fin de la ligne en cours.

Déplacement ligne par ligne

Appuyez sur la touche Return pour positionner le curseur au début de la ligne suivante.

Déplacement vers la gauche

Appuyez sur la touche Back Space pour déplacer le curseur d'un caractère vers la gauche.

Déplacement vers la droite

Appuyez sur la barre d'espacement pour déplacer le curseur d'un caractère vers la droite.

Déplacement vers le haut

Appuyez sur H ("high") pour amener le curseur en haut de l'écran.

Déplacement vers le centre

Appuyez sur M ("middle") pour amener le curseur au centre de l'écran.

Déplacement vers le bas

Appuyez sur L ("low") pour amener le curseur en bas de l'écran.

Pagination et défilement

Si vous essayez de vous déplacer vers le bas alors que le curseur se trouve en bas de l'écran ou vers le haut alors que ce dernier est en haut de l'écran, le texte défile vers le haut ou vers le bas. Dans un fichier de petite taille, cela permet d'afficher une plus grande partie de texte, mais il peut être fastidieux de se déplacer de cette manière dans un fichier plus long.

Vous avez pu constater que si vous positionnez le curseur au-delà du bas ou du haut de l'écran, le texte défilait vers le haut ou vers le bas. Si elle est intéressante pour les petits fichiers, cette méthode est fastidieuse pour les fichiers plus longs.

Vous pouvez feuilleter ou faire défiler un fichier, un écran ou un demi-écran vers l'arrière ou vers l'avant. (Vous pouvez entrer un peu plus de texte dans le fichier paint, de façon à obtenir un fichier plus long, pour pouvoir tester ces commandes.)

Il existe une différence fondamentale entre la pagination et le défilement. Le défilement consiste à déplacer le curseur ligne par ligne vers le haut ou vers le bas du texte, à la manière d'un rouleau de papier, alors que la pagination consiste à déplacer le curseur page-écran par page-écran vers le haut ou vers le bas du texte. Sur un système rapide, vous ne remarquerez peut-être pas la différence. Mais si vous travaillez sur un terminal distant ou dans toute autre condition susceptible de ralentir le fonctionnement de votre système, cette différence peut être très sensible.

Défilement d'une page-écran

Pour faire défiler une page-écran vers le bas, appuyez sur Ctrl-F ("Forward"). (Maintenez la touche Control enfoncée et appuyez sur la touche F.) Le curseur se positionne dans le coin supérieur gauche du nouvel écran.

Défilement d'un demi-écran vers l'avant

Pour faire défiler un demi-écran vers le bas, appuyez sur Ctrl-D ("Down").

Défilement d'un écran vers l'arrière

Pour faire défiler en arrière (vers le haut) une page-écran, appuyez sur Ctrl-B.

Défilement d'un demi-écran vers l'arrière

Pour faire défiler en arrière un demi-écran, appuyez sur Ctrl-U.

Insertion de texte

vi dispose de plusieurs commandes pour l'insertion de texte. Cette section décrit les plus utiles d'entre elles. Pour utiliser ces différentes commandes, qui font passer vi en mode insertion, vous devez vous trouver en mode commande. Pour vous en assurer, appuyez sur la touche Esc.

Ajout

La commande a (ajout) permet d'insérer du texte à la droite du curseur. Positionnez le curseur sur une ligne, tapez a, puis le texte à ajouter. Appuyez sur Esc lorsque vous avez terminé.

La commande A permet d'insérer du texte à la fin d'une ligne. Positionnez le curseur sur une ligne de texte, puis tapez A. Le curseur est renvoyé à la fin de la ligne, où vous pouvez insérer votre texte. Appuyez sur Esc lorsque vous avez terminé.

Insertion

Vous pouvez insérer du texte à la gauche du curseur en tapant i en mode commande.

La commande I permet d'insérer du texte en début de ligne. (Elle ramène le curseur en début de ligne, quelle que soit sa position sur la ligne.) Comme pour toutes les commandes décrites dans cette section, vous devez appuyer sur Esc pour repasser en mode commande après avoir entré le texte à insérer.

Ouverture de lignes

Les commandes suivantes permettent d'ouvrir de nouvelles lignes, que ce soit au-dessus ou en-dessous de la position courante du curseur.

Tapez o pour ouvrir une ligne au-dessous de la position courante du curseur, puis insérez, au besoin, quelques lignes de texte. Appuyez sur Esc lorsque vous avez terminé.

Tapez O pour ouvrir une ligne au-dessus de la position actuelle du curseur.

Remplacement de texte

Le remplacement de texte implique de substituer une partie de texte à une autre. L'utilisation des différentes méthodes de remplacement de texte de vi dépend des circonstances.

Remplacement d'un mot

Pour remplacer un mot, positionnez le curseur au début du mot à remplacer. Tapez cw, suivi du nouveau mot, puis appuyez sur Esc.

Pour remplacer une partie de mot seulement, positionnez le curseur sur le mot, à droite de la partie à conserver. Tapez cw, entrez la correction, puis appuyez sur Esc.

Remplacement d'une ligne

Pour remplacer une ligne, positionnez le curseur sur cette ligne et tapez cc. La ligne est remplacée par une ligne blanche sur laquelle vous pouvez saisir une nouvelle chaîne de texte, quelle que soit sa longueur. Appuyez ensuite sur Esc.

Remplacement d'une partie de ligne

Pour remplacer une partie de ligne seulement, positionnez le curseur à droite de la partie à conserver. Tapez C, entrez la correction, puis appuyez sur Esc. Cela modifie la partie comprise entre le curseur et la fin de la ligne.

Substitution de caractère(s)

Pour substituer un ou plusieurs caractères au caractère situé sous le curseur, tapez s, suivi du (ou des) nouveau(x) caractère(s). Appuyez sur Esc pour repasser en mode commande.

Remplacement d'un caractère

Cette commande permet de remplacer le caractère mis en évidence par le curseur par un autre caractère. Positionnez le curseur sur le caractère et tapez r, suivi d'un caractère de remplacement unique. Une fois le remplacement effectué, vi repasse automatiquement en mode commande (vous n'avez pas besoin d'appuyer sur Esc).

Inversion de caractères

Avec vi, il suffit d'appuyer sur deux touches pour corriger les caractères inversés. Par exemple, si vous vous apercevez que vous avez tapé "lse" à la place de "les", vous pouvez corriger cette erreur en positionnant le curseur sur la première lettre à déplacer (dans le cas présent, la lettre s), puis en tapant xp. Le s et le e seront intervertis et vi repassera automatiquement en mode commande.

Coupure et assemblage de lignes

Pour couper une ligne sans modifier le texte, amenez le curseur à l'endroit où vous souhaitez couper la ligne, tapez r (pour "remplacer"), et appuyez sur la touche Return. Si vous tapez r alors que le curseur est positionné sur un caractère et que vous appuyez sur Return, ce caractère sera remplacé par Return.

Pour réunir deux lignes, positionnez le curseur sur la ligne supérieure et tapez un J majuscule. (Vous n'avez pas besoin d'appuyer sur Esc après avoir tapé J.)

Annulation de modifications

Lorsque vous éditez un texte et que vous modifiez le contenu d'un fichier vi, vous pouvez être appelé à revenir sur vos modifications. Les commandes d'annulation de vi vous permettent d'annuler une opération et de poursuivre votre travail.

Annulation de la dernière commande

Si vous commettez une erreur sous vi ou si vous avez changé d'avis une fois l'opération terminée, vous pouvez annuler votre dernière commande en appuyant sur u immédiatement après l'exécution de cette dernière. (Vous n'avez pas besoin d'appuyer sur Esc après avoir tapé u.) Si vous appuyez sur u une seconde fois, la commande Défaire est annulée.

Annulation des modifications apportées à une ligne

Tapez U pour défaire toutes les modifications que vous avez apportées à une ligne. Cette commande fonctionne uniquement si vous n'avez pas déplacé le curseur en dehors de la ligne. (Vous n'avez pas besoin d'appuyer sur Esc après avoir tapé U.)

Suppression de texte

Ces commandes vi permettent de supprimer les caractères, mots ou lignes que vous avez indiqués. Etant donné que vi reste en mode commande, toute nouvelle insertion de texte devra être précédée d'une commande permettant de passer en mode insertion.

Suppression d'un caractère

Pour supprimer un caractère, positionnez le curseur sur le caractère à supprimer, puis tapez x.

La commande x supprime également l'espace qui était occupé par le caractère ; lorsqu'une lettre est supprimée au milieu d'un mot, les lettres restantes sont accolées. La commande x vous permet également de supprimer des espaces sur une ligne.

Pour supprimer un caractère précédant le (à gauche du) curseur, tapez X (en majuscule).

Suppression d'un mot ou d'une partie de mot

Pour supprimer un mot, positionnez le curseur au début du mot, puis tapez dw. Le mot et l'espace qu'il occupait sont supprimés.

Pour supprimer une partie de mot, positionnez le curseur sur le mot, à droite de la partie à conserver, puis tapez dw pour supprimer le reste du mot.

Suppression d'une ligne

Pour supprimer une ligne, positionnez le curseur sur la ligne, puis tapez dd. La ligne et l'espace qu'elle occupait sont supprimés.

Suppression d'une partie de ligne

Vous pouvez également supprimer une partie de ligne.

Pour supprimer tout le texte figurant à la droite du curseur, positionnez le curseur à droite de la partie à conserver, puis tapez D.

Pour supprimer tout le texte figurant à la gauche du curseur, positionnez le curseur à droite de la partie à supprimer, puis tapez d0 (d-zéro).

Suppression de la fin du fichier

Pour supprimer tout le texte figurant entre la ligne en cours et la fin du fichier, tapez dG. Cette commande supprime également la ligne sur laquelle figure le curseur.

Suppression du début du fichier

Pour supprimer tout le texte figurant entre le début du fichier et la ligne en cours, tapez d1G. Cette commande supprime également la ligne sur laquelle figure le curseur.

Copie et déplacement de texte : commandes Yank, Delete et Put

La plupart des traitements de texte permettent de "copier et coller" et de "couper et coller" des lignes de texte. L'éditeur vi comporte également ces fonctions. Les commandes vi correspondant à la fonction "copier-coller" s'appellent yank et put ; et celles correspondant à la fonction "couper-coller" s'appellent delete et put.

Pour copier ou déplacer de petits blocs de texte sous vi, vous devez utiliser la combinaison de commandes yank, delete et put.

Copie de lignes

Deux commandes sont nécessaires pour copier une ligne : yy ou Y ("yank") et p ("put below"), pour insérer la nouvelle ligne au-dessous de la ligne à copier, ou P ("put above") pour l'insérer au-dessus. Les commandes Y et yy ont la même fonction.

Pour copier une ligne, positionnez le curseur sur la ligne choisie et tapez yy. Ensuite, amenez le curseur sur la ligne située au-dessus de l'endroit où vous voulez insérer (copier) la ligne extraite, puis tapez p. La copie de la ligne extraite apparaît sur une nouvelle ligne située en-dessous du curseur.

Pour placer la ligne extraite sur une nouvelle ligne située en-dessus du curseur, tapez P.

La commande yy fonctionne également par comptage. Par exemple, si vous voulez extraire 11 lignes, il vous suffit de taper 11yy. Onze lignes sont extraites à partir de l'emplacement du curseur et vi vous le signale en affichant le message suivant en bas de l'écran : 11 lignes extraites.

Vous pouvez également lancer les commandes P ou p juste après l'une des comandes de suppression décrites plus haut. Le texte que vous avez supprimé sera inséré respectivement au-dessus et en-dessous du curseur.


Attention : Attention :

Graphicseules les commandes de déplacement du curseur sont autorisées entre la commande d'extraction ou de suppression et celle d'insertion. Si vous effectuez une autre suppression ou extraction avant d'avoir inséré le texte à son nouvel emplacement, les lignes extraites seront perdues.


Déplacement de lignes

Le déplacement de lignes fait également appel à deux commandes : dd ("delete"), puis p ou P.

Pour déplacer une ligne, positionnez le curseur sur la ligne choisie, puis tapez dd. Et si par exemple vous voulez déplacer 5 lignes, tapez 5dd.

Ensuite, amenez le curseur sur la ligne située en-dessus de l'endroit où vous voulez réinsérer la ligne supprimée, puis tapez p. Le texte est inséré sur une nouvelle ligne en-dessous du curseur.

Vous pouvez également insérer la ligne supprimée en-dessus du curseur en tapant P.

Utilisation de buffers nommés

Pour insérer un même ensemble de lignes à différents endroits dans un document, vous pouvez extraire (ou supprimer) ces lignes et les placer dans un buffer nommé. Pour attribuer un nom à un buffer, faites précéder la commande d'un guillemet (") et du nom du buffer. Par exemple, pour extraire quatre lignes et les placer dans le buffer a, tapez "a4yy. Vous pouvez utiliser plusieurs buffers. Ainsi, vous pouvez très bien supprimer un texte à un endroit et l'insérer à plusieurs endroits différents. Pour supprimer 12 lignes et les placer dans le buffer b,tapez "b12dd.

Pour insérer le texte, faites précéder la commande p ou P de "n, n étant le nom du buffer. Pour insérer les lignes sauvegardées dans le buffer b, tapez "bP.

Vous pouvez écraser le contenu des buffers nommés en insérant de nouvelles lignes de texte. Les buffers sont sauvegardés jusqu'à ce que vous quittiez vi.

Lorsque vous utilisez les buffers nommés, vous pouvez supprimer et extraire d'autres parties de texte sans que cela n'affecte les lignes déjà sauvegardées dans des buffers nommés (sauf si vous écrasez volontairement un buffer nommé).

Utilisation d'un comptage pour la répétition des commandes

De nombreuses commandes vi peuvent être précédées d'un facteur de répétition (appelé comptage). Un nombre précède la commande, indiquant combien de fois l'opération doit être répétée.

La plupart des commandes décrites dans les sections précédentes peuvent recevoir un comptage. Par exemple, 3dd active trois fois consécutives la commande de suppression de ligne, et supprime donc trois lignes,2dw supprime deux mots et 4x quatre caractères ou espaces. Vous pouvez également utiliser le comptage pour les commandes de déplacement du curseur telles que 3w et 2Ctrl-F. Vous vous familiariserez avec ces fonctions en apprenant à vous servir des commandes vi. A la section "Récapitulatif des principales commandes vi "" proposée à la fin du présent chapitre, les commandes pour lesquelles le comptage est possible portent la mention "[count]".

Si vous tapez un point (.), la dernière commande de modification de texte est répétée. Par exemple, si vous venez de supprimer une ligne à l'aide de la commande dd, vous pouvez positionner le curseur sur une autre ligne et supprimer cette dernière simplement en tapant un point.