Les macros sous VI :

vendredi 3 juillet 2009
par  Jerome ROBERT
popularité : 3%

http://tux.u-strasbg.fr/

Les macros sous VI:

 

xp sert à effacer le caractère sous le curseur, et à le réécrire après. En d'autres termes, il intervertit la position du caractère sous le curseur et du caractère suivant.

ddp fait la même chose que xp , mais avec des lignes.

yyp copie une ligne.

uu annule, puis restaure la dernière modification. Ça positionne le curseur à l'endroit de la dernière modification sans rien changer. On peut aussi s'en servir pour visualiser les changements que l'on a fait sur une ligne : modifiez la ligne, appuyez sur u pour revenir à l'état antérieur, et ré-appuyez sur u pour passer d'une version à l'autre.

:g/.*/m0 inverse l'ordre des lignes dans le fichier. m0 est la commande ex pour déplacer la ligne sélectionnée à la ligne 0.

:g/^$/d ou :v/./d suppriment toutes les lignes vides.

:g/^[ <C-V><TAB>]*$/d supprime toutes les lignes qui ne contiennent que des espaces et des tabulations.

:v/./.,/./-1join remplace une suite de lignes vides par une seule ligne vide.

 

Macros tordues.

:map * kxjphxkP permute le caractère sous le curseur et le caractère placé à la ligne au-dessus.

:map g $80<C-V><C-V>|F r<C-V><entrée> permet de passer automatiquement à la ligne au bout de 80 caractères.

:map v ywmno<C-V><ESC>P:s/./\~/g<C-V><enter>0"nDdd`n@n permet de mettre les mots en minuscule en majuscule, et vice-versa.

:map *' i`<C-V><ESC>ea'<C-V><ESC> permet de mettre des ` et des ' autour du mot, en se plaçant sur la première lettre du mot en question. On peut décliner la macro pour d'autres types de guillemets, français : :map * i«<C-V><ESC>ea »<C-V><ESC>

:map g may0O<C-V><ESC>P`ao<C-V><ESC>P:s/./ /g<C-V><entrée>0i> <C-V><ESC>$mb`ay$`bP'add est une macro qui permet de couper la ligne à l'endroit du curseur, et de placer un > au début de la nouvelle ligne. C'est utile, par exemple, pour reformater les articles Usenet auquel on répond.

:map g i$<C-V><ESC>r , suivi d'un caractère, permet de l'insérer et de retourner de suite au mode commande.

:map K 072lBhr<C-V><entrée> permet formater un paragraphe sans recourir au programme fmt. Pour l'utiliser, mettez tout le paragraphe sur une seule ligne, avec J, puis appuyez sur K jusqu'à ce qu'il soit entièrement formaté.

Pour associer les touches <C-x> pour couper, <C-p> pour copier : :map <C-V><C-x> "zd`m :map <C-V><C-p> "zy`m . Marquez le début de la zone avec mm , déplacez le curseur jusqu'à la fin de la sélection, et utilisez la touche correspondante. Pour coller la sélection avec <C-o>, faites :map <C-V><C-o> "zP`m .

 

Pour avoir un indicateur de position (un peu long, un peu lent, un peu lourd) :

  • :map <C-V><flèche_vers_le_haut> k<C-V><C-g>

  • :map <C-V><flèche_vers_le_bas> j<C-V><C-g>

  • :map k k<C-V><C-g>

  • :map j j<C-V><C-g>

  • :map <C-V><C-f> <C-V><C-f><C-V><C-g>

  • :map <C-V><C-b> <C-V><C-b><C-V><C-g>

  • :map H H<C-V><C-g>

  • :map M M<C-V><C-g>

  • :map L L<C-V><C-g>

  • :map G G<C-V><C-g>

  • :map <C-V><C-u> <C-V><C-u><C-V><C-g>

  • :map <C-V><C-d> <C-V><C-d><C-V><C-g> .

map K :!chmod 666 %<C-V><entrée>:w!<C-V><entrée><C-V><entrée> :!chmod 644 %<C-V><entrée> permet de sauvegarder un fichier que l'on a ouvert en lecture seule. Attention : le fichier se retrouve avec les permission en lecture et en écriture pour le propriétaire, et en lecture pour tous les autres.

Ce ne sont pas forcément ses permissions initiales.

:map = 080i <C-V><ESC>$78hd0^D:s/ / /g<ctrl-v><enter>$p centre une ligne.

:map! <C-V><C-V><C-V><C-i> a<C-V><ESC>xa<espace><espace> <espace><espace><espace> permet redéfinir la touche de tabulation, pour qu'elle tape 5 espaces au lieu d'une tabulation.

:map v Gdd''Pj permet d'intervertir la ligne du curseur et la dernière ligne du fichier. En se plaçant sur la première ligne, on peut ainsi inverser l'ordre d'un fichier.

:map v y$o<C-V><ESC>pI:r!<C-V><ESC>"add@a exécute dans un shell la chaîne qui va de du curseur jusqu'à la fin de la ligne, et affiche le résultat.

 

Pour effacer, en mode saisie, un texte qui a été tapé lors d'une saisie précédente, il faut faire : :map! <C-V><C-?> <C-V><ESC>xa :map! <C-V><C-h> <ctrl+V><ESC>xa

:map v 1G!Glp<C-V><entrée>u imprime le document. Remplacez éventuellement lp par lpr ou par le nom de votre logiciel d'impression.

 

Pour utiliser le caractère # pour afficher/enlever les numéros de ligne :

  • :map \o# o:se nu<C-V><entrée>:se nonu<C-V><ESC>-: map \o# "wp<C-V><entrée> (sur la même ligne, sans interruption).

  • :map \d# "w2dd

  • :map \x# "xdd@x"xpk

  • :map # ma3L\o#\x#\d#`a:<C-V><entrée>

:map #r O<C-V><ESC>i....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8<C-V><ESC> permet d'insérer une réglette au-dessus de la ligne du curseur.

 

Cette macro permet de faire une note en fin de document. Elle place un nombre entre crochet [1] [2]... à l'endroit du curseur et à la fin du texte, où il n'y a plus qu'à taper la note elle-même. En faisant `a on revient à son point de départ dans le texte. Accrochez-vous, c'est intimidant :

:map K ma1GO[0]<C-V><ESC>G$?[[[0-9]*]]<C-V><entrée>lyt]]`aa<C-V><entrée><C-V

 

Configurer son fichier .exrc


 

Toutes les commandes : peuvent être utilisées dans le fichier de configuration .exrc. Il est chargé automatiquement au démarrage de vi. On peut y définir des abréviations (ab) des macros (map) et faire lire d'autres fichiers (so).

Les lignes vides ne sont pas autorisées, et les lignes commençant par " sont des commentaires.

 

 

Example de .exrc

Le fichier ci-dessous est un vrai fichier, le mien. Il ne définit pas suffisamment d'options pour donner un aperçu de tout ce qui est possible, mais il pose les bases, et il est assez clair.

Nota Bene : le : en début de commande n'est pas nécessaire, il est implicite.

" Fais les recherches sans tenir compte des majuscules/minuscules.

set ic

# Retourne à la ligne à 9 caractère de la marge droite.

set wm=9

# indique la parenthèse ouvrante quand on tape la parenthèse fermante.

set sm

#Utilise zsh comme shell.

set sh=/bin/zsh

# Deux abréviations de mes signatures.

  • ab zidlle E. Larry Lidz - ellidz@midway.uchicago.edu

  • ab --l -Larry

# Associe la touche V à la commande ispell -x . ( -x pour ne pas faire de sauvegardes)

map V :w<C+V><entrée>:!ispell -x%<C+V><entrée>:e!<C+V><entrée><C+V><entrée>

# Centre la ligne avec =

map = 80I <C-V><ESC>$78hd0:s/ //g<C-V><entrée>$p

# v reformate le paragraphe où se trouve le curseur.

map v {0!}fmt<C-V><entrée>

 



Commentaires  forum ferme

Statistiques

Dernière mise à jour

mercredi 5 juillet 2017

Publication

264 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

248 aujourd’hui
238 hier
537311 depuis le début
10 visiteurs actuellement connectés