Vim et Vi Tutoriel: Comment utiliser les macros

Dans Vim les macros permettent d’enregistrer et de jouer une séquence d’actions dans l’éditeur.

A l’aide d’exemples détaillés je vais vous expliquer comment faire pour enregistrer et lancer des macros dans les éditeurs Vi et Vim.

Les étapes pour faire une macro dans Vim sont les suivantes :

  1. Démarrez l’enregistrement en appuyant sur la touche q, suivi d’un caractère minuscule afin de nommer la macro
  2. Effectuez les actions qui seront enregistrées à l’intérieur de l’éditeur Vim
  3. Stoppez l’enregistrement en appuyant sur la touche q
  4. Jouez la macro enregistrée en appuyant sur la touche @ suivi du nom de la macro
  5. Pour répéter la macro plusieurs fois, appuyer sur : NN @ ‘nom macro’. NN étant un nombre

Exemple : Génération d’une séquence de nombre à l’intérieur d’un fichier en utilisant une Macro Vim

 

1. Créez et ouvrez un fichier test.txt pour générer la séquence:

2. Passer en mode insertion et tapez « 1 . » comme ci-dessous:
Appuyer sur ‘Echap’ ‘i’ puis ‘1 .’

3. Lancer l’enregistrement et appeler la macro ‘a’
Appuyez sur ‘Echap’ ‘q’ puis ‘a’
q lance l’enregistrement
a permet de nommée la macro a

Quand vous appuierez sur q a, l’indication « recording » (ou « enregistrement ») apparaîtra en bas de l’éditeur vi.

4. Copier la première ligne sur la seconde de manière à avoir deux lignes avec « 1 . » comme ci-dessous :
Appuyez sur: ‘Echap’ ‘yy’ puis ‘p’
yy va copier la ligne courante
p va coller la ligne qui vient d’être copiée

Vim va afficher la mention « recording » (ou « enregistrement ») au bas de l’écran comme ci-dessous.

Vim affiche message enregistrement en bas

Vim affiche le message « Enregistrement » en bas

5. Incrémentez le nombre
Pressez: Control + a
Incrémentez le nombre en plaçant le curseur sur la seconde ligne et en appuyant sur la combinaison de touches Ctrl+a

Vim affiche toujours « Enregistrement » en bas de l’écran.

 

6. Stopper l’enregistrement

Appuyez sur q
Pressez q pour stopper l’enregistrement. Vous allez avoir le message en bas de l’écran qui va disparaître.

7. Répéter l’action enregistrée 98 fois

Appuyez sur 98@a

Maintenant répéter cette action en appuyant sur 98 @ a
@a répète la macro « a » une fois
98@a répète la macro « a » 98 fois, ce qui va permettre d’avoir la séquence de nombre de 1 à 100 comme ci-dessous :

vim_macro98

Génération d’une séquence de nombre en utilisant une macro Vim

 

Agrandir ou rétrécir une fenêtre VI

VIM (vi) permet de travailler avec plusieurs fenêtres. Vous pouvez par exemple avoir l’écran coupé en deux de manière horizontale ou verticale. Il est parfois utile ou nécessaire de modifier leur taille. C’est ce que je vais vous expliquer ici. Vous allez voir, il n’y a rien de compliqué.

Pour agrandir la largeur d’une fenêtre utiliser la combinaison de touches suivantes :
CTRL+w >

Pour rétrécir la largeur d’une fenêtre :
CTRL+w <

Pour agrandir la hauteur d’une fenêtre :
CTRL+w +

Pour rétrécir la hauteur d’une fenêtre :
CTRL+w –

 

Vous l’aurez remarqué en pratiquement ces combinaisons de touches, la taille n’est modifiée que d’un seul caractère à chaque manipulation.

 

Pour rétrécir la hauteur de la fenêtre de 10 caractère vous pouvez faire :
CTRL+w 10-

Pour agrandir la largeur d’une fenêtre de 15 caractères :
CTRL+w 15>

 

Vous pouvez essayer la commande suivante pour modifier la largeur de la fenêtre de 30 caractères :

 

Il existe d’autre méthodes non évoquées ici.

copier (ou couper) coller plusieurs lignes vi

Pour copier / coller ou couper / coller plusieurs lignes (c’est à dire un bloc de texte) sous VIM (ou vi), ce n’est pas très compliqué. C’est tout de même une manipulation souvent méconnue par les débutants. Voici ci-dessous une explication détaillée qui vous permettra de comprendre comment copier (ou couper) / coller plusieurs lignes d’un texte sous l’éditeur de texte VIM (ou vi).

1/ Être en mode commande (et non insertion). Je précise cela car les débutants font souvent l’erreur d’être toujours en mode insertion. Pour passer en mode commande appuyer sur la touche échap.

2/ Déplacez vous sur la première ligne du bloc à copier (ou couper) via les touches j (déplace le curseur vers le bas) et k (déplace le curseur vers le haut). Placez le curseur sur le premier caractère de la première ligne à copier (ou couper) en déplaçant le curseur vers la gauche à l’aide de la touche h.

3/ Passer maintenant en mode visuel, ce n’est pas compliqué, appuyez simplement sur la touche v.

4/ Ensuite sélectionnez les lignes que vous souhaitez copier en déplaçant le curseur vers le bas en appuyant sur la touche j. Les lignes sélectionnées devraient, si tout se passe bien, être en surbrillances.

5/ C’est la que ça se complique légèrement, si vous souhaitez copier les lignes appuyez sur la touche y, sinon si vous souhaitez couper appuyez sur la touche d.

6/ Enfin on arrive bientôt à la fin de la manip, j’espère ne pas vous avoir perdu. Courage… Déplacez le curseur à l’endroit où vous souhaitez coller les lignes en appuyant sur la touche j (pour descendre vers le bas) et k (pour monter vers le haut).

7/ Coller le texte en appuyant sur la touche p.

C’est fini. Si vous avez réussi, vous pouvez être fier de vous. Bravo.

Ignorer la casse dans VIM

Lorsque vous faites des recherches dans VIM ou vi vous pouvez parfois être déçu du résultat. VI tient compte de la casse des caractères par défaut. C’est àdire qu’il tient compte des majuscules ou minuscules.

Si vous rechercher toto ou Toto, le résultat ne sera pas le même. Vous l’aurez compris, cela est très contraignant lors d’une recherche.

Pour demander à VI d’ignorer la casse des caractères, utiliser la commande suivante :

Pour que la modification soit permanente vous pouvez ajouter la ligne suivante à votre fichier .vimrc qui se trouve dans votre répertoire personnel (pour moi : /home/romain/.vimrc). J’ai ajouté la ligne suivante à mon fichier .vimrc

Grâce à ça VIM ignore la casse des caractères (Majuscules/Minuscules) en permanence et je n’ai plus de problème lorsque je recherche une chaîne de caractères dans VI.

Concatener des lignes sous VIM

Il est possible sous VIM (VI) de concaténer plusieurs lignes. C’est à dire de supprimmer les saut de lignes afin de n’avoir plus qu’une seule et même ligne.

Il existe plusieurs possibilités.

Vous pouvez utiliser la commande :join

Ou bien la combinaison de touches SHIFT + j.

 

Par exemple nous avons le texte suivant :

Placez vous sur la première ligne du texte (en mode commande) et appuyez successivement sur la combinaison de touches SHIFT + j. Vous obtiendrez le résultat suivant:

Les lignes qui se trouvaient au dessous du curseur, sont remontées et se sont concaténées à la ligne courante (c’est à dire celle sur laquelle se trouvait le curseur).

Commenter plusieurs lignes d’un seul coup avec VIM

Commenter plusieurs lignes :
Vous souhaitez commenter plusieurs lignes d’un seul coup sur votre éditeur préférer VIM (vi pour les intimes).

Voici la manip à suivre :

1/ Premièrement, passer en mode visuel (CTRL+V).

2/ Sélectionnez les lignes que vous souhaitez commenter en appuyant de manière successive sur la touche du bas : j ou « fleche du bas« .

3/ Appuyer sur la touche I (i majuscule) pour passer en mode insertion.

4/ Taper sur # ou // selon le type de commentaire que vous souhaitez insérer.

5/ Appuyer ensuite successivement (deux fois) sur la touche Esc, Esc.

Grâce à cette manipulation vous pouvez insérer en début de chaque ligne un caractère ou un mot.

Decommenter plusieurs lignes :

1/ Passer en mode visuel (CTRL+V).

2/ Sélectionner le bloc à decommenter (attention uniquement les caractères à supprimer).

3/ Appuyer sur d

Changer la casse d’un caractère avec vi

L’editeur de texte vi permet de changer la casse (Majucule, Minuscule) d’un caractère. Pour cela, passer en mode commande (touche echap) placez le curseur sur le caractère souhaité, puis utilisé la touche :

Un caractère minuscule passera en majuscule et vice versa. Après avoir modifié la casse du caractère, vi positionne automatiquement le curseur sur le caractère suivant de la ligne courante.

Enregistrement de fichier avec vi

Pour enregistrer le document ouvert sous vi, utiliser la commande :

Pour sauver le document en spécifiant le fichier :

Cette commande enregistre (au sein du répertoire courant depuis lequel vous avez lancé vi) le document en cours d’édition, dans le fichier nommé « MonFichier ».

Sauver en écrasant le fichier :

La commande suivante permet d’enregistrer les lignes # à # dans le fichier nommé « MonFichier »

Undo sous vi

Il possible de faire undo (d’annuler la dernière opération) sous l’éditeur de texte vi.

Pour cela passer en mode commande à l’aide de la touche echap du clavier.

Pour annuler (undo) la dernière action effectuée sur le document :

Si vous souhaiter annuler plus d’une opération, vous pouvez, si vous le souhaitez en appuyer successivement sur u.

Si jamais, vous avez annulez trop opération? Ne vous inquiétez pas, vous n’êtes pas obligez de recommencer votre labeur, vi a tout garder en mémoire. Vous pouvez retrouver ce que vous avez perdu grâce à ce qu’on appelle redo (refaire).

Pour répéter les actions effectuées sous vi, il faut utiliser la touche suivante :

Vous pouvez, si vous le souhaitez, faire redo de manière successive en appuyant plusieurs fois sur la touche . du clavier.

Comment couper coller du texte sous vi

Couper la ligne courante :

Couper le mot courant (sur lequel est positionner votre curseur) :

Colle le contenu du tampon (ce qui vient d’être couper) après la ligne courante :

Pour coller le tampon avant la ligne courante :