Couper, copier et coller dans VIM
Couper, copier et coller dans VIM fait partie des fonctionnalités de bases que nous avons besoin pour manipuler le contenu de nos fichiers.
Dans cet article nous allons voir comment nous pouvons à l’aide des commandes de vim
effectuer simplement et rapidement ces différentes opérations. Si vous n’avez encore jamais mis les mains sur ce logiciel, je vous invite à consulter le précédent article qui vous explique comment démarrer simplement avec « Vim ».
Introduction
Vim est un éditeur de texte en ligne de commande ce qui implique qu’il est conçu pour être complètement pilotable au clavier. Il inclut bien un support de la souris qui est intéressant lorsque nous l’utilisons dans une fenêtre de terminal, mais nous allons ici nous concentrer sur les commandes clavier dont nous avons besoin.
Pour ce faire, je vous propose de démarrer avec un fichier page.html
dont voici le contenu:
<html>
<head>
<meta charset="utf-8">
<title>Page HTML basique</title>
</head>
<body>
<h1>Simple page HTML</h1>
<p>Ceci est une simple page HTML sans grand intéret.</p>
<h2>Liste à puce</h2>
<ul>
<li>Premier élément</li>
<li>Second élément</li>
<li>Troisième élément</li>
</ul>
<h2>Liste numérotée</h2>
<ol>
<li>Premier élément numéroté</li>
<li>Second élément numéroté</li>
<li>Troisième élément numéroté</li>
</ol>
</body>
</html>
Nous allons l’utiliser pour illustrer le fonctionnement des commandes classiques que sont les couper, copier et coller.
Le première chose à faire est bien entendu d’ouvrir le fichier avec Vim:
vim page.html
Vous noterez que Vim nous apporte déjà une aide précieuse, la coloration syntaxique. Cette fonction est souvent activée par défaut si Vim reconnait le type de fichier (généralement sur base de son extension).
La pratique…
Plutôt que de mémoriser des tableaux de commandes, nous allons directement expérimenter, étape par étape, les opérations essentielles que sont les couper, copier et coller dans Vim.
Supprimer une ligne…
Nous voudrions ici supprimer le dernier élément de la liste numérotée. La premier chose à faire est de positionner le curseur sur cette ligne (peu importe ou exactement), ce que nous pouvons faire en utilisant les flèches du clavier (ce n’est pas la seule méthode, mais n’oublions pas que nous expérimentons les bases sans avoir envie de tout mémoriser d’abord).
Ensuite il suffit de taper la commande dd
(coupe/efface la ligne sur laquelle se trouve le curseur).
Remarque: il faut absolument être en mode de commande. Pour en savoir plus à ce sujet, vous pouvez lire le précédent article qui explique comment démarrer simplement avec Vim.
Concrètement la ligne est copier en mémoire et supprimée du fichier, ce qui nous donne le résultat suivant:
Oups! Annulons la dernière commande…
Vim garde en mémoire les dernières opérations effectuées, ce qui permet à tout moment de revenir en arrière (undo). Il suffit d’utiliser la commande u
.
Nous retrouvons alors notre fichier tel qu’il était avant l’effacement de la ligne.
Effacer plusieurs lignes
Pour effacer/couper plusieurs lignes d’un coup, il suffit de positionner son curseur sur la première ligne et d’utiliser la commande dd
précédée du nombre de lignes. Par exemple 5dd
effacera 5 lignes à partir du curseur.
Essayons maintenant de supprimer toute la liste ordonnée d’un coup, pour celà nous devons positionner notre curseur sur la première ligne de la liste et supprimer les 5 lignes qui la composent avec la commande 5dd
.
Ce qui nous donne le résultat suivant…
Coller le contenu en mémoire
Nous l’avons dit précédemment, la commande dd
copie le texte en mémoire et le supprimer du fichier, nous pouvons donc bien sût coller ce texte ailleurs dans le fichier. Pour cela il suffit de positionner le curseur sur une ligne de référence et d’utiliser la commande p
(minuscule) pour coller après la ligne ou la commande P
(majuscule) pour coller avant la ligne.
Essayons maintenant de coller le texte que nous avons effacé entre le titre « Liste à puce » et la liste elle-même. Nous allons donc positionner le curseur sur la ligne du titre et utiliser la commande p
.
Le texte est alors collé à l’endroit souhaité.
Notez que le texte collé est toujours en mémoire et que vous pouvez répéter l’opération plusieurs fois sans problème.
Copier du texte
Jusqu’ici nous avons effacé ou coupé du texte. Nous pouvons appliquer la même logique pour simplement le copier (et donc le laisser en place dans le fichier). Pour cela nous pouvons utiliser la commande yy
(yank) pour copier la ligne courante ou même précéder la commande du nombre de ligne pour copier plusieurs lignes d’un coup.
Essayons donc de copier le petit paragraphe de texte et de le coller en dessous du dernier titre. Nous devons donc positionner le curseur sur la ligne du paragraphe, utiliser la commande y
y, ensuite positionner le curseur sur la ligne du dernier titre et utiliser la commande p
.
Nous obtenons alors le résultat suivant:
Copier plusieurs lignes
Même principe pour plusieurs lignes, si nous utilisons la commande 2yy
par exemple, nous copions les deux lignes depuis le curseur.
Essayons donc de copier le dernier titre ainsi que la ligne de paragraphe et collons le tout deux fois avant la balise de fin body.
Nous allons donc positionner notre curseur sur le dernier titre, utiliser la commande 2dd
, ensuite positionner notre curseur sur la balise de fermeture body et utiliser la commande 2P
(coller deux fois avant le curseur).
Nous obtenons alors le résultat suivant:
Récapitulatif
Récapitulons brièvement ce que nous avons utilisé:
Commande | Description |
---|---|
dd | Efface la ligne courante et stocke le texte en mémoire. |
xdd | Efface et stocke en mémoire x lignes. (où x est un nombre). |
yy | Copie la ligne courante en mémoire. |
xyy | Copie x ligne en mémoire. (où x est un nombre). |
u | Annule la dernière commande. |
p | Colle le contenu en mémoire après la ligne courante. |
xp | Colle x fois le contenu en mémoire après la ligne courante. |
P | Colle le contenu en mémoire avant la ligne courante. |
xP | Colle x fois le contenu en mémoire avant la ligne courante. |
Conclusion
Couper, copier et coller dans Vim sont des opérations extrêmement fréquentes et très simple à effectuer. Nous avons vu ici les concept de bases de ces opérations, mais il est possible d’encore aller plus loin. Par exemple il est possible d’intervertir deux ligne avec la commande ddp
. En effet, dd efface la ligne, ce qui positionne le curseur sur la suivante et p colle la ligne effacée juste après. Essayez, vous verrez, c’est tellement pratique!
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.