Next Previous Contents

10. Les commandes de copier-couper-coller

Tout d'abord, avant de parler de vi ou vim, la souris permet de copier et de coller. Le tampon de la souris est celui du terminal et n'a rien à voir avec les commandes qui suivent.

La commande la plus connue est x qui coupe le caractère sous le curseur. On peut comme d'habitude préfixer par un nombre. 5x coupera une chaîne de cinq caractères.

Les commandes d (delete - couper), y (yank - copier), et c (change - couper et remplacer en mode frappe) attendent en paramètre un déplacement. La commande agit sur les caractères entre le curseur et la destination du déplacement. Ainsi, la commande dw signifie de couper le mot à la droite du curseur, c$ signifie couper et remplacer jusqu'à la fin de la ligne, et dG de couper jusqu'à la fin du fichier. Notez simplement qu'un déplacement vertical embarquera toute la ligne courante, et pas simplement à partir du curseur.

Les commandes D C Y correspondent à d$ c$ y$ ; sur un clavier français le raccourci n'est pas flagrant.

On peut toujours préfixer par des nombres : y5w ou 5yw signifient copier les cinq mots à partir du curseur.

Pour agir sur toute la ligne, ou sur plusieurs lignes, on dédouble la lettre, donc cc pour remplacer la ligne, y5y ou 5yy pour copier 5 lignes, d10d ou 10dd pour couper dix lignes.

Un peu plus avancé : en vim, on peut au lieu d'un déplacement indiquer un objet texte, sur deux caractères. Le premier caractère est i (indiquant d'inclure les délimiteurs de l'objet texte) ou a (pour ne pas les inclure). Le deuxième caractère indique le type d'objet sur lequel agir : w pour word/mot, s pour sentence/phrase, p pour paragraphe, " ' ` pour des chaînes délimitées par ces caractères, ) ] } > pour des chaînes délimitées par les couples de caractères () [] {} <>. Ainsi diw coupe le mot sous le curseur, 2dap coupe le paragraphe sous le curseur et le suivant, da> coupe le tag HTML ou XML contenant le curseur et ci> le coupe en laissant les <> et mettant le curseur en place pour remplacer le tag.

Toujours avec vim : pour rendre le couper/copier plus facile, vim apporte la commande v. Un appui sur v pose une marque de départ (pensez "enfoncer la touche de la souris"). Vous pouvez ensuite déplacer le curseur comme vous voulez ("bouger la souris"). N'importe quel déplacement est possible, même une recherche. Le texte entre le curseur et la marque de départ sera mis en surbrillance, et une commande de manipulation de texte agira sur ce texte-là. Ça peut être une commande comme d, c, ou y, mais aussi une commande ex, dans quel cas l'appui sur : affichera :'<,'> ce qui correspond à la spécification de lignes avec les marques de début et fin posées par v (voir prochaine section). On peut enchaîner par exemple par ! ou s (voir les commandes ex). On peut aussi appuyer sur ! directement, mais pas sur s car c'est interprété comme la commande s (supprimer et passer en mode frappe).

La commande V fait pareil que v mais sur des lignes entières.

Après avoir coupé ou copié, on peut coller. C'est fait avec les commandes p (put after) et P (put before). Selon que le tampon utilisé (voir section sur les tampons) contient des lignes entières ou pas, ces commandes colleront avant ou après la ligne du curseur ou bien avant ou après le curseur. Comme d'habitude, on peut préfixer par un nombre. Pour faire suivre la ligne actuelle de cinq répétitions, on a donc le choix entre dd6P ou yy5p

Petits exemples rapides : xp pour inverser deux caractères, ddp pour inverser deux lignes.


Next Previous Contents