Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

outils:vim:astuces:recording [2006/10/26 16:01] (Version actuelle)
kwisatz
Ligne 1: Ligne 1:
 +
 +Vous pouvez demander à vim d'​enregistrer les actions que vous êtes en train d'​effectuer pour les répéter simplement plus tard. Demonstration:​
 +
 +Je saisis une ligne ...
 +
 +<​code>​
 +deny ip addr 127.0.0.1
 +</​code>​
 +
 +pour arriver au résultat suivant :
 +
 +<​code>​
 +deny ip addr 127.0.0.1
 +deny ip addr 127.0.0.2
 +</​code>​
 +
 +j'​ai ​
 +* copié la ligne courante (Y)
 +* immédiatement collé (p)
 +* je me suis rendu en fin de ligne ($)
 +* j'ai inscrémenté la valeur numérique sous le curseur (<​c-a>​) ( :h CTRL-A pour plus de détails )
 +
 +Je note ce "​combo"​ comme suit : 
 +
 +<​code>​
 +Yp$<​c-a>​
 +</​code>​
 +
 +Si j'ai 10 lignes à créer, j'​aimerais poivoir dire à vim de répéter 9 fois la même commande. Je ne peux pas me servir de "​."​ qui ne fait que répeter une insertion.
 +
 +la solution est d'​enregistrer le combo au moment ou je m'en sers pour demander à vim de le répéter ( :h q ou :h recording ). 
 +
 +* Chaque enregistrement porte un nom d'un seul symbole compris entre 0 et 9, entre a et z ou entre A et Z.
 +* On commence l'​enregistrement grâce à qNom ( en mode normal ) 
 +* On arrête l'​enregistrement grâce à q ( en mode normal ) 
 +* On répête l'​enregistrement grâce à @Nom ( en mode normal ). On peut programmer n répétions succéssives par ,@Nom 
 +* On répête le dernier enregistrement appelé grâce à @@ ( en mode normal ) 
 +
 +Pour stocker une chaîne dans un buffer nommé, on peut aussi préfixer n'​importe quelle commande de copie dans le buffer anonyme (y, d, x, etc.) par un nom de buffer avec le caractère " (guillemets) :
 +La commande "add va stocker la ligne courante dans le buffer nommé '​a',​ puis l'​effacer (attention, le retour chariot est lui aussi stocké, et a comme effet de placer le curseur sur le premier token de la ligne suivante si le buffer est joué avec @).
 +
 +Pour répéter le dernier enregistrement,​ ou "​action",​ on peut aussi faire . (point).
 +
 +En pratique, cela nous donne :
 +
 +1. Saisie de la ligne
 +
 +<​code>​
 +deny ip addr 127.0.0.1
 +</​code>​
 +
 +( <esc> pour repasser en mode normal ) 
 +
 +2. Enregistrement ( que l'​appelle "​a"​ )
 +
 +<​code>​
 +qa
 +Yp$<​c-a>​
 +q
 +</​code>​
 +
 +( c'est sur 3 lignes pour plus de lisibilité,​ tout ca se tappe à la suite )
 +
 +3. répétition
 +
 +<​code>​
 +8@a
 +</​code>​
 +
 +4. résultat final
 +
 +<​code>​
 +deny ip addr 127.0.0.1
 +deny ip addr 127.0.0.2
 +deny ip addr 127.0.0.3
 +deny ip addr 127.0.0.4
 +deny ip addr 127.0.0.5
 +deny ip addr 127.0.0.6
 +deny ip addr 127.0.0.7
 +deny ip addr 127.0.0.8
 +deny ip addr 127.0.0.9
 +deny ip addr 127.0.0.10
 +</​code>​
 +
 +voilà qui allège le boulot du sysop.
  
 
outils/vim/astuces/recording.txt · Dernière modification: 2006/10/26 16:01 par kwisatz